]> icculus.org git repositories - divverent/nexuiz.git/blob - misc/makebuild.sh
send current state of build script to svn. Build will soon move from hector to hagger...
[divverent/nexuiz.git] / misc / makebuild.sh
1 #!/bin/sh
2
3 set -e
4
5 base=`pwd`
6
7
8 case "$pw" in
9         '')
10                 zipflags=
11                 ;;
12         *)
13                 zipflags="-P $pw"
14                 ;;
15 esac
16
17 : ${date:=`date +%Y%m%d`}
18 : ${versiontag:=}
19 echo "date stamp: $date"
20
21 case "$version" in
22         '')
23                 version=2-svntest-$date
24                 versiontag=test
25                 defaultcfg=
26                 ext=
27                 ;;
28         *)
29                 version=$version
30                 versiontag=$versiontag
31                 defaultcfg=
32                 ext=_$version
33                 ;;
34 esac
35
36 basepk3=$base/data20070531.pk3
37 nexdir=$base/nexuiz
38 nexprodir=$base/nexuizpro
39 dpdir=$base/darkplaces
40 tmpdir=/tmp/NEX
41 zipdir=/home/polzer/UT/distfiles/nex/
42 buildfiles=$base/buildfiles
43 mingwdlls=$buildfiles/w32
44 osxapps=$buildfiles/osx
45 copystrip=$buildfiles/copystrip
46 fteqcc="fteqcc.bin -O2"
47 mingw=/home/polzer/mingw32
48 ia32=/chroot/fc6-i386
49 osxhost=macmini
50 osxtemp=/Users/rpolzer/Darkplaces.build
51 osxsave=/tmp/Nexuiz.osx
52
53 i=
54 while [ -f "$zipdir/nexuiz$date$i$ext.zip" ]; do
55         if [ -z "$i" ]; then
56                 i=a
57         else
58                 i=`echo "$i" | tr a-y b-z`
59         fi
60 done
61 ext=$i$ext
62
63 echo "Using build name nexuiz$date$ext"
64 sleep 3
65
66 if [ -n "$1" ]; then
67         osxhost="$1"
68 fi
69
70 conflicts=`find "$dpdir" "$nexdir" -name '*.orig' -o -name '*.rej' -o -name '*.mine' -o -name '.#*' -o -name '.*~'`
71 if [ -n "$conflicts" ]; then
72         echo "CONFLICTS OR UNNEEDED FILES HAVE BEEN FOUND!"
73         echo "NOT PROCEEDING"
74         echo
75         echo "$conflicts"
76         exit 1
77 fi
78
79 set -x
80
81 buildosx()
82 {
83         rsync --exclude "*.o" --exclude "*.d" --exclude "nexuiz-*" --delete-excluded --delete -zvaSHP . $copystrip "$osxhost:$osxtemp"
84         ssh "$osxhost" ". ~/.profile && cd $osxtemp && PATH=$osxtemp/copystrip:\$PATH make CC=\"gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk\" clean $*"
85         rmdir "$osxsave" || true
86         if [ -d "$osxsave" ]; then
87                 cp "$osxsave"/* .
88         fi
89         rsync --exclude "*.o" --exclude "*.d" --delete-excluded --delete -zvaSHP "$osxhost:$osxtemp/." .
90         mkdir -p "$osxsave"
91         cp nexuiz-* "$osxsave"/
92 }
93
94 build64()
95 {
96         PATH=$copystrip:$PATH make CC="/opt/gcc-4.1.1/bin/gcc -g" "$@"
97 }
98
99 build32()
100 {
101         PATH=$copystrip:$PATH make CC="/opt/gcc-4.1.1/bin/gcc -g -I$ia32/usr/include -I$ia32/usr/X11R6/include -L$ia32/usr/lib -L$ia32/usr/X11R6/lib -m32" DP_MACHINE=i686 "$@"
102 }
103
104 buildwin()
105 {
106         PATH=$copystrip:$mingw/bin:$PATH make CC="gcc -g" DP_MAKE_TARGET=mingw "$@"
107 }
108
109 rm -rf "$tmpdir"
110 mkdir -p "$tmpdir"
111 cd "$dpdir"
112 quilt pop -a || true
113 quilt push -a
114
115 cp -r "$osxapps"/*.app "$tmpdir"
116 mkdir "$tmpdir/debuginfo"
117 rm -f *.exe nexuiz-* *-withdebug
118
119 make clean
120 buildosx sdl-nexuiz cl-nexuiz sv-nexuiz
121 cp nexuiz-agl "$tmpdir/Nexuiz.app/Contents/MacOS/nexuiz-osx-ppc-agl-bin"
122 cp nexuiz-dedicated "$tmpdir/nexuiz-osx-ppc-dedicated"
123 cp nexuiz-sdl "$tmpdir/Nexuiz-SDL.app/Contents/MacOS/nexuiz-osx-ppc-sdl-bin"
124 cp nexuiz-agl-withdebug "$tmpdir/debuginfo/nexuiz-osx-ppc-agl-bin"
125 cp nexuiz-dedicated-withdebug "$tmpdir/debuginfo/nexuiz-osx-ppc-dedicated-bin"
126 cp nexuiz-sdl-withdebug "$tmpdir/debuginfo/nexuiz-osx-ppc-sdl-bin"
127
128 make clean
129 buildwin nexuiz
130 for x in -dedicated -sdl ''; do
131         cp nexuiz$x.exe "$tmpdir/nexuiz$x.exe"
132         cp nexuiz$x.exe-withdebug "$tmpdir/debuginfo/nexuiz$x.exe"
133 done
134
135 make clean
136 build32 nexuiz
137 for x in dedicated sdl glx; do
138         cp nexuiz-$x "$tmpdir/nexuiz-linux-686-$x"
139         cp nexuiz-$x-withdebug "$tmpdir/debuginfo/nexuiz-linux-686-$x"
140 done
141
142 make clean
143 build64 nexuiz
144 for x in dedicated sdl glx; do
145         cp nexuiz-$x "$tmpdir/nexuiz-linux-x86_64-$x"
146         cp nexuiz-$x-withdebug "$tmpdir/debuginfo/nexuiz-linux-x86_64-$x"
147 done
148
149 cp "$nexdir/"nexuiz-*.{sh,bat} "$tmpdir/"
150 cp "$nexdir/gpl.txt" "$tmpdir/"
151
152 make clean
153 rm -f *.exe nexuiz-* *-withdebug '.#'*
154
155 cd "$nexdir/data"
156 svn export . "$tmpdir/data"
157
158 cd "$nexprodir"
159 svn export . "$tmpdir/pro"
160
161 cd "$nexdir/Docs"
162 svn export . "$tmpdir/Docs"
163
164 cd "$tmpdir/data"
165 mkdir -p "$tmpdir/sources"
166 #zip -9r ../sources/gamesource$date.zip qcsrc
167 7za a -mx=9 -tzip ../sources/gamesource$date.zip qcsrc
168
169 cd "$dpdir"
170 svn export . "$tmpdir/darkplaces"
171 svn info > "$tmpdir/darkplaces/nexuiz-base-revision.txt"
172 svn diff > "$tmpdir/darkplaces/nexuiz-engine-changes.diff"
173 svn log > "$tmpdir/darkplaces/ChangeLog"
174
175 cd "$tmpdir"
176 7za a -mx=9 -tzip "$tmpdir/sources/enginesource$date.zip" "darkplaces"
177 rm -rf darkplaces
178
179 cd "$tmpdir/data/qcsrc/menu"
180 $fteqcc
181
182 cd "$tmpdir/data/qcsrc/server"
183 $fteqcc
184
185 rm -rf "$tmpdir/data/qcsrc"
186
187 cd "$tmpdir/Docs"
188 perl -pi -e '/^#---SET nexversion=([0-9.]*)$/ and $_ = "#---SET nexversion='$version'\n"' FAQ.aft
189 perl -pi -e '/^\s*Version ([0-9.]*)<\/div>$/ and $_ = "Version '$version'</div>\n"' Readme.htm
190 cp "$dpdir/darkplaces.txt" .
191 aft FAQ.aft
192 aft FAQ.aft
193 rm FAQ.aft-TOC
194
195 cd "$tmpdir/data"
196 mv common-spog.pk3 ..
197 perl -pi -e '/^set g_nexuizversion "?([0-9.]*)[^"]*"?/ and $_ = "set g_nexuizversion '$version'\n"' default.cfg
198 if [ -n "$versiontag" ]; then
199         perl -pi -e '/^set g_nexuizversion/ and $_ = "showbrand 3\n$_"' default.cfg
200         cp "$buildfiles/brand/$versiontag.tga" gfx/brand.tga
201 fi
202 echo >> default.cfg
203 echo "$defaultcfg" >> default.cfg
204 7za a -mx=7 -tzip ../data.pk3 .
205
206 cd "$tmpdir/pro"
207 perl -pi -e '/^set g_nexuizversion "?([0-9.]*)[^"]*"?/ and $_ = "set g_nexuizversion '$version-pro'\n"' default.cfg
208 if [ -n "$versiontag" ]; then
209         perl -pi -e '/^set g_nexuizversion/ and $_ = "showbrand 3\n$_"' default.cfg
210 fi
211 echo >> default.cfg
212 echo "$defaultcfg" >> default.cfg
213 7za a -mx=7 -tzip ../pro.pk3 .
214
215 cd "$tmpdir"
216 rm -rf data
217 mkdir data
218 mv data.pk3 data/data$date.pk3
219 mv common-spog.pk3 data/
220 rm -rf pro
221 mkdir pro
222 mv pro.pk3 pro/data${date}pro.pk3
223
224 cp -r "$mingwdlls"/* .
225 # fix up permissions
226 chmod 644 *.dll *.exe
227
228 mkdir Nexuiz
229 mv * Nexuiz/ || true
230
231 find . -name .svn -exec rm -rf {} \; -prune
232
233 rm -f "$zipdir/nexuiz$date$ext.zip"
234 zip $zipflags -9yr "$zipdir/nexuiz$date$ext.zip"           Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/data/data$date.pk3 Nexuiz/data/common-spog.pk3 Nexuiz/pro/*
235 ln -snf nexuiz$date$ext.zip "$zipdir/nexuizNEWEST.zip"
236
237 rm -f "$zipdir/nexuizengineonly$date$ext.zip"
238 zip $zipflags -9yr "$zipdir/nexuizengineonly$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll
239 ln -snf nexuizengineonly$date$ext.zip "$zipdir/nexuizengineonlyNEWEST.zip"
240
241 rm -f "$zipdir/nexuizsource$date$ext.zip"
242 zip $zipflags -9yr "$zipdir/nexuizsource$date$ext.zip"     Nexuiz/gpl.txt                                            Nexuiz/sources
243 ln -snf nexuizsource$date$ext.zip "$zipdir/nexuizsourceNEWEST.zip"
244
245 zipdiff -o "Nexuiz/data/datapatch$date.pk3" -f "$basepk3" -t Nexuiz/data/data$date.pk3
246 mkdir -p gfx
247 if unzip "Nexuiz/data/data$date.pk3" gfx/brand.tga; then
248         zip $zipflags -9r "Nexuiz/data/datapatch$date.pk3" gfx/brand.tga
249         rm -rf gfx
250 fi
251
252 rm -f "$zipdir/nexuizpatch$date$ext.zip"
253 zip $zipflags -9yr "$zipdir/nexuizpatch$date$ext.zip"      Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/data/datapatch$date.pk3 Nexuiz/pro/*
254 ln -snf nexuizpatch$date$ext.zip "$zipdir/nexuizpatchNEWEST.zip"
255
256 rm -f "$zipdir/nexuizdocs$date$ext.zip"
257 zip $zipflags -9yr "$zipdir/nexuizdocs$date$ext.zip"       Nexuiz/gpl.txt Nexuiz/Docs
258 ln -snf nexuizdocs$date$ext.zip "$zipdir/nexuizdocsNEWEST.zip"
259
260 rm -f "$zipdir/nexuizdebug$date$ext.zip"
261 zip $zipflags -9yr "$zipdir/nexuizdebug$date$ext.zip"      Nexuiz/gpl.txt Nexuiz/debuginfo/* Nexuiz/sources
262 ln -snf nexuizdebug$date$ext.zip "$zipdir/nexuizdebugNEWEST.zip"