1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
#!/bin/sh
CC=gcc-4.0
APPBUNDLE=iowolfsp.app
BINARY=iowolfsp.ub
PKGINFO=APPLIORTCW
ICNS=misc/iortcw.icns
DESTDIR=build/release-darwin-ub
BASEDIR=main
BIN_OBJ="
build/release-darwin-x86_64/iowolfsp.x86_64
build/release-darwin-x86/iowolfsp.x86
build/release-darwin-ppc/iowolfsp.ppc
"
BASE_OBJ="
build/release-darwin-x86_64/$BASEDIR/cgame.sp.x86_64.dylib
build/release-darwin-x86/$BASEDIR/cgame.sp.i386.dylib
build/release-darwin-ppc/$BASEDIR/cgame.sp.ppc.dylib
build/release-darwin-x86_64/$BASEDIR/ui.sp.x86_64.dylib
build/release-darwin-x86/$BASEDIR/ui.sp.i386.dylib
build/release-darwin-ppc/$BASEDIR/ui.sp.ppc.dylib
build/release-darwin-x86_64/$BASEDIR/qagame.sp.x86_64.dylib
build/release-darwin-x86/$BASEDIR/qagame.sp.i386.dylib
build/release-darwin-ppc/$BASEDIR/qagame.sp.ppc.dylib
"
RENDER_OBJ="
build/release-darwin-x86_64/renderer_sp_opengl1_x86_64.dylib
build/release-darwin-x86/renderer_sp_opengl1_i386.dylib
build/release-darwin-ppc/renderer_sp_opengl1_ppc.dylib
build/release-darwin-x86_64/renderer_sp_rend2_x86_64.dylib
build/release-darwin-x86/renderer_sp_rend2_i386.dylib
build/release-darwin-ppc/renderer_sp_rend2_ppc.dylib
"
cd `dirname $0`
if [ ! -f Makefile ]; then
echo "This script must be run from the iowolfsp build directory"
exit 1
fi
Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
# 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 iowolfsp
# For PPC macs, G4's or better are required to run iowolfsp.
unset X86_64_SDK
unset X86_64_CFLAGS
unset X86_SDK
unset X86_CFLAGS
unset PPC_SDK
unset PPC_CFLAGS
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"
fi
if [ -d /Developer/SDKs/MacOSX10.6.sdk ]; then
X86_64_SDK=/Developer/SDKs/MacOSX10.6.sdk
X86_64_CFLAGS="-arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk"
X86_SDK=/Developer/SDKs/MacOSX10.6.sdk
X86_CFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.6.sdk"
fi
if [ -z $X86_64_SDK ] || [ -z $X86_SDK ] || [ -z $PPC_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-macosx.sh' instead of this script.
In order to build a binary with maximum compatibility you must
build on Mac OS X 10.6 and have the MacOSX10.5 and MacOSX10.6
SDKs installed from the Xcode install disk Packages folder."
exit 1
fi
echo "Building X86_64 Client against \"$X86_64_SDK\""
echo "Building X86 Client against \"$X86_SDK\""
echo "Building PPC Client against \"$PPC_SDK\""
echo
if [ ! -d $DESTDIR ]; then
mkdir -p $DESTDIR
fi
# For parallel make on multicore boxes...
NCPU=`sysctl -n hw.ncpu`
# x86_64 client
if [ -d build/release-release-x86_64 ]; then
rm -r build/release-darwin-x86_64
fi
(ARCH=x86_64 CC=gcc-4.0 CFLAGS=$X86_64_CFLAGS make -j$NCPU) || exit 1;
echo;echo
# x86 client
if [ -d build/release-darwin-x86 ]; then
rm -r build/release-darwin-x86
fi
(ARCH=x86 CC=gcc-4.0 CFLAGS=$X86_CFLAGS make -j$NCPU) || exit 1;
echo;echo
# PPC client
if [ -d build/release-darwin-ppc ]; then
rm -r build/release-darwin-ppc
fi
(ARCH=ppc CC=gcc-4.0 CFLAGS=$PPC_CFLAGS make -j$NCPU) || exit 1;
echo;echo
echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1;
fi
if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
fi
cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/iortcw.icns || exit 1;
echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
echo "
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist
PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict>
<key>LSMinimumSystemVersion</key>
<string>10.5.0</string>
<key>LSMinimumSystemVersionByArchitecture</key>
<dict>
<key>i386</key>
<string>10.6.0</string>
<key>x86_64</key>
<string>10.6.0</string>
</dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>$BINARY</string>
<key>CFBundleGetInfoString</key>
<string>iowolfsp $Q3_VERSION</string>
<key>CFBundleIconFile</key>
<string>iortcw.icns</string>
<key>CFBundleIdentifier</key>
<string>org.iortcw</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>iowolfsp</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$Q3_VERSION</string>
<key>CFBundleSignature</key>
<string>$PKGINFO</string>
<key>CFBundleVersion</key>
<string>$Q3_VERSION</string>
<key>NSExtensions</key>
<dict/>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
" > $DESTDIR/$APPBUNDLE/Contents/Info.plist
# Make UB's from previous builds of x86, x86_64 and ppc binaries
lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ
cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
|