From a1d19593a011737c5170c89973a352d511dc6d82 Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Sat, 3 Oct 2009 11:27:48 +0000 Subject: * Merge ioq3-r1248 --- make-macosx-ub.sh | 159 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 137 insertions(+), 22 deletions(-) (limited to 'make-macosx-ub.sh') diff --git a/make-macosx-ub.sh b/make-macosx-ub.sh index 9584e299..e12ad53b 100755 --- a/make-macosx-ub.sh +++ b/make-macosx-ub.sh @@ -1,12 +1,11 @@ #!/bin/sh APPBUNDLE=Tremulous.app BINARY=Tremulous.ub -DEDBIN=tremded.ub +DEDBIN=Tremded.ub PKGINFO=APPLTREM ICNS=misc/Tremulous.icns DESTDIR=build/release-darwin-ub BASEDIR=base -SDKDIR="" Q3_VERSION=`grep "\#define Q3_VERSION" src/qcommon/q_shared.h | \ sed -e 's/.*".* \([^ ]*\)"/\1/'`; @@ -15,8 +14,8 @@ BIN_OBJ=" build/release-darwin-x86/tremulous.x86 " BIN_DEDOBJ=" - build/release-darwin-ppc/ioq3ded.ppc - build/release-darwin-i386/ioq3ded.i386 + build/release-darwin-ppc/tremded.ppc + build/release-darwin-x86/tremded.x86 " BASE_OBJ=" build/release-darwin-ppc/$BASEDIR/cgameppc.dylib @@ -30,26 +29,141 @@ if [ ! -f Makefile ]; then echo "This script must be run from the Tremulous build directory"; fi -# this is kind of a hack to find out the latest SDK to use. I assume that newer SDKs apear later in this for loop, -# thus the last valid one is the one we want. - -for availsdks in /Developer/SDKs/* -do - if [ -d $availsdks ] - then - SDKDIR="$availsdks" - fi -done - -if [ -z $SDKDIR ] -then - echo "MacOSX SDK is missing. Please install a recent version of the MacOSX SDK." - exit 1; -else - echo "Using $SDKDIR for compilation" +TIGERHOST=0 +if uname -r | grep ^8. > /dev/null; then + TIGERHOST=1 fi -(BUILD_MACOSX_UB=ppc make && BUILD_MACOSX_UB=x86 make) || exit 1; +# we want to use the oldest available SDK for max compatiblity +unset PPC_CLIENT_SDK +PPC_CLIENT_CC=gcc +unset PPC_CLIENT_CFLAGS +unset PPC_CLIENT_LDFLAGS +unset PPC_SERVER_SDK +unset PPC_SERVER_CFLAGS +unset PPC_SERVER_LDFLAGS +unset X86_SDK +unset X86_CFLAGS +unset X86_LDFLAGS +if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then + PPC_CLIENT_SDK=/Developer/SDKs/MacOSX10.5.sdk + PPC_CLIENT_CC=gcc-4.0 + PPC_CLIENT_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk \ + -DMAC_OS_X_VERSION_MIN_REQUIRED=1050" + PPC_CLIENT_LDFLAGS="-arch ppc \ + -isysroot /Developer/SDKs/MacOSX10.5.sdk \ + -mmacosx-version-min=10.5" + PPC_SERVER_SDK=/Developer/SDKs/MacOSX10.5.sdk + PPC_SERVER_CFLAGS=$PPC_CLIENT_CFLAGS + PPC_SERVER_LDFLAGS=$PPC_CLIENT_LDFLAGS + + X86_SDK=/Developer/SDKs/MacOSX10.5.sdk + X86_CFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk \ + -DMAC_OS_X_VERSION_MIN_REQUIRED=1050" + X86_LDFLAGS="-arch i386 \ + -isysroot /Developer/SDKs/MacOSX10.5.sdk \ + -mmacosx-version-min=10.5" + X86_ENV="CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS" +fi + +if [ -d /Developer/SDKs/MacOSX10.4u.sdk ]; then + PPC_CLIENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk + PPC_CLIENT_CC=gcc-4.0 + PPC_CLIENT_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk \ + -DMAC_OS_X_VERSION_MIN_REQUIRED=1040" + PPC_CLIENT_LDFLAGS="-arch ppc \ + -isysroot /Developer/SDKs/MacOSX10.4u.sdk \ + -mmacosx-version-min=10.4" + PPC_SERVER_SDK=/Developer/SDKs/MacOSX10.4u.sdk + PPC_SERVER_CFLAGS=$PPC_CLIENT_CFLAGS + PPC_SERVER_LDFLAGS=$PPC_CLIENT_LDFLAGS + + X86_SDK=/Developer/SDKs/MacOSX10.4u.sdk + X86_CFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk \ + -DMAC_OS_X_VERSION_MIN_REQUIRED=1040" + X86_LDFLAGS="-arch i386 \ + -isysroot /Developer/SDKs/MacOSX10.4u.sdk \ + -mmacosx-version-min=10.4" + X86_ENV="CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS" +fi + +if [ -d /Developer/SDKs/MacOSX10.3.9.sdk ] && [ $TIGERHOST ]; then + PPC_CLIENT_SDK=/Developer/SDKs/MacOSX10.3.9.sdk + PPC_CLIENT_CC=gcc-4.0 + PPC_CLIENT_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.3.9.sdk \ + -DMAC_OS_X_VERSION_MIN_REQUIRED=1030" + PPC_CLIENT_LDFLAGS="-arch ppc \ + -isysroot /Developer/SDKs/MacOSX10.3.9.sdk \ + -mmacosx-version-min=10.3" + PPC_SERVER_SDK=/Developer/SDKs/MacOSX10.3.9.sdk + PPC_SERVER_CFLAGS=$PPC_CLIENT_CFLAGS + PPC_SERVER_LDFLAGS=$PPC_CLIENT_LDFLAGS +fi + +if [ -d /Developer/SDKs/MacOSX10.2.8.sdk ] && [ -x /usr/bin/gcc-3.3 ] && [ $TIGERHOST ]; then + PPC_CLIENT_SDK=/Developer/SDKs/MacOSX10.2.8.sdk + PPC_CLIENT_CC=gcc-3.3 + PPC_CLIENT_CFLAGS="-arch ppc \ + -nostdinc \ + -F/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks \ + -I/Developer/SDKs/MacOSX10.2.8.sdk/usr/include/gcc/darwin/3.3 \ + -isystem /Developer/SDKs/MacOSX10.2.8.sdk/usr/include \ + -DMAC_OS_X_VERSION_MIN_REQUIRED=1020" + PPC_CLIENT_LDFLAGS="-arch ppc \ + -L/Developer/SDKs/MacOSX10.2.8.sdk/usr/lib/gcc/darwin/3.3 \ + -F/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks \ + -Wl,-syslibroot,/Developer/SDKs/MacOSX10.2.8.sdk,-m" +fi + +echo "Building PPC Dedicated Server against \"$PPC_SERVER_SDK\"" +echo "Building PPC Client against \"$PPC_CLIENT_SDK\"" +echo "Building X86 Client/Dedicated Server against \"$X86_SDK\"" +if [ "$PPC_CLIENT_SDK" != "/Developer/SDKs/MacOSX10.2.8.sdk" ] || \ + [ "$PPC_SERVER_SDK" != "/Developer/SDKs/MacOSX10.3.9.sdk" ] || \ + [ "$X86_SDK" != "/Developer/SDKs/MacOSX10.4u.sdk" ]; then + echo "\ +WARNING: in order to build a binary with maximum compatibility you must + build on Mac OS X 10.4 using Xcode 2.3 or 2.5 and have the + MacOSX10.2.8, MacOSX10.3.9, and MacOSX10.4u SDKs installed + from the Xcode install disk Packages folder." +fi + +if [ -z $PPC_CLIENT_SDK ] || [ -z $PPC_SERVER_SDK ] || [ -z $X86_SDK ]; then + echo "\ +ERROR: This script is for building a Universal Binary. You cannot build + for a different architecture unless you have the proper Mac OS X SDKs + installed. If you just want to to compile for your own system run + 'make' instead of this script." + exit 1 +fi +sleep 3 + +if [ ! -d $DESTDIR ]; then + mkdir -p $DESTDIR +fi + +# ppc dedicated server +echo "Building Dedicated Server using $PPC_SERVER_SDK" +sleep 2 +if [ -d build/release-darwin-ppc ]; then + rm -r build/release-darwin-ppc +fi +(ARCH=ppc BUILD_CLIENT_SMP=0 BUILD_CLIENT=0 BUILD_GAME_VM=0 BUILD_GAME_SO=0 \ + CFLAGS=$PPC_SERVER_CFLAGS LDFLAGS=$PPC_SERVER_LDFLAGS make) || exit 1; +cp build/release-darwin-ppc/ioq3ded.ppc $DESTDIR + +# ppc client +if [ -d build/release-darwin-ppc ]; then + rm -r build/release-darwin-ppc +fi +(ARCH=ppc USE_OPENAL_DLOPEN=1 BUILD_SERVER=0 CC=$PPC_CLIENT_CC \ + CFLAGS=$PPC_CLIENT_CFLAGS LDFLAGS=$PPC_CLIENT_LDFLAGS make) || exit 1; + +# intel client and server +if [ -d build/release-darwin-x86 ]; then + rm -r build/release-darwin-x86 +fi +(ARCH=x86 CFLAGS=$X86_CFLAGS LDFLAGS=$X86_LDFLAGS make) || exit 1; echo "Creating .app bundle $DESTDIR/$APPBUNDLE" if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then @@ -102,6 +216,7 @@ echo " lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN $BIN_DEDOBJ +rm $DESTDIR/ioq3ded.ppc cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/ cp src/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/ -- cgit