1#
2# OpenBOR - http://www.LavaLit.com
3# -----------------------------------------------------------------------
4# All rights reserved, see LICENSE in OpenBOR root for details.
5#
6# Copyright (c) 2004 - 2011 OpenBOR Team
7#
8
9#!/bin/bash
10# Building script for all platforms
11# build.sh by SX (SumolX@gmail.com)
12
13# Used for resetting path prior to each platform.
14export OLD_PATH=$PATH
15
16# Display Version
17function version {
18  . ./version.sh
19  make version
20  cp README ./releases/README.txt
21  cp LICENSE ./releases/LICENSE.txt
22  cp COMPILING ./releases/COMPILING.txt
23}
24
25# CleanUp Releases
26function clean {
27  make clean-releases
28}
29
30# Distribute Releases
31function distribute {
32  echo ------------------------------------------------------
33  echo "          Validating Platforms Built w/Bash"
34  echo ------------------------------------------------------
35  echo
36
37  if ! test "releases/PSP/OpenBOR/EBOOT.PBP"; then
38    echo "PSP Platform Failed To Build!"
39    exit 1
40  fi
41  if ! test -e "releases/GP2X/OpenBOR/OpenBOR.gpe"; then
42    echo "GP2X Platform Failed To Build!"
43    exit 1
44  fi
45  if ! test -e "releases/WIZ/OpenBOR/OpenBOR.gpe"; then
46    echo "WIZ Platform Failed To Build!"
47    exit 1
48  fi
49  if ! test -e "releases/DC/OpenBOR/1ST_READ.BIN"; then
50    echo "Dreamcast Platform Failed To Build!"
51    exit 1
52  fi
53  if test -e "releases/WINDOWS/OpenBOR/OpenBOR.exe"; then
54    cd ../tools/borpak/source/
55    . build.sh win
56    cp borpak.exe ../../../engine/releases/WINDOWS/OpenBOR/
57    cp ../scripts/packer.bat ../../../engine/releases/WINDOWS/OpenBOR/
58    cp ../scripts/paxplode.bat ../../../engine/releases/WINDOWS/OpenBOR/
59    cd ../../../engine
60  else
61    echo "Windows Platform Failed To Build!"
62    exit 1
63  fi
64  if ! test -e "releases/WII/OpenBOR/boot.dol"; then
65    echo "Wii Platform Failed To Build!"
66    exit 1
67  fi
68  if ! test -e "releases/DINGOO/OpenBOR/OpenBOR.dge"; then
69    echo "Dingoo Platform Failed To Build!"
70    exit 1
71  fi
72  if test -e "releases/LINUX/OpenBOR/OpenBOR"; then
73    cd ../tools/borpak/source/
74    . build.sh lin
75    cp borpak ../../../engine/releases/LINUX/OpenBOR/
76    cp ../scripts/packer ../../../engine/releases/LINUX/OpenBOR/
77    cp ../scripts/paxplode ../../../engine/releases/LINUX/OpenBOR/
78    cd ../../../engine
79  else
80    if [ `echo $HOST_PLATFORM | grep -o "Linux"` ]; then
81      echo "Linux Platform Failed To Build!"
82      exit 1
83    fi
84  fi
85  if test -e "releases/DARWIN/OpenBOR.app/Contents/MacOS/OpenBOR"; then
86    cd ../tools/borpak/source/
87    . build.sh mac
88    cp borpak ../../../engine/releases/DARWIN/OpenBOR.app/Contents/Resources/
89    cp ../scripts/packer ../../../engine/releases/DARWIN/OpenBOR.app/Contents/Resources/
90    cp ../scripts/paxplode ../../../engine/releases/DARWIN/OpenBOR.app/Contents/Resources/
91    cd ../../../engine
92  else
93    echo "Darwin Platform Failed To Build!"
94    exit 1
95  fi
96
97  echo "All Platforms Created Successfully"
98  if ! test "$BUILDBATCH"; then
99    svn log --verbose > ./releases/VERSION_INFO.txt
100    7za a -t7z -mx9 -r -x!.svn "./releases/OpenBOR $VERSION.7z" ./releases/*
101  fi
102  echo
103}
104
105# PSP Environment && Compile
106function psp {
107  export PATH=$OLD_PATH
108  . ./environ.sh 1
109  if test $PSPDEV; then
110    make clean BUILD_PSP=1
111    make BUILD_PSP=1
112    if test -f "./EBOOT.PBP"; then
113      if test ! -e "./releases/PSP"; then
114        mkdir ./releases/PSP
115        mkdir ./releases/PSP/OpenBOR
116        mkdir ./releases/PSP/OpenBOR/Images
117        mkdir ./releases/PSP/OpenBOR/Logs
118        mkdir ./releases/PSP/OpenBOR/Paks
119        mkdir ./releases/PSP/OpenBOR/Saves
120        mkdir ./releases/PSP/OpenBOR/Modules
121      fi
122      mv EBOOT.PBP ./releases/PSP/OpenBOR/
123      mv OpenBOR.elf ./releases/PSP/OpenBOR/Modules/
124      cp ./psp/dvemgr/dvemgr.prx ./releases/PSP/OpenBOR/Modules/
125      cp ./psp/kernel/kernel.prx ./releases/PSP/OpenBOR/Modules/
126      cp ./psp/control/control.prx ./releases/PSP/OpenBOR/Modules/
127      cp ./psp/exception/exception.prx ./releases/PSP/OpenBOR/Modules/
128      cp ./resources/OpenBOR_Menu_480x272_Sony.png ./releases/PSP/OpenBOR/Images/Menu.png
129      cp ./resources/OpenBOR_Logo_480x272.png ./releases/PSP/OpenBOR/Images/Loading.png
130    fi
131    make clean BUILD_PSP=1
132  fi
133}
134
135# Gp2x Environment && Compile
136function gp2x {
137  export PATH=$OLD_PATH
138  . ./environ.sh 3
139  if test $GP2XDEV; then
140    make clean BUILD_GP2X=1
141    make BUILD_GP2X=1
142    if test -f "./OpenBOR.gpe"; then
143      if test ! -e "./releases/GP2X"; then
144        mkdir ./releases/GP2X
145        mkdir ./releases/GP2X/OpenBOR
146        mkdir ./releases/GP2X/OpenBOR/Logs
147        mkdir ./releases/GP2X/OpenBOR/Paks
148        mkdir ./releases/GP2X/OpenBOR/Saves
149        mkdir ./releases/GP2X/OpenBOR/ScreenShots
150      fi
151      cp ./sdl/gp2x/modules/mmuhack.o ./releases/GP2X/OpenBOR/
152      mv OpenBOR.gpe ./releases/GP2X/OpenBOR/
153    fi
154    make clean BUILD_GP2X=1
155  fi
156}
157
158# Linux Environment && Compile (common to all architectures)
159function linux {
160  export PATH=$OLD_PATH
161  export GCC_TARGET=$1
162  export TARGET_ARCH=$2
163  . ./environ.sh 4
164  if test $LNXDEV; then
165    if [[ ! $BUILD_DEBUG ]] ; then
166      make clean BUILD_LINUX=1
167    elif [[ "$TARGET_ARCH" == "amd64" ]] ; then
168      export NO_RAM_DEBUGGER=1
169    fi
170    make BUILD_LINUX=1
171    if test -f "./OpenBOR"; then
172      if test ! -e "./releases/$3"; then
173        mkdir ./releases/$3
174        mkdir ./releases/$3/OpenBOR
175        mkdir ./releases/$3/OpenBOR/Logs
176        mkdir ./releases/$3/OpenBOR/Paks
177        mkdir ./releases/$3/OpenBOR/Saves
178        mkdir ./releases/$3/OpenBOR/ScreenShots
179      fi
180      mv OpenBOR ./releases/$3/OpenBOR
181      echo "moved binary to ./releases/$3/ !"
182    fi
183    if [[ ! $BUILD_DEBUG ]] ; then
184      make clean BUILD_LINUX=1
185    fi
186  fi
187  [ $LNXDEV ]
188}
189
190# Compile for Linux under various architectures
191function linux_x86 {
192  if [ `uname -s | grep -o "Linux"` ]; then
193    linux i.86-.*linux.* x86 LINUX || # try standard 32-bit GCC
194    [ `gcc -dumpmachine | grep -o x86_64-.*linux.*` ] && [ `gcc -print-multi-lib | grep -o '@m32'` ] && # check for x86_64 GCC with 32-bit multilib
195    linux x86_64-.*linux.* x86 LINUX  # try 64-bit compiler with multilib
196  fi
197}
198
199function linux_amd64 {
200  if [ `uname -s | grep -o "Linux"` ]; then
201    linux x86_64-.*linux.* amd64 LINUX_AMD64 || # try standard 64-bit GCC
202    [ `gcc -dumpmachine | grep -o i.86-.*linux.*` ] && [ `gcc -print-multi-lib | grep -o '@m64'` ] && # check for x86 GCC with 64-bit multilib
203    linux i.86-.*linux.* amd64 LINUX_AMD64 # try 32-bit compiler with multilib
204  fi
205}
206
207function linux_something {
208  if [ ! $1 -o $1 = x86 ]; then
209    linux_x86
210  elif [ $1 = amd64 ]; then
211    linux_amd64
212  else
213    echo "Error: unknown Linux architecture '$1'"
214  fi
215}
216
217# Windows Environment && Compile
218function windows {
219  export PATH=$OLD_PATH
220  . ./environ.sh 5
221  if test $WINDEV; then
222    make clean BUILD_WIN=1
223    make BUILD_WIN=1
224    if test -f "./OpenBOR.exe"; then
225      if test ! -e "./releases/WINDOWS" ; then
226        mkdir ./releases/WINDOWS
227        mkdir ./releases/WINDOWS/OpenBOR
228        mkdir ./releases/WINDOWS/OpenBOR/Logs
229        mkdir ./releases/WINDOWS/OpenBOR/Paks
230        mkdir ./releases/WINDOWS/OpenBOR/Saves
231        mkdir ./releases/WINDOWS/OpenBOR/ScreenShots
232      fi
233      mv OpenBOR.exe ./releases/WINDOWS/OpenBOR
234    fi
235    make clean BUILD_WIN=1
236  fi
237}
238
239# Dreamcast Environment && Compile
240function dreamcast {
241  export PATH=$OLD_PATH
242  . ./environ.sh 6
243  if test $KOS_BASE; then
244    make clean BUILD_DC=1
245    make BUILD_DC=1
246    if test -f "./1ST_READ.BIN"; then
247      if test ! -e "./releases/DC" ; then
248        mkdir ./releases/DC
249        mkdir ./releases/DC/OpenBOR
250      fi
251      mv 1ST_READ.BIN ./releases/DC/OpenBOR/
252    fi
253    make clean BUILD_DC=1
254  fi
255}
256
257# Wii Environment && Compile
258function wii {
259  export PATH=$OLD_PATH
260  . ./environ.sh 7
261  if test $DEVKITPPC; then
262    make clean BUILD_WII=1
263    make BUILD_WII=1
264    if test -f "./boot.dol"; then
265      if test ! -e "./releases/WII" ; then
266        mkdir ./releases/WII
267        mkdir ./releases/WII/OpenBOR
268        mkdir ./releases/WII/OpenBOR/Logs
269        mkdir ./releases/WII/OpenBOR/Paks
270        mkdir ./releases/WII/OpenBOR/Saves
271        mkdir ./releases/WII/OpenBOR/ScreenShots
272      fi
273      mv boot.dol ./releases/WII/OpenBOR/
274      cp ./resources/meta.xml ./releases/WII/OpenBOR
275      cp ./resources/OpenBOR_Icon_128x48.png ./releases/WII/OpenBOR/icon.png
276    fi
277    make clean BUILD_WII=1
278  fi
279}
280
281# Dingoo Environment && Compile
282function dingoo {
283  export PATH=$OLD_PATH
284  . ./environ.sh 8
285  if test $DINGUX_TOOLCHAIN; then
286    make clean BUILD_DINGOO=1
287    make BUILD_DINGOO=1
288    if test -f "OpenBOR.dge"; then
289      if test ! -e "./releases/DINGOO" ; then
290        mkdir ./releases/DINGOO
291        mkdir ./releases/DINGOO/OpenBOR
292        mkdir ./releases/DINGOO/OpenBOR/Logs
293        mkdir ./releases/DINGOO/OpenBOR/Paks
294        mkdir ./releases/DINGOO/OpenBOR/Saves
295        mkdir ./releases/DINGOO/OpenBOR/ScreenShots
296      fi
297      mv OpenBOR.dge ./releases/DINGOO/OpenBOR/
298    fi
299    make clean BUILD_DINGOO=1
300  fi
301}
302
303# WIZ Environment && Compile
304function wiz {
305  export PATH=$OLD_PATH
306  . ./environ.sh 9
307  if test $WIZDEV; then
308    make clean BUILD_WIZ=1
309    make BUILD_WIZ=1
310    if test -f "./OpenBOR.gpe"; then
311      if test ! -e "./releases/WIZ"; then
312        mkdir ./releases/WIZ
313        mkdir ./releases/WIZ/OpenBOR
314        mkdir ./releases/WIZ/OpenBOR/Logs
315        mkdir ./releases/WIZ/OpenBOR/Paks
316        mkdir ./releases/WIZ/OpenBOR/Saves
317        mkdir ./releases/WIZ/OpenBOR/ScreenShots
318      fi
319      mv OpenBOR.gpe ./releases/WIZ/OpenBOR/
320      if [ `echo $HOST_PLATFORM | grep -o "SVN"` ]; then
321        cp $SDKPATH/lib/target/libSDL-1.2.so.0.11.2 ./releases/WIZ/OpenBOR/
322        cp $SDKPATH/lib/target/libSDL_gfx.so.0.0.17 ./releases/WIZ/OpenBOR/libSDL_gfx.so.0
323      else
324        cp $SDKPATH/lib/warm_2.6.24.ko ./releases/WIZ/OpenBOR/
325        cp $SDKPATH/lib/libSDL-1.2.so.0.11.2 ./releases/WIZ/OpenBOR/
326        cp $SDKPATH/lib/libSDL_gfx.so.0.0.17 ./releases/WIZ/OpenBOR/libSDL_gfx.so.0
327      fi
328    fi
329    make clean BUILD_WIZ=1
330  fi
331}
332
333# Darwin Environment && Compile
334function darwin {
335  export PATH=$OLD_PATH
336  . ./environ.sh 10
337  if test $DWNDEV; then
338    make clean BUILD_DARWIN=1
339    make BUILD_DARWIN=1
340    if test -f "./OpenBOR"; then
341      if test ! -e "./releases/DARWIN"; then
342        mkdir ./releases/DARWIN
343        mkdir ./releases/DARWIN/OpenBOR.app
344        mkdir ./releases/DARWIN/OpenBOR.app/Contents
345        mkdir ./releases/DARWIN/OpenBOR.app/Contents/MacOS
346        mkdir ./releases/DARWIN/OpenBOR.app/Contents/Resources
347        mkdir ./releases/DARWIN/OpenBOR.app/Contents/Libraries
348      fi
349      mv OpenBOR ./releases/DARWIN/OpenBOR.app/Contents/MacOS
350      cp ./resources/PkgInfo ./releases/DARWIN/OpenBOR.app/Contents
351      cp ./resources/Info.plist ./releases/DARWIN/OpenBOR.app/Contents
352      cp ./resources/OpenBOR.icns ./releases/DARWIN/OpenBOR.app/Contents/Resources
353      if [ "${DWNDEV}" != "/opt/mac" ]; then
354        cp ${DWNDEV}/lib/libSDL-1.2.0.dylib ./releases/DARWIN/OpenBOR.app/Contents/Libraries
355        cp ${DWNDEV}/lib/libSDL_gfx.13.dylib ./releases/DARWIN/OpenBOR.app/Contents/Libraries
356        cp ${DWNDEV}/lib/libogg.0.dylib ./releases/DARWIN/OpenBOR.app/Contents/Libraries
357        cp ${DWNDEV}/lib/libvorbisfile.3.dylib ./releases/DARWIN/OpenBOR.app/Contents/Libraries
358        cp ${DWNDEV}/lib/libvorbis.0.dylib ./releases/DARWIN/OpenBOR.app/Contents/Libraries
359        cp ${DWNDEV}/lib/libpng14.14.dylib ./releases/DARWIN/OpenBOR.app/Contents/Libraries
360        cp ${DWNDEV}/lib/libz.1.2.5.dylib ./releases/DARWIN/OpenBOR.app/Contents/Libraries
361        ./darwin.sh
362      fi
363    fi
364    make clean BUILD_DARWIN=1
365  fi
366}
367
368function build_all {
369  clean
370  version
371  if test -e "buildspec.sh"; then
372    . ./buildspec.sh
373  else
374    psp
375    gp2x
376    linux_x86
377    linux_amd64
378    windows
379    dreamcast
380    wii
381    dingoo
382    wiz
383    darwin
384  fi
385  distribute
386}
387
388function print_help {
389  echo
390  echo "Run $0 with one of the below targets"
391  echo "-------------------------------------------------------"
392  echo "    0 = Distribute"
393  echo "    1 = PSP"
394  echo "    2 = (unused)"
395  echo "    3 = Gp2x"
396  echo "    4 = Linux (x86, amd64) Example: $0 4 amd64"
397  echo "    5 = Windows"
398  echo "    6 = Dreamcast"
399  echo "    7 = Wii"
400  echo "    8 = Dingoo"
401  echo "    9 = Wiz"
402  echo "   10 = Darwin"
403  echo "  all = build for all applicable targets"
404  echo "-------------------------------------------------------"
405  echo "Example: $0 10"
406  echo
407}
408
409case $1 in
410  0)
411    version
412    distribute
413    ;;
414
415  1)
416    version
417    psp
418    ;;
419
420  2)
421    version
422    echo "No platform here anymore (used to be PS2)"
423    ;;
424
425  3)
426    version
427    gp2x
428    ;;
429
430  4)
431    version
432    linux_something $2
433    ;;
434
435  5)
436    version
437    windows
438    ;;
439
440  6)
441    version
442    dreamcast
443    ;;
444
445  7)
446    version
447    wii
448    ;;
449
450  8)
451    version
452    dingoo
453    ;;
454
455  9)
456    version
457    wiz
458    ;;
459
460  10)
461    version
462    darwin
463    ;;
464
465  ?)
466    version
467    print_help
468    ;;
469
470  all)
471    build_all
472    ;;
473
474  *)
475    print_help
476    ;;
477esac
478
479