[quake3-commits] r2392 - in trunk: . code/libs/macosx

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Wed Dec 19 19:15:17 EST 2012


Author: ra
Date: 2012-12-19 19:15:17 -0500 (Wed, 19 Dec 2012)
New Revision: 2392

Added:
   trunk/code/libs/macosx/SDL-1.2.15.framework.zip
Modified:
   trunk/Makefile
   trunk/make-macosx-ub.sh
   trunk/make-macosx.sh
Log:
Changed the MacOS-X build system to make UB's containing i386 and x86_64 arches and made make-macosx.sh not build UB's but only standard binaries

Modified: trunk/Makefile
===================================================================
--- trunk/Makefile	2012-12-18 06:21:47 UTC (rev 2391)
+++ trunk/Makefile	2012-12-20 00:15:17 UTC (rev 2392)
@@ -1033,7 +1033,7 @@
 $(echo_cmd) "REF_STR $<"
 $(Q)rm -f $@
 $(Q)echo "const char *fallbackShader_$(notdir $(basename $<)) =" >> $@
-$(Q)cat $< | sed 's/\\/\\\\/;s/\t/\\t/;s/\"/\\"/;s/$$/\\n"/;s/^/"/' >> $@
+$(Q)cat $< | sed 's/^/\"/;s/$$/\\n\"/' >> $@
 $(Q)echo ";" >> $@
 endef
 

Added: trunk/code/libs/macosx/SDL-1.2.15.framework.zip
===================================================================
(Binary files differ)


Property changes on: trunk/code/libs/macosx/SDL-1.2.15.framework.zip
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/make-macosx-ub.sh
===================================================================
--- trunk/make-macosx-ub.sh	2012-12-18 06:21:47 UTC (rev 2391)
+++ trunk/make-macosx-ub.sh	2012-12-20 00:15:17 UTC (rev 2392)
@@ -10,37 +10,37 @@
 MPACKDIR=missionpack
 
 BIN_OBJ="
-	build/release-darwin-ppc/ioquake3.ppc
+	build/release-darwin-x86_64/ioquake3.x86_64
 	build/release-darwin-i386/ioquake3.i386
 "
 BIN_DEDOBJ="
-	build/release-darwin-ppc/ioq3ded.ppc
+	build/release-darwin-x86_64/ioq3ded.x86_64
 	build/release-darwin-i386/ioq3ded.i386
 "
 BASE_OBJ="
-	build/release-darwin-ppc/$BASEDIR/cgameppc.dylib
+	build/release-darwin-x86_64/$BASEDIR/cgamex86_64.dylib
 	build/release-darwin-i386/$BASEDIR/cgamei386.dylib
-	build/release-darwin-ppc/$BASEDIR/uippc.dylib
+	build/release-darwin-x86_64/$BASEDIR/uix86_64.dylib
 	build/release-darwin-i386/$BASEDIR/uii386.dylib
-	build/release-darwin-ppc/$BASEDIR/qagameppc.dylib
+	build/release-darwin-x86_64/$BASEDIR/qagamex86_64.dylib
 	build/release-darwin-i386/$BASEDIR/qagamei386.dylib
 "
 MPACK_OBJ="
-	build/release-darwin-ppc/$MPACKDIR/cgameppc.dylib
+	build/release-darwin-x86_64/$MPACKDIR/cgamex86_64.dylib
 	build/release-darwin-i386/$MPACKDIR/cgamei386.dylib
-	build/release-darwin-ppc/$MPACKDIR/uippc.dylib
+	build/release-darwin-x86_64/$MPACKDIR/uix86_64.dylib
 	build/release-darwin-i386/$MPACKDIR/uii386.dylib
-	build/release-darwin-ppc/$MPACKDIR/qagameppc.dylib
+	build/release-darwin-x86_64/$MPACKDIR/qagamex86_64.dylib
 	build/release-darwin-i386/$MPACKDIR/qagamei386.dylib
 "
 RENDER_OBJ="
-	build/release-darwin-ppc/renderer_opengl1_smp_ppc.dylib
+	build/release-darwin-x86_64/renderer_opengl1_smp_x86_64.dylib
 	build/release-darwin-i386/renderer_opengl1_smp_i386.dylib
