aboutsummaryrefslogtreecommitdiffstats
path: root/make-macosx-ub.sh
diff options
context:
space:
mode:
authortjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea>2008-01-03 06:19:11 +0000
committertjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea>2008-01-03 06:19:11 +0000
commit1fe6df05a865cc0d1f713f95e3792882c99943b9 (patch)
tree76f1576f01b909b1f07bccc37dced7ab9dddaeb6 /make-macosx-ub.sh
parent6c28490fc7f5130cd73d80e47e18a6cd77bdc10f (diff)
downloadioquake3-aero-1fe6df05a865cc0d1f713f95e3792882c99943b9.tar.gz
ioquake3-aero-1fe6df05a865cc0d1f713f95e3792882c99943b9.zip
* Update the Mac OS X build process (again)
* Allow BUILD_* env vars to be passed to make to build only specific components git-svn-id: svn://svn.icculus.org/quake3/trunk@1246 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'make-macosx-ub.sh')
-rwxr-xr-xmake-macosx-ub.sh200
1 files changed, 132 insertions, 68 deletions
diff --git a/make-macosx-ub.sh b/make-macosx-ub.sh
index f580f0f..1e64f13 100755
--- a/make-macosx-ub.sh
+++ b/make-macosx-ub.sh
@@ -11,11 +11,11 @@ Q3_VERSION=`grep "\#define Q3_VERSION" code/qcommon/q_shared.h | \
sed -e 's/.*".* \([^ ]*\)"/\1/'`;
BIN_OBJ="
- build/release-darwin-ppc/ioquake3.ppc
- build/release-darwin-i386/ioquake3.i386
+ build/release-darwin-ppc/ioquake3-smp.ppc
+ build/release-darwin-i386/ioquake3-smp.i386
"
BIN_DEDOBJ="
- build/release-darwin-ppc/ioq3ded.ppc
+ build/release-darwin-ub/ioq3ded.ppc
build/release-darwin-i386/ioq3ded.i386
"
BASE_OBJ="
@@ -38,78 +38,141 @@ if [ ! -f Makefile ]; then
echo "This script must be run from the ioquake3 build directory";
fi
+TIGERHOST=0
+if uname -r | grep ^8. > /dev/null; then
+ TIGERHOST=1
+fi
+
# we want to use the oldest available SDK for max compatiblity
-unset PPC_SDK_DIR
-unset X86_SDK_DIR
-unset PPC_SDK_INC
-unset X86_SDK_INC
-unset PPC_SDK_LIB
-unset X86_SDK_LIB
-unset PPC_SDK_OPENAL_DLOPEN
-for availsdks in $(find /Developer/SDKs -type d -maxdepth 1 -mindepth 1 -name "MacOSX*" -exec basename {} \; | sort -r)
-do
- case "$availsdks" in
- 'MacOSX10.5.sdk')
- PPC_SDK_DIR=/Developer/SDKs/MacOSX10.5.sdk
- X86_SDK_DIR=/Developer/SDKs/MacOSX10.5.sdk
- PPC_SDK_INC=usr/lib/gcc/powerpc-apple-darwin9/4.0.1/include
- X86_SDK_INC=usr/lib/gcc/i686-apple-darwin9/4.0.1/include
- PPC_SDK_LIB=usr/lib/gcc/powerpc-apple-darwin9/4.0.1
- X86_SDK_LIB=usr/lib/gcc/i686-apple-darwin9/4.0.1
- PPC_SDK_OPENAL_DLOPEN=0
- ;;
- 'MacOSX10.4u.sdk')
- PPC_SDK_DIR=/Developer/SDKs/MacOSX10.4u.sdk
- X86_SDK_DIR=/Developer/SDKs/MacOSX10.4u.sdk
- PPC_SDK_INC=usr/lib/gcc/powerpc-apple-darwin9/4.0.1/include
- X86_SDK_INC=usr/lib/gcc/i686-apple-darwin9/4.0.1/include
- PPC_SDK_LIB=usr/lib/gcc/powerpc-apple-darwin9/4.0.1
- X86_SDK_LIB=usr/lib/gcc/i686-apple-darwin9/4.0.1
- PPC_SDK_OPENAL_DLOPEN=0
- ;;
- 'MacOSX10.3.9.sdk')
- PPC_SDK_DIR=/Developer/SDKs/MacOSX10.3.9.sdk
- PPC_SDK_INC=usr/lib/gcc/powerpc-apple-darwin7/4.0.1/include
- PPC_SDK_LIB=usr/lib/gcc/powerpc-apple-darwin7/4.0.1
- PPC_SDK_OPENAL_DLOPEN=1
- ;;
- 'MacOSX10.2.8.sdk')
- # no longer supported due to lack of dlfcn.h
- #PPC_SDK_DIR=/Developer/SDKs/MacOSX10.2.8.sdk
- #PPC_SDK_INC=usr/include/gcc/darwin/3.3
- #PPC_SDK_LIB=usr/lib/gcc/darwin/3.3
- #PPC_SDK_OPENAL_DLOPEN=1
- ;;
- *)
- echo "WARNING: detected unknown MacOSX SDK ($availsdks)"
- esac
-done
-
-if [ -z $PPC_SDK_DIR ] || [ -z $X86_SDK_DIR ]; then
- echo "Error detecting compatible Mac OS X SDK."
- exit 1;
+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 [ $PPC_SDK_DIR != "/Developer/SDKs/MacOSX10.3.9.sdk" ]; then
- echo "WARNING: missing MacOS10.3.9.sdk. Resulting binary may not be compatible with Mac OS X 10.3"
- sleep 1
+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"
+ LDFLAGS="-arch i386 \
+ -isysroot /Developer/SDKs/MacOSX10.4u.sdk \
+ -mmacosx-version-min=10.4"
+ X86_ENV="CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS"
fi
-if [ $X86_SDK_DIR != "/Developer/SDKs/MacOSX10.4u.sdk" ]; then
- echo "WARNING: missing MacOS10.4u.sdk. Resulting binary may not be compatible with Mac OS X 10.4"
- sleep 1
+
+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
-echo "Using $PPC_SDK_DIR for PowerPC"
-echo "Using $X86_SDK_DIR for Intel"
+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
-(USE_OPENAL_DLOPEN=$PPC_SDK_OPENAL_DLOPEN \
- MACOSX_SDK_DIR=$PPC_SDK_DIR \
- MACOSX_SDK_INC=$PPC_SDK_INC \
- MACOSX_SDK_LIB=$PPC_SDK_LIB BUILD_MACOSX_UB=ppc make \
-&&
- MACOSX_SDK_DIR=$X86_SDK_DIR \
- MACOSX_SDK_INC=$X86_SDK_INC \
- MACOSX_SDK_LIB=$X86_SDK_LIB BUILD_MACOSX_UB=i386 make ) || exit 1
+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-i386 ]; then
+ rm -r build/release-darwin-i386
+fi
+(ARCH=i386 CFLAGS=$X86_CFLAGS LDFLAGS=$X86_LDFLAGS make) || exit 1;
echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
@@ -162,6 +225,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 $MPACK_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR/
cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/