1# 2# OpenBOR - http://www.ChronoCrash.com 3# ----------------------------------------------------------------------- 4# All rights reserved, see LICENSE in OpenBOR root for details. 5# 6# Copyright (c) 2004 - 2014 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# Use parellel make to speed up compilation 17export MAKEFLAGS=-j4 18 19# Display Version 20function version { 21 . ./version.sh 22 make version 23 cp README ./releases/README.txt 24 cp LICENSE ./releases/LICENSE.txt 25 cp COMPILING ./releases/COMPILING.txt 26 cp translation.txt ./releases/translation.txt 27} 28 29# CleanUp Releases 30function clean { 31 make clean-releases 32} 33 34# Distribute Releases 35function distribute { 36 echo ------------------------------------------------------ 37 echo " Validating Platforms Built w/Bash" 38 echo ------------------------------------------------------ 39 echo 40 41 if ! test "releases/PSP/OpenBOR/EBOOT.PBP"; then 42 echo "PSP Platform Failed To Build!" 43 exit 1 44 fi 45 if ! test -e "releases/DC/OpenBOR/1ST_READ.BIN"; then 46 echo "Dreamcast Platform Failed To Build!" 47 exit 1 48 fi 49 if test -e "releases/WINDOWS/OpenBOR/OpenBOR.exe"; then 50 cd ../tools/borpak/source/ 51 . build.sh win 52 cp borpak.exe ../../../engine/releases/WINDOWS/OpenBOR/ 53 cp ../scripts/packer.bat ../../../engine/releases/WINDOWS/OpenBOR/ 54 cp ../scripts/paxplode.bat ../../../engine/releases/WINDOWS/OpenBOR/ 55 cd ../../../engine 56 else 57 echo "Windows Platform Failed To Build!" 58 exit 1 59 fi 60 if ! test -e "releases/WII/OpenBOR/boot.dol"; then 61 echo "Wii Platform Failed To Build!" 62 exit 1 63 fi 64 if ! test -e "releases/OPENDINGUX/OpenBOR/OpenBOR.dge"; then 65 echo "OpenDingux Platform Failed To Build!" 66 exit 1 67 fi 68 if test -e "releases/LINUX/OpenBOR/OpenBOR"; then 69 cd ../tools/borpak/source/ 70 . build.sh lin 71 cp borpak ../../../engine/releases/LINUX/OpenBOR/ 72 cp ../scripts/packer ../../../engine/releases/LINUX/OpenBOR/ 73 cp ../scripts/paxplode ../../../engine/releases/LINUX/OpenBOR/ 74 cd ../../../engine 75 else 76 if [ `echo $HOST_PLATFORM | grep -o "Linux"` ]; then 77 echo "Linux Platform Failed To Build!" 78 exit 1 79 fi 80 fi 81 if test -e "releases/DARWIN/OpenBOR.app/Contents/MacOS/OpenBOR"; then 82 cd ../tools/borpak/source/ 83 . build.sh mac 84 cp borpak ../../../engine/releases/DARWIN/OpenBOR.app/Contents/Resources/ 85 cp ../scripts/packer ../../../engine/releases/DARWIN/OpenBOR.app/Contents/Resources/ 86 cp ../scripts/paxplode ../../../engine/releases/DARWIN/OpenBOR.app/Contents/Resources/ 87 cd ../../../engine 88 else 89 echo "Darwin Platform Failed To Build!" 90 exit 1 91 fi 92 93 echo "All Platforms Created Successfully" 94 if ! test "$BUILDBATCH"; then 95 TRIMMED_URL=`svn info | grep "URL:" | sed s/URL:\ svn\+ssh//g` 96 if test -n $TRIMMED_URL; then 97 TRIMMED_URL="svn"$TRIMMED_URL 98 fi 99 svn log $TRIMMED_URL --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# OpenDingux Environment && Compile 282function opendingux { 283 export PATH=$OLD_PATH 284 . ./environ.sh 8 285 if test $OPENDINGUX_TOOLCHAIN; then 286 make clean BUILD_OPENDINGUX=1 287 make BUILD_OPENDINGUX=1 288 if test -f "OpenBOR.dge"; then 289 if test ! -e "./releases/OPENDINGUX" ; then 290 mkdir ./releases/OPENDINGUX 291 mkdir ./releases/OPENDINGUX/OpenBOR 292 mkdir ./releases/OPENDINGUX/OpenBOR/Logs 293 mkdir ./releases/OPENDINGUX/OpenBOR/Paks 294 mkdir ./releases/OPENDINGUX/OpenBOR/Saves 295 mkdir ./releases/OPENDINGUX/OpenBOR/ScreenShots 296 fi 297 mv OpenBOR.dge ./releases/OPENDINGUX/OpenBOR/ 298 fi 299 make clean BUILD_OPENDINGUX=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 ./darwin.sh 355 fi 356 fi 357 make clean BUILD_DARWIN=1 358 fi 359} 360 361function build_all { 362 clean 363 version 364 if test -e "buildspec.sh"; then 365 . ./buildspec.sh 366 else 367 psp 368 linux_x86 369 linux_amd64 370 windows 371 dreamcast 372 wii 373 opendingux 374 darwin 375 fi 376 distribute 377} 378 379function print_help { 380 echo 381 echo "Run $0 with one of the below targets" 382 echo "-------------------------------------------------------" 383 echo " 0 = Distribute" 384 echo " 1 = PSP" 385 echo " 2 = (unused)" 386 echo " 3 = Gp2x" 387 echo " 4 = Linux (x86, amd64) Example: $0 4 amd64" 388 echo " 5 = Windows" 389 echo " 6 = Dreamcast" 390 echo " 7 = Wii" 391 echo " 8 = OpenDingux" 392 echo " 9 = Wiz" 393 echo " 10 = Darwin" 394 echo " all = build for all applicable targets" 395 echo "-------------------------------------------------------" 396 echo "Example: $0 10" 397 echo 398} 399 400case $1 in 401 0) 402 version 403 distribute 404 ;; 405 406 1) 407 version 408 psp 409 ;; 410 411 2) 412 version 413 echo "No platform here anymore (used to be PS2)" 414 ;; 415 416 3) 417 version 418 gp2x 419 ;; 420 421 4) 422 version 423 linux_something $2 424 ;; 425 426 5) 427 version 428 windows 429 ;; 430 431 6) 432 version 433 dreamcast 434 ;; 435 436 7) 437 version 438 wii 439 ;; 440 441 8) 442 version 443 opendingux 444 ;; 445 446 9) 447 version 448 wiz 449 ;; 450 451 10) 452 version 453 darwin 454 ;; 455 456 ?) 457 version 458 print_help 459 ;; 460 461 all) 462 build_all 463 ;; 464 465 *) 466 print_help 467 ;; 468esac 469 470