-	build/release-darwin-ppc/renderer_opengl1_ppc.dylib
+	build/release-darwin-x86_64/renderer_opengl1_x86_64.dylib
 	build/release-darwin-i386/renderer_opengl1_i386.dylib
-	build/release-darwin-ppc/renderer_rend2_smp_ppc.dylib
+	build/release-darwin-x86_64/renderer_rend2_smp_x86_64.dylib
 	build/release-darwin-i386/renderer_rend2_smp_i386.dylib
-	build/release-darwin-ppc/renderer_rend2_ppc.dylib
+	build/release-darwin-x86_64/renderer_rend2_x86_64.dylib
 	build/release-darwin-i386/renderer_rend2_i386.dylib
 "
 
@@ -56,18 +56,23 @@
 # "8" is the Darwin major kernel version.
 TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'`
 
-# we want to use the oldest available SDK for max compatiblity
-unset PPC_SDK
-unset PPC_CFLAGS
-unset PPC_LDFLAGS
+# we want to use the oldest available SDK for max compatiblity. However 10.4 and older
+# can not build 64bit binaries, making 10.5 the minimum version.   This has been tested 
+# with xcode 3.1 (xcode31_2199_developerdvd.dmg).  It contains the 10.5 SDK and a decent
+# enough gcc to actually compile ioquake3
+
+unset X86_64_SDK
+unset X86_64_CFLAGS
+unset X86_64_LDFLAGS
 unset X86_SDK
 unset X86_CFLAGS
 unset X86_LDFLAGS
+
 if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
-	PPC_SDK=/Developer/SDKs/MacOSX10.5.sdk
-	PPC_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk \
+	X86_64_SDK=/Developer/SDKs/MacOSX10.5.sdk
+	X86_64_CFLAGS="-arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk \
 			-DMAC_OS_X_VERSION_MIN_REQUIRED=1050"
-	PPC_LDFLAGS=" -mmacosx-version-min=10.5"
+	X86_64_LDFLAGS=" -mmacosx-version-min=10.5"
 
 	X86_SDK=/Developer/SDKs/MacOSX10.5.sdk
 	X86_CFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk \
@@ -75,26 +80,7 @@
 	X86_LDFLAGS=" -mmacosx-version-min=10.5"
 fi
 
