1# 2# OpenBOR - http://www.ChronoCrash.com 3# ----------------------------------------------------------------------- 4# All rights reserved, see LICENSE in OpenBOR root for details. 5# 6# Copyright (c) 2004 - 2018 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 mkdir -p releases 24 cp README ./releases/README.txt 25 cp LICENSE ./releases/LICENSE.txt 26 cp COMPILING ./releases/COMPILING.txt 27 cp translation.txt ./releases/translation.txt 28} 29 30# CleanUp Releases 31function clean { 32 make clean-releases 33} 34 35# Distribute Releases 36function distribute { 37 echo ------------------------------------------------------ 38 echo " Validating Platforms Built w/Bash" 39 echo ------------------------------------------------------ 40 echo 41 42 if ! test "releases/PSP/OpenBOR/EBOOT.PBP"; then 43 echo "PSP Platform Failed To Build!" 44 exit 1 45 fi 46 47if test -e "releases/WINDOWS/OpenBOR/OpenBOR.exe"; then 48 cd ../tools/borpak/source/ 49 . build.sh win 50 cp borpak.exe ../../../engine/releases/WINDOWS/OpenBOR/ 51 cp ../scripts/packer.bat ../../../engine/releases/WINDOWS/OpenBOR/ 52 cp ../scripts/paxplode.bat ../../../engine/releases/WINDOWS/OpenBOR/ 53 cd ../../../engine 54 else 55 echo "Windows Platform Failed To Build!" 56 exit 1 57 fi 58 if ! test -e "releases/WII/OpenBOR/boot.dol"; then 59 echo "Wii Platform Failed To Build!" 60 exit 1 61 fi 62 if ! test -e "releases/OPENDINGUX/OpenBOR/OpenBOR.dge"; then 63 echo "OpenDingux Platform Failed To Build!" 64 exit 1 65 fi 66 if test -e "releases/LINUX/OpenBOR/OpenBOR"; then 67 cd ../tools/borpak/source/ 68 . build.sh lin 69 cp borpak ../../../engine/releases/LINUX/OpenBOR/ 70 cp ../scripts/packer ../../../engine/releases/LINUX/OpenBOR/ 71 cp ../scripts/paxplode ../../../engine/releases/LINUX/OpenBOR/ 72 cd ../../../engine 73 else 74 if [ `echo $HOST_PLATFORM | grep -o "Linux"` ]; then 75 echo "Linux Platform Failed To Build!" 76 exit 1 77 fi 78 fi 79 if test -e "releases/DARWIN/OpenBOR.app/Contents/MacOS/OpenBOR"; then 80 cd ../tools/borpak/source/ 81 . build.sh mac 82 cp borpak ../../../engine/releases/DARWIN/OpenBOR.app/Contents/Resources/ 83 cp ../scripts/packer ../../../engine/releases/DARWIN/OpenBOR.app/Contents/Resources/ 84 cp ../scripts/paxplode ../../../engine/releases/DARWIN/OpenBOR.app/Contents/Resources/ 85 cd ../../../engine 86 else 87 echo "Darwin Platform Failed To Build!" 88 exit 1 89 fi 90 91 echo "All Platforms Created Successfully" 92 if ! test "$BUILDBATCH"; then 93 TRIMMED_URL=`svn info | grep "URL:" | sed s/URL:\ svn\+ssh//g` 94 if test -n $TRIMMED_URL; then 95 TRIMMED_URL="svn"$TRIMMED_URL 96 fi 97 svn log $TRIMMED_URL --verbose > ./releases/VERSION_INFO.txt 98 7za a -t7z -mx9 -r -x!.svn "./releases/OpenBOR $VERSION.7z" ./releases/* 99 fi 100 echo 101} 102 103# PSP Environment && Compile 104function psp { 105 export PATH=$OLD_PATH 106 . ./environ.sh 1 107 if test $PSPDEV; then 108 make clean BUILD_PSP=1 109 make BUILD_PSP=1 110 if test -f "./EBOOT.PBP"; then 111 if test ! -e "./releases/PSP"; then 112 mkdir ./releases/PSP 113 mkdir ./releases/PSP/OpenBOR 114 mkdir ./releases/PSP/OpenBOR/Images 115 mkdir ./releases/PSP/OpenBOR/Logs 116 mkdir ./releases/PSP/OpenBOR/Paks 117 mkdir ./releases/PSP/OpenBOR/Saves 118 mkdir ./releases/PSP/OpenBOR/Modules 119 fi 120 mv EBOOT.PBP ./releases/PSP/OpenBOR/ 121 mv OpenBOR.elf ./releases/PSP/OpenBOR/Modules/ 122 cp ./psp/dvemgr/dvemgr.prx ./releases/PSP/OpenBOR/Modules/ 123 cp ./psp/kernel/kernel.prx ./releases/PSP/OpenBOR/Modules/ 124 cp ./psp/control/control.prx ./releases/PSP/OpenBOR/Modules/ 125 cp ./psp/exception/exception.prx ./releases/PSP/OpenBOR/Modules/ 126 cp ./resources/OpenBOR_Menu_480x272_Sony.png ./releases/PSP/OpenBOR/Images/Menu.png 127 cp ./resources/OpenBOR_Logo_480x272.png ./releases/PSP/OpenBOR/Images/Loading.png 128 fi 129 make clean BUILD_PSP=1 130 fi 131} 132 133# PS Vita Environment && Compile 134function vita { 135 export PATH=$OLD_PATH 136 . ./environ.sh 2 137 if test $VITASDK; then 138 make clean BUILD_VITA=1 139 make BUILD_VITA=1 140 if test -f "./OpenBOR.vpk"; then 141 if test ! -e "./releases/VITA"; then 142 mkdir ./releases/VITA 143 fi 144 mv OpenBOR.vpk ./releases/VITA/ 145 fi 146 make clean BUILD_VITA=1 147 fi 148} 149 150# Linux Environment && Compile (common to all architectures) 151function linux { 152 export PATH=$OLD_PATH 153 export GCC_TARGET=$1 154 export TARGET_ARCH=$2 155 . ./environ.sh 4 156 if test $LNXDEV; then 157 if [[ ! $BUILD_DEBUG ]] ; then 158 make clean BUILD_LINUX=1 159 elif [[ "$TARGET_ARCH" == "amd64" ]] ; then 160 export NO_RAM_DEBUGGER=1 161 fi 162 make BUILD_LINUX=1 163 if test -f "./OpenBOR"; then 164 if test ! -e "./releases/$3"; then 165 mkdir ./releases/$3 166 mkdir ./releases/$3/OpenBOR 167 mkdir ./releases/$3/OpenBOR/Logs 168 mkdir ./releases/$3/OpenBOR/Paks 169 mkdir ./releases/$3/OpenBOR/Saves 170 mkdir ./releases/$3/OpenBOR/ScreenShots 171 fi 172 mv OpenBOR ./releases/$3/OpenBOR 173 echo "moved binary to ./releases/$3/ !" 174 fi 175 if [[ ! $BUILD_DEBUG ]] ; then 176 make clean BUILD_LINUX=1 177 fi 178 fi 179 [ $LNXDEV ] 180} 181 182# Compile for Linux under various architectures 183function linux_x86 { 184 if [ `uname -s | grep -o "Linux"` ]; then 185 linux i.86-.*linux.* x86 LINUX || # try standard 32-bit GCC 186 [ `gcc -dumpmachine | grep -o x86_64-.*linux.*` ] && [ `gcc -print-multi-lib | grep -o '@m32'` ] && # check for x86_64 GCC with 32-bit multilib 187 linux x86_64-.*linux.* x86 LINUX # try 64-bit compiler with multilib 188 fi 189} 190 191function linux_amd64 { 192 if [ `uname -s | grep -o "Linux"` ]; then 193 linux x86_64-.*linux.* amd64 LINUX_AMD64 || # try standard 64-bit GCC 194 [ `gcc -dumpmachine | grep -o i.86-.*linux.*` ] && [ `gcc -print-multi-lib | grep -o '@m64'` ] && # check for x86 GCC with 64-bit multilib 195 linux i.86-.*linux.* amd64 LINUX_AMD64 # try 32-bit compiler with multilib 196 fi 197} 198 199function linux_something { 200 if [ ! $1 -o $1 = x86 ]; then 201 linux_x86 202 elif [ $1 = amd64 ]; then 203 linux_amd64 204 else 205 echo "Error: unknown Linux architecture '$1'" 206 fi 207} 208 209# Windows Environment && Compile 210function windows { 211 export PATH=$OLD_PATH 212 . ./environ.sh 5 213 if test $WINDEV; then 214 make clean BUILD_WIN=1 215 #first remove old resource file and update with build number from build_number.h. 216 if test -e "resources/OpenBOR.res"; then 217 rm "resources/OpenBOR.res"; 218 fi 219 220 # if it's cross-compile for Windows from Linux, then 221 # find a proper tool 222 if test -e "/usr/bin/i686-w64-mingw32-gcc" && test -e "/usr/bin/i686-w64-mingw32-windres"; then 223 i686-w64-mingw32-windres resources/OpenBOR.rc -o resources/OpenBOR.res -O coff 224 else 225 windres.exe resources/OpenBOR.rc -o resources/OpenBOR.res -O coff 226 fi 227 make BUILD_WIN=1 228 if test -f "./OpenBOR.exe"; then 229 if test ! -e "./releases/WINDOWS" ; then 230 mkdir ./releases/WINDOWS 231 mkdir ./releases/WINDOWS/OpenBOR 232 mkdir ./releases/WINDOWS/OpenBOR/Logs 233 mkdir ./releases/WINDOWS/OpenBOR/Paks 234 mkdir ./releases/WINDOWS/OpenBOR/Saves 235 mkdir ./releases/WINDOWS/OpenBOR/ScreenShots 236 fi 237 mv OpenBOR.exe ./releases/WINDOWS/OpenBOR 238 fi 239 make clean BUILD_WIN=1 240 fi 241} 242 243# Wii Environment && Compile 244function wii { 245 export PATH=$OLD_PATH 246 . ./environ.sh 7 247 if test $DEVKITPPC; then 248 make clean BUILD_WII=1 249 make BUILD_WII=1 250 if test -f "./boot.dol"; then 251 if test ! -e "./releases/WII" ; then 252 mkdir ./releases/WII 253 mkdir ./releases/WII/OpenBOR 254 mkdir ./releases/WII/OpenBOR/Logs 255 mkdir ./releases/WII/OpenBOR/Paks 256 mkdir ./releases/WII/OpenBOR/Saves 257 mkdir ./releases/WII/OpenBOR/ScreenShots 258 fi 259 mv boot.dol ./releases/WII/OpenBOR/ 260 cp ./resources/meta.xml ./releases/WII/OpenBOR 261 cp ./resources/OpenBOR_Icon_128x48.png ./releases/WII/OpenBOR/icon.png 262 fi 263 make clean BUILD_WII=1 264 fi 265} 266 267# Darwin Environment && Compile 268function darwin { 269 export PATH=$OLD_PATH 270 . ./environ.sh 10 271 if test $DWNDEV; then 272 make clean BUILD_DARWIN=1 273 make BUILD_DARWIN=1 274 if test -f "./OpenBOR"; then 275 if test ! -e "./releases/DARWIN"; then 276 mkdir ./releases/DARWIN 277 mkdir ./releases/DARWIN/OpenBOR.app 278 mkdir ./releases/DARWIN/OpenBOR.app/Contents 279 mkdir ./releases/DARWIN/OpenBOR.app/Contents/MacOS 280 mkdir ./releases/DARWIN/OpenBOR.app/Contents/Resources 281 mkdir ./releases/DARWIN/OpenBOR.app/Contents/Libraries 282 fi 283 mv OpenBOR ./releases/DARWIN/OpenBOR.app/Contents/MacOS 284 cp ./resources/PkgInfo ./releases/DARWIN/OpenBOR.app/Contents 285 cp ./resources/Info.plist ./releases/DARWIN/OpenBOR.app/Contents 286 cp ./resources/OpenBOR.icns ./releases/DARWIN/OpenBOR.app/Contents/Resources 287 if [ "${DWNDEV}" != "/opt/mac" ]; then 288 ./darwin.sh 289 fi 290 fi 291 make clean BUILD_DARWIN=1 292 fi 293} 294 295# Android Compile 296function android { 297 export PATH=$OLD_PATH 298 if test -f "./android/app/build/outputs/apk/debug/OpenBOR.apk"; then 299 if test ! -e "./releases/Android/"; then 300 rm -rf ./releases/ANDROID 301 mkdir ./releases/ANDROID 302 fi 303 cp ./android/app/build/outputs/apk/debug/OpenBOR.apk ./releases/ANDROID 304 echo "Android Build Copied!" 305 fi 306} 307 308 309function build_all { 310 clean 311 version 312 if test -e "buildspec.sh"; then 313 . ./buildspec.sh 314 else 315 psp 316 vita 317 linux_x86 318 linux_amd64 319 windows 320 wii 321 darwin 322 android 323 fi 324 distribute 325} 326 327function print_help { 328 echo 329 echo "Run $0 with one of the below targets" 330 echo "-------------------------------------------------------" 331 echo " 0 = Distribute" 332 echo " 1 = PSP" 333 echo " 2 = PS Vita" 334 echo " 4 = Linux (x86, amd64) Example: $0 4 amd64" 335 echo " 5 = Windows" 336 echo " 7 = Wii" 337 echo " 10 = Darwin" 338 echo " all = build for all applicable targets" 339 echo "-------------------------------------------------------" 340 echo "Example: $0 10" 341 echo 342} 343 344case $1 in 345 0) 346 version 347 distribute 348 ;; 349 350 1) 351 version 352 psp 353 ;; 354 355 2) 356 version 357 vita 358 ;; 359 360 4) 361 version 362 linux_something $2 363 ;; 364 365 5) 366 version 367 windows 368 ;; 369 370 7) 371 version 372 wii 373 ;; 374 375 10) 376 version 377 darwin 378 ;; 379 380 ?) 381 version 382 print_help 383 ;; 384 385 all) 386 build_all 387 ;; 388 389 *) 390 print_help 391 ;; 392esac 393 394