q3rally/engine/make-macosx-ub.sh
zturtleman 6afd8f13d2 ioquake3 resync to revision 2398 from 2369.
This is the last ioquake3 revision before ioquake3 changed from subversion to git at the beginning of 2013.

#5808 - Include and use .glsl in source (rend2)
#5812 - Use refdef's coordinates when drawing to screen shadow fbo, and separate depth texture and screen texture coordinates in glsl shaders.
Include Rend2 renderer in MacOSX bundle
Include OpenGL1 and Rend2 renderers in MacOSX UB
Include Rend2 renderer in NSIS installer.
Include OpenGL1 and Rend2 renderers in Loki Setup Installer.
Have NSIS uninstaller delete rend2.
Split light sample into direct and ambient parts when using deluxemaps or per-vertex light vectors.  Fixes #5813.
Fix writting voip data in demos (broke in r2102).
Fix server ignoring client move commands if voip data is included.
Allow changing cl_voip without restarting.
Fix assert failing in CL_ParseVoip() while flipping cl_voip off and on.
Only declare var_SampleToView in lightall shader when it is actually used.
Fix a couple files not ending with a newline.
Fix clients being able to reset their player state and respawn using donedl.
Fix passing arg9 (qvm only), arg10, and arg11 to vmMain for native libs and non-i386 compiled or interpated qvms. (Currently they aren't use in vmMain in game, cgame, or ui.)
Fix passing args[11] to args[15] from vm to engine on ppc64 and sparc64. Some of the args are used by game bot prediction syscalls. May have been causing bugs. Note: This was fixed for x86_64 in r2163.
Fix reconnect command to work after leaving server. (#5794)
Fix dedicated server crashing when using MSG_ReadDelta*, though it only happens if someone modifies the engine. (#5449)
Makefile fixes for OpenBSD by Jonathan Gray. (#5728)
Save all arguments from connect for reconnect command.
Remove unnecessary localhost check from reconnect command.
Support r_srgb even without hardware support.  Also tweak default autoexposure/tonemap settings to look good on both r_srgb 0 and 1.
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
Fix spectator client being switched from follow to free after map_restart if following a client with a higher client number.
Fix client unlinking issue caused by ent->s.number being set to followed client's ps->clientNum after map_restart. Reported by Ensiform.
Changes from Ensiform:
- In G_AddBot, try to allocate clientNum before doing anything else.
- In G_AddBot, don't set SVF_BOT and inuse. It's done in ClientConnect, plus inuse causes ClientDisconnect to be run for no reason.
- In G_AddBot, only set skill in bot useinfo once.
- Avoid using cl->ps.clientNum to check if cl is a bot.
Fix bot skill format so it doesn't always have a space at the beginning of it.
More fixes to the macosx buildsystem.  This removes the SDL Framework and makes use of a SDL library that is position independant.  This also brings back PPC builds into the UB and also as a standa alone build choice.
Have make-macosx.sh require the user to specify which architecture she/he wants to build for and suggest building UB's if the user is unaware of what architectures are
Lets list all the valid options.
2017-07-09 21:21:12 +00:00

203 lines
6.7 KiB
Bash
Executable file

#!/bin/sh
APPBUNDLE=q3rally.app
BINARY=q3rally.ub
DEDBIN=q3rally-server.ub
PKGINFO=APPLQ3R
ICNS=misc/quake3.icns
DESTDIR=build/release-darwin-ub
BASEDIR=baseq3r
MPACKDIR=missionpack
BIN_OBJ="
build/release-darwin-x86_64/q3rally.x86_64
build/release-darwin-i386/q3rally.i386
build/release-darwin-ppc/q3rally.ppc
"
BIN_DEDOBJ="
build/release-darwin-x86_64/q3rally-server.x86_64
build/release-darwin-i386/q3rally-server.i386
build/release-darwin-ppc/q3rally-server.ppc
"
BASE_OBJ="
build/release-darwin-x86_64/$BASEDIR/cgamex86_64.dylib
build/release-darwin-i386/$BASEDIR/cgamei386.dylib
build/release-darwin-ppc/$BASEDIR/cgameppc.dylib
build/release-darwin-x86_64/$BASEDIR/uix86_64.dylib
build/release-darwin-i386/$BASEDIR/uii386.dylib
build/release-darwin-ppc/$BASEDIR/uippc.dylib
build/release-darwin-x86_64/$BASEDIR/qagamex86_64.dylib
build/release-darwin-i386/$BASEDIR/qagamei386.dylib
build/release-darwin-ppc/$BASEDIR/qagameppc.dylib
assets0.pk3
"
RENDER_OBJ="
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_smp_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_opengl1_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_smp_ppc.dylib
build/release-darwin-x86_64/renderer_rend2_x86_64.dylib
build/release-darwin-i386/renderer_rend2_i386.dylib
build/release-darwin-ppc/renderer_rend2_ppc.dylib
"
cd `dirname $0`
if [ ! -f Makefile ]; then
echo "This script must be run from the Q3Rally build directory"
exit 1
fi
Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
# We only care if we're >= 10.4, not if we're specifically Tiger.
# "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. 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
# For PPC macs, G4's or better are required to run ioquake3.
unset X86_64_SDK
unset X86_64_CFLAGS
unset X86_64_LDFLAGS
unset X86_SDK
unset X86_CFLAGS
unset X86_LDFLAGS
unset PPC_64_SDK
unset PPC_CFLAGS
unset PPC_LDFLAGS
if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
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"
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 \
-DMAC_OS_X_VERSION_MIN_REQUIRED=1050"
X86_LDFLAGS=" -mmacosx-version-min=10.5"
PPC_SDK=/Developer/SDKs/MacOSX10.5.sdk
PPC_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk \
-DMAC_OS_X_VERSION_MIN_REQUIRED=1050"
PPC_LDFLAGS=" -mmacosx-version-min=10.5"
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' instead of this script."
exit 1
fi
echo "Building X86_64 Client/Dedicated Server against \"$X86_64_SDK\""
echo "Building X86 Client/Dedicated Server against \"$X86_SDK\""
echo "Building PPC Client/Dedicated Server against \"$PPC_SDK\""
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.5 using Xcode 3.1 and have the MacOSX10.5
SDKs installed from the Xcode install disk Packages folder."
sleep 3
fi
if [ ! -d $DESTDIR ]; then
mkdir -p $DESTDIR
fi
# For parallel make on multicore boxes...
NCPU=`sysctl -n hw.ncpu`
# x86_64 client and server
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 LDFLAGS=$X86_64_LDFLAGS make -j$NCPU) || exit 1;
echo;echo
# i386 client and server
if [ -d build/release-darwin-i386 ]; then
rm -r build/release-darwin-i386
fi
(ARCH=i386 CC=gcc-4.0 CFLAGS=$X86_CFLAGS LDFLAGS=$X86_LDFLAGS make -j$NCPU) || exit 1;
echo;echo
# PPC client and server
if [ -d build/release-darwin-ppc ]; then
rm -r build/release-darwin-ppc
fi
(ARCH=ppc CC=gcc-4.0 CFLAGS=$PPC_CFLAGS LDFLAGS=$PPC_LDFLAGS 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/MacOS/$MPACKDIR ]; then
mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR || exit 1;
fi
if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then
mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources
fi
cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/q3rally.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>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>$BINARY</string>
<key>CFBundleGetInfoString</key>
<string>Q3Rally $Q3_VERSION</string>
<key>CFBundleIconFile</key>
<string>q3rally.icns</string>
<key>CFBundleIdentifier</key>
<string>org.q3rally.q3rally</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Q3Rally</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 i386, x86_64 and ppc binaries
lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ
lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN $BIN_DEDOBJ
cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/
cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/