-if [ -d /Developer/SDKs/MacOSX10.4u.sdk ]; then
-	PPC_SDK=/Developer/SDKs/MacOSX10.4u.sdk
-	PPC_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk \
-			-DMAC_OS_X_VERSION_MIN_REQUIRED=1040"
-	PPC_LDFLAGS=" -mmacosx-version-min=10.4"
-
-	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=" -mmacosx-version-min=10.4"
-fi
-
-if [ -d /Developer/SDKs/MacOSX10.3.9.sdk ] && [ $TIGERHOST ]; then
-	PPC_SDK=/Developer/SDKs/MacOSX10.3.9.sdk
-	PPC_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.3.9.sdk \
-			-DMAC_OS_X_VERSION_MIN_REQUIRED=1030"
-	PPC_LDFLAGS=" -mmacosx-version-min=10.3"
-fi
-
-if [ -z $PPC_SDK ] || [ -z $X86_SDK ]; then
+if [ -z $X86_64_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
@@ -103,17 +89,18 @@
 	exit 1
 fi
 
-echo "Building PPC Client/Dedicated Server against \"$PPC_SDK\""
+echo "Building X86_64 Client/Dedicated Server against \"$X86_64_SDK\""
 echo "Building X86 Client/Dedicated Server against \"$X86_SDK\""
-if [ "$PPC_SDK" != "/Developer/SDKs/MacOSX10.3.9.sdk" ] || \
-	[ "$X86_SDK" != "/Developer/SDKs/MacOSX10.4u.sdk" ]; then
+echo
+
+if [ "$X86_64_SDK" != "/Developer/SDKs/MacOSX10.5.sdk" ] || \
+        [ "$X86_SDK" != "/Developer/SDKs/MacOSX10.5.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.3.9, and MacOSX10.4u SDKs installed from the Xcode 
-         install disk Packages folder."
+         build on Mac OS X 10.5 using Xcode 3.1 and have the MacOSX10.5
+         SDKs installed from the Xcode install disk Packages folder."
+sleep 3
 fi
-sleep 3
 
 if [ ! -d $DESTDIR ]; then
 	mkdir -p $DESTDIR
@@ -122,13 +109,15 @@
 # For parallel make on multicore boxes...
 NCPU=`sysctl -n hw.ncpu`
 
-# ppc client and server
-if [ -d build/release-release-ppc ]; then
-	rm -r build/release-darwin-ppc
+# x86_64 client and server
+if [ -d build/release-release-x86_64 ]; then
+	rm -r build/release-darwin-x86_64
 fi
-(ARCH=ppc CC=gcc-4.0 CFLAGS=$PPC_CFLAGS LDFLAGS=$PPC_LDFLAGS make -j$NCPU) || exit 1;
+(ARCH=x86_64 CC=gcc-4.0 CFLAGS=$X86_64_CFLAGS LDFLAGS=$X86_64_LDFLAGS make -j$NCPU) || exit 1;
 
-# intel client and server
+echo;echo
+
+# i386 client and server
 if [ -d build/release-darwin-i386 ]; then
 	rm -r build/release-darwin-i386
 fi
@@ -183,8 +172,25 @@
 	</plist>
 	" > $DESTDIR/$APPBUNDLE/Contents/Info.plist
 
+# Change the path of the SDL Framework in both arches for the executables and renderer dylib's
+# This removes the need for players to have the SDL.Framework installed on their machines.
+for i in $BIN_OBJ $BIN_DEDOBJ $RENDER_OBJ
+do
+        install_name_tool -change "@rpath/SDL.framework/Versions/A/SDL" "@executable_path/../Frameworks/SDL.framework/Versions/A/SDL" $i
+done
+
+# Make UB's from previous builds of 1386 and x86_64 binaries
 lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ
 lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN $BIN_DEDOBJ
+
+# Embed the SDL framework into the .app so players done need to install it on their systems.
+mkdir $DESTDIR/$APPBUNDLE/Contents/Frameworks
+unzip -d $DESTDIR/$APPBUNDLE/Contents/Frameworks code/libs/macosx/SDL-1.2.15.framework.zip
+
+# Change the path in the UB, just in case
+install_name_tool -change "@rpath/SDL.framework/Versions/A/SDL" "@executable_path/../Frameworks/SDL.framework/Versions/A/SDL" $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY
+install_name_tool -change "@rpath/SDL.framework/Versions/A/SDL" "@executable_path/../Frameworks/SDL.framework/Versions/A/SDL" $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN
+
 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
 cp $MPACK_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR/

Modified: trunk/make-macosx.sh
===================================================================
--- trunk/make-macosx.sh	2012-12-18 06:21:47 UTC (rev 2391)
+++ trunk/make-macosx.sh	2012-12-20 00:15:17 UTC (rev 2392)
@@ -44,7 +44,11 @@
 # "8" is the Darwin major kernel version.
 TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'`
 
-# we want to use the oldest available SDK for max compatiblity
+# we want to use the oldest available SDK for max compatiblity. However 10.4 and older
+# can not build 64bit binaries, making 10.5 the minimum version.   This has been tested 
+# with xcode 3.1 (xcode31_2199_developerdvd.dmg).  It contains the 10.5 SDK and a decent
+# enough gcc to actually compile ioquake3
+
 unset X86_SDK
 unset X86_CFLAGS
 unset X86_LDFLAGS
@@ -122,8 +126,14 @@
 	</plist>
 	" > $DESTDIR/$APPBUNDLE/Contents/Info.plist
 
-lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ
-lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN $BIN_DEDOBJ
+for i in $BIN_OBJ $BIN_DEDOBJ $RENDER_OBJ
+do
+        install_name_tool -change "@rpath/SDL.framework/Versions/A/SDL" "@executable_path/../Frameworks/SDL.framework/Versions/A/SDL" $i
+done
+
+
+cp $BIN_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY
+cp $BIN_DEDOBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN
 cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
 cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
 cp $MPACK_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR/



More information about the quake3-commits mailing list