r1246 - trunk

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Jan 3 01:19:11 EST 2008


Author: tjw
Date: 2008-01-03 01:19:11 -0500 (Thu, 03 Jan 2008)
New Revision: 1246

Modified:
   trunk/Makefile
   trunk/make-macosx-ub.sh
Log:
* Update the Mac OS X build process (again)
* Allow BUILD_* env vars to be passed to make to build only specific 
  components


Modified: trunk/Makefile
===================================================================
--- trunk/Makefile	2007-12-31 22:35:22 UTC (rev 1245)
+++ trunk/Makefile	2008-01-03 06:19:11 UTC (rev 1246)
@@ -23,11 +23,21 @@
   endif
 endif
 
-BUILD_CLIENT     =
-BUILD_CLIENT_SMP =
-BUILD_SERVER     =
-BUILD_GAME_SO    =
-BUILD_GAME_QVM   =
+ifndef BUILD_CLIENT
+  BUILD_CLIENT     =
+endif
+ifndef BUILD_CLIENT_SMP
+  BUILD_CLIENT_SMP =
+endif
+ifndef BUILD_SERVER
+  BUILD_SERVER     =
+endif
+ifndef BUILD_GAME_SO
+  BUILD_GAME_SO    =
+endif
+ifndef BUILD_GAME_QVM
+  BUILD_GAME_QVM   =
+endif
 
 ifneq ($(PLATFORM),darwin)
   BUILD_CLIENT_SMP = 0
@@ -279,50 +289,14 @@
 
 ifeq ($(PLATFORM),darwin)
   HAVE_VM_COMPILED=true
-  BASE_CFLAGS=
   CLIENT_LDFLAGS=
-  LDFLAGS=
   OPTIMIZE=
   
   # building the QVMs on MacOSX is broken, atm.
   BUILD_GAME_QVM=0
   
-  ifeq ($(BUILD_MACOSX_UB),ppc)
-    CC=gcc-4.0
-    BASE_CFLAGS += -arch ppc -mmacosx-version-min=10.4 -DSMP \
-      -DMAC_OS_X_VERSION_MIN_REQUIRED=1020 -nostdinc \
-      -F"$(MACOSX_SDK_DIR)"/System/Library/Frameworks \
-      -I"$(MACOSX_SDK_DIR)"/"$(MACOSX_SDK_INC)" \
-      -isystem "$(MACOSX_SDK_DIR)"/usr/include
-    LDFLAGS += -arch ppc -mmacosx-version-min=10.4 \
-      -L"$(MACOSX_SDK_DIR)"/"$(MACOSX_SDK_LIB)" \
-      -F"$(MACOSX_SDK_DIR)"/System/Library/Frameworks \
-      -Wl,-syslibroot,"$(MACOSX_SDK_DIR)"
-    ARCH=ppc
+  BASE_CFLAGS = -Wall -Wimplicit -Wstrict-prototypes
 
-  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)"/"$(MACOSX_SDK_INC)" \
-      -isystem "$(MACOSX_SDK_DIR)"/usr/include
-    LDFLAGS += -arch i386 -mmacosx-version-min=10.4 \
-      -L"$(MACOSX_SDK_DIR)"/"$(MACOSX_SDK_LIB)" \
-      -F"$(MACOSX_SDK_DIR)"/System/Library/Frameworks \
-      -Wl,-syslibroot,"$(MACOSX_SDK_DIR)"
-    ARCH=i386
-  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
-    # therefore we shut up warning flags when running the universal build
-    # script as much as possible.
-    BASE_CFLAGS += -Wall -Wimplicit -Wstrict-prototypes
-  endif
-  endif
-
   ifeq ($(ARCH),ppc)
     OPTIMIZE += -faltivec -O3
   endif

Modified: trunk/make-macosx-ub.sh
===================================================================
--- trunk/make-macosx-ub.sh	2007-12-31 22:35:22 UTC (rev 1245)
+++ trunk/make-macosx-ub.sh	2008-01-03 06:19:11 UTC (rev 1246)
@@ -11,11 +11,11 @@
 	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,79 +38,142 @@
 	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
+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
 
-if [ -z $PPC_SDK_DIR ] || [ -z $X86_SDK_DIR ];  then
-	echo "Error detecting compatible Mac OS X SDK."
-	exit 1;
+	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
 
-(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 "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-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
 	mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
@@ -162,6 +225,7 @@
 
 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/




More information about the quake3-commits mailing list