aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea>2007-12-31 03:47:36 +0000
committertjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea>2007-12-31 03:47:36 +0000
commit751919dbe323dfa9d7b7f89cf0f23258ee14f0c6 (patch)
tree312bd4a15ebb1b9956878e0032ad007c8e3c45f7
parentd007d5fde43e99e1c550e636f4243ad6a82da0ae (diff)
downloadioquake3-aero-751919dbe323dfa9d7b7f89cf0f23258ee14f0c6.tar.gz
ioquake3-aero-751919dbe323dfa9d7b7f89cf0f23258ee14f0c6.zip
* Improved Mac OS X build support.
* Dropped support for Mac OS X 10.2 to simplify things. If anyone still needs this version supported let me know. git-svn-id: svn://svn.icculus.org/quake3/trunk@1243 edf5b092-35ff-0310-97b2-ce42778d08ea
-rw-r--r--Makefile17
-rw-r--r--README4
-rwxr-xr-xmake-macosx-ub.sh81
3 files changed, 73 insertions, 29 deletions
diff --git a/Makefile b/Makefile
index 5efa3f6..0cf7a44 100644
--- a/Makefile
+++ b/Makefile
@@ -284,10 +284,6 @@ ifeq ($(PLATFORM),darwin)
LDFLAGS=
OPTIMIZE=
- ifndef MACOSX_SDK_DIR
- MACOSX_SDK_DIR="/Developer/SDKs/MacOSX10.5.sdk"
- endif
-
# building the QVMs on MacOSX is broken, atm.
BUILD_GAME_QVM=0
@@ -296,33 +292,28 @@ ifeq ($(PLATFORM),darwin)
BASE_CFLAGS += -arch ppc -DSMP \
-DMAC_OS_X_VERSION_MIN_REQUIRED=1020 -nostdinc \
-F"$(MACOSX_SDK_DIR)"/System/Library/Frameworks \
- -I"$(MACOSX_SDK_DIR)"/usr/lib/gcc/i686-apple-darwin9/4.0.1/include \
+ -I"$(MACOSX_SDK_DIR)"/"$(MACOSX_SDK_INC)" \
-isystem "$(MACOSX_SDK_DIR)"/usr/include
LDFLAGS += -arch ppc \
- -L"$(MACOSX_SDK_DIR)"/usr/lib/gcc/darwin/4.0 \
+ -L"$(MACOSX_SDK_DIR)"/"$(MACOSX_SDK_LIB)" \
-F"$(MACOSX_SDK_DIR)"/System/Library/Frameworks \
-Wl,-syslibroot,"$(MACOSX_SDK_DIR)"
ARCH=ppc
- # OS X 10.2 sdk lacks dlopen() so ded would need libSDL anyway
-# BUILD_SERVER=0
-
else
-
ifeq ($(BUILD_MACOSX_UB),i386)
CC=gcc-4.0
BASE_CFLAGS += -arch i386 -DSMP \
-mmacosx-version-min=10.4 \
-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 -nostdinc \
-F"$(MACOSX_SDK_DIR)"/System/Library/Frameworks \
- -I"$(MACOSX_SDK_DIR)"/usr/lib/gcc/i686-apple-darwin9/4.0.1/include \
+ -I"$(MACOSX_SDK_DIR)"/"$(MACOSX_SDK_INC)" \
-isystem "$(MACOSX_SDK_DIR)"/usr/include
LDFLAGS = -arch i386 -mmacosx-version-min=10.4 \
- -L"$(MACOSX_SDK_DIR)"/usr/lib/gcc/i686-apple-darwin9/4.0.1 \
+ -L"$(MACOSX_SDK_DIR)"/"$(MACOSX_SDK_LIB)" \
-F"$(MACOSX_SDK_DIR)"/System/Library/Frameworks \
-Wl,-syslibroot,"$(MACOSX_SDK_DIR)"
ARCH=i386
-# BUILD_SERVER=0
else
# for whatever reason using the headers in the MacOSX SDKs tend to throw
# errors even though they are identical to the system ones which don't
diff --git a/README b/README
index 59dea94..1884ada 100644
--- a/README
+++ b/README
@@ -48,7 +48,9 @@ For Windows, using MinGW
2. Open an MSys terminal, and follow the instructions for compiling on *nix.
For Mac OS X, building a Universal Binary
- 1. Install the MacOSX10.5.sdk
+ 1. Install MacOSX SDK packages from XCode. For maximum compatibility,
+ be sure to install MacOSX10.3.9.sdk and MacOSX10.4u.sdk.
+ (MacOSX10.2.8.sdk no longer supported)
2. Change to the directory containing this README file.
3. Run './make-macosx-ub.sh'
4. Copy the resulting ioquake3.app in /build/release-darwin-ub to your
diff --git a/make-macosx-ub.sh b/make-macosx-ub.sh
index 6758e1e..44485cd 100755
--- a/make-macosx-ub.sh
+++ b/make-macosx-ub.sh
@@ -6,7 +6,6 @@ PKGINFO=APPLIOQ3
ICNS=misc/quake3.icns
DESTDIR=build/release-darwin-ub
BASEDIR=baseq3
-SDKDIR=""
MPACKDIR=missionpack
Q3_VERSION=`grep "\#define Q3_VERSION" code/qcommon/q_shared.h | \
sed -e 's/.*".* \([^ ]*\)"/\1/'`;
@@ -39,26 +38,78 @@ if [ ! -f Makefile ]; then
echo "This script must be run from the ioquake3 build directory";
fi
-# this is kind of a hack to find out the latest SDK to use. I assume that newer SDKs appear later in this for loop,
-# thus the last valid one is the one we want.
-
-for availsdks in /Developer/SDKs/*
+# 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
- if [ -d $availsdks ]
- then
- SDKDIR="$availsdks"
- fi
+ case "$availsdks" in
+ 'MacOSX10.5u.sdk')
+ PPC_SDK_DIR=/Developer/SDKs/MacOSX10.5u.sdk
+ X86_SDK_DIR=/Developer/SDKs/MacOSX10.5u.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-darwin8/4.0.1/include
+ X86_SDK_INC=usr/lib/gcc/i686-apple-darwin8/4.0.1/include
+ PPC_SDK_LIB=usr/lib/gcc/powerpc-apple-darwin8/4.0.1
+ X86_SDK_LIB=usr/lib/gcc/i686-apple-darwin8/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 $SDKDIR ]
-then
- echo "MacOSX SDK is missing. Please install a recent version of the MacOSX SDK."
+if [ -z $PPC_SDK_DIR ] || [ -z $X86_SDK_DIR ]; then
+ echo "Error detecting compatible Mac OS X SDK."
exit 1;
-else
- echo "Using $SDKDIR for compilation"
fi
-(BUILD_MACOSX_UB=ppc make && BUILD_MACOSX_UB=i386 make) || exit 1;
+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
+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
+fi
+
+echo "Using $PPC_SDK_DIR for PowerPC"
+echo "Using $X86_SDK_DIR for Intel"
+
+(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
echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then