mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-14 00:21:16 +00:00
* Update the Mac OS X build process (again)
* Allow BUILD_* env vars to be passed to make to build only specific components
This commit is contained in:
parent
4c3b7def84
commit
cabf9b74f9
2 changed files with 148 additions and 110 deletions
48
Makefile
48
Makefile
|
@ -23,11 +23,21 @@ ifeq ($(COMPILE_PLATFORM),mingw32)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifndef BUILD_CLIENT
|
||||||
BUILD_CLIENT =
|
BUILD_CLIENT =
|
||||||
|
endif
|
||||||
|
ifndef BUILD_CLIENT_SMP
|
||||||
BUILD_CLIENT_SMP =
|
BUILD_CLIENT_SMP =
|
||||||
|
endif
|
||||||
|
ifndef BUILD_SERVER
|
||||||
BUILD_SERVER =
|
BUILD_SERVER =
|
||||||
|
endif
|
||||||
|
ifndef BUILD_GAME_SO
|
||||||
BUILD_GAME_SO =
|
BUILD_GAME_SO =
|
||||||
|
endif
|
||||||
|
ifndef BUILD_GAME_QVM
|
||||||
BUILD_GAME_QVM =
|
BUILD_GAME_QVM =
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(PLATFORM),darwin)
|
ifneq ($(PLATFORM),darwin)
|
||||||
BUILD_CLIENT_SMP = 0
|
BUILD_CLIENT_SMP = 0
|
||||||
|
@ -279,49 +289,13 @@ else # ifeq Linux
|
||||||
|
|
||||||
ifeq ($(PLATFORM),darwin)
|
ifeq ($(PLATFORM),darwin)
|
||||||
HAVE_VM_COMPILED=true
|
HAVE_VM_COMPILED=true
|
||||||
BASE_CFLAGS=
|
|
||||||
CLIENT_LDFLAGS=
|
CLIENT_LDFLAGS=
|
||||||
LDFLAGS=
|
|
||||||
OPTIMIZE=
|
OPTIMIZE=
|
||||||
|
|
||||||
# building the QVMs on MacOSX is broken, atm.
|
# building the QVMs on MacOSX is broken, atm.
|
||||||
BUILD_GAME_QVM=0
|
BUILD_GAME_QVM=0
|
||||||
|
|
||||||
ifeq ($(BUILD_MACOSX_UB),ppc)
|
BASE_CFLAGS = -Wall -Wimplicit -Wstrict-prototypes
|
||||||
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
|
|
||||||
|
|
||||||
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)
|
ifeq ($(ARCH),ppc)
|
||||||
OPTIMIZE += -faltivec -O3
|
OPTIMIZE += -faltivec -O3
|
||||||
|
|
|
@ -11,11 +11,11 @@ Q3_VERSION=`grep "\#define Q3_VERSION" code/qcommon/q_shared.h | \
|
||||||
sed -e 's/.*".* \([^ ]*\)"/\1/'`;
|
sed -e 's/.*".* \([^ ]*\)"/\1/'`;
|
||||||
|
|
||||||
BIN_OBJ="
|
BIN_OBJ="
|
||||||
build/release-darwin-ppc/ioquake3.ppc
|
build/release-darwin-ppc/ioquake3-smp.ppc
|
||||||
build/release-darwin-i386/ioquake3.i386
|
build/release-darwin-i386/ioquake3-smp.i386
|
||||||
"
|
"
|
||||||
BIN_DEDOBJ="
|
BIN_DEDOBJ="
|
||||||
build/release-darwin-ppc/ioq3ded.ppc
|
build/release-darwin-ub/ioq3ded.ppc
|
||||||
build/release-darwin-i386/ioq3ded.i386
|
build/release-darwin-i386/ioq3ded.i386
|
||||||
"
|
"
|
||||||
BASE_OBJ="
|
BASE_OBJ="
|
||||||
|
@ -38,78 +38,141 @@ if [ ! -f Makefile ]; then
|
||||||
echo "This script must be run from the ioquake3 build directory";
|
echo "This script must be run from the ioquake3 build directory";
|
||||||
fi
|
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
|
# we want to use the oldest available SDK for max compatiblity
|
||||||
unset PPC_SDK_DIR
|
unset PPC_CLIENT_SDK
|
||||||
unset X86_SDK_DIR
|
PPC_CLIENT_CC=gcc
|
||||||
unset PPC_SDK_INC
|
unset PPC_CLIENT_CFLAGS
|
||||||
unset X86_SDK_INC
|
unset PPC_CLIENT_LDFLAGS
|
||||||
unset PPC_SDK_LIB
|
unset PPC_SERVER_SDK
|
||||||
unset X86_SDK_LIB
|
unset PPC_SERVER_CFLAGS
|
||||||
unset PPC_SDK_OPENAL_DLOPEN
|
unset PPC_SERVER_LDFLAGS
|
||||||
for availsdks in $(find /Developer/SDKs -type d -maxdepth 1 -mindepth 1 -name "MacOSX*" -exec basename {} \; | sort -r)
|
unset X86_SDK
|
||||||
do
|
unset X86_CFLAGS
|
||||||
case "$availsdks" in
|
unset X86_LDFLAGS
|
||||||
'MacOSX10.5.sdk')
|
if [ -d /Developer/SDKs/MacOSX10.5.sdk ]; then
|
||||||
PPC_SDK_DIR=/Developer/SDKs/MacOSX10.5.sdk
|
PPC_CLIENT_SDK=/Developer/SDKs/MacOSX10.5.sdk
|
||||||
X86_SDK_DIR=/Developer/SDKs/MacOSX10.5.sdk
|
PPC_CLIENT_CC=gcc-4.0
|
||||||
PPC_SDK_INC=usr/lib/gcc/powerpc-apple-darwin9/4.0.1/include
|
PPC_CLIENT_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk \
|
||||||
X86_SDK_INC=usr/lib/gcc/i686-apple-darwin9/4.0.1/include
|
-DMAC_OS_X_VERSION_MIN_REQUIRED=1050"
|
||||||
PPC_SDK_LIB=usr/lib/gcc/powerpc-apple-darwin9/4.0.1
|
PPC_CLIENT_LDFLAGS="-arch ppc \
|
||||||
X86_SDK_LIB=usr/lib/gcc/i686-apple-darwin9/4.0.1
|
-isysroot /Developer/SDKs/MacOSX10.5.sdk \
|
||||||
PPC_SDK_OPENAL_DLOPEN=0
|
-mmacosx-version-min=10.5"
|
||||||
;;
|
PPC_SERVER_SDK=/Developer/SDKs/MacOSX10.5.sdk
|
||||||
'MacOSX10.4u.sdk')
|
PPC_SERVER_CFLAGS=$PPC_CLIENT_CFLAGS
|
||||||
PPC_SDK_DIR=/Developer/SDKs/MacOSX10.4u.sdk
|
PPC_SERVER_LDFLAGS=$PPC_CLIENT_LDFLAGS
|
||||||
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
|
|
||||||
|
|
||||||
if [ -z $PPC_SDK_DIR ] || [ -z $X86_SDK_DIR ]; then
|
X86_SDK=/Developer/SDKs/MacOSX10.5.sdk
|
||||||
echo "Error detecting compatible Mac OS X SDK."
|
X86_CFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk \
|
||||||
exit 1;
|
-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
|
fi
|
||||||
|
|
||||||
if [ $PPC_SDK_DIR != "/Developer/SDKs/MacOSX10.3.9.sdk" ]; then
|
if [ -d /Developer/SDKs/MacOSX10.4u.sdk ]; then
|
||||||
echo "WARNING: missing MacOS10.3.9.sdk. Resulting binary may not be compatible with Mac OS X 10.3"
|
PPC_CLIENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk
|
||||||
sleep 1
|
PPC_CLIENT_CC=gcc-4.0
|
||||||
fi
|
PPC_CLIENT_CFLAGS="-arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk \
|
||||||
if [ $X86_SDK_DIR != "/Developer/SDKs/MacOSX10.4u.sdk" ]; then
|
-DMAC_OS_X_VERSION_MIN_REQUIRED=1040"
|
||||||
echo "WARNING: missing MacOS10.4u.sdk. Resulting binary may not be compatible with Mac OS X 10.4"
|
PPC_CLIENT_LDFLAGS="-arch ppc \
|
||||||
sleep 1
|
-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
|
fi
|
||||||
|
|
||||||
echo "Using $PPC_SDK_DIR for PowerPC"
|
if [ -d /Developer/SDKs/MacOSX10.3.9.sdk ] && [ $TIGERHOST ]; then
|
||||||
echo "Using $X86_SDK_DIR for Intel"
|
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
|
||||||
|
|
||||||
(USE_OPENAL_DLOPEN=$PPC_SDK_OPENAL_DLOPEN \
|
if [ -d /Developer/SDKs/MacOSX10.2.8.sdk ] && [ -x /usr/bin/gcc-3.3 ] && [ $TIGERHOST ]; then
|
||||||
MACOSX_SDK_DIR=$PPC_SDK_DIR \
|
PPC_CLIENT_SDK=/Developer/SDKs/MacOSX10.2.8.sdk
|
||||||
MACOSX_SDK_INC=$PPC_SDK_INC \
|
PPC_CLIENT_CC=gcc-3.3
|
||||||
MACOSX_SDK_LIB=$PPC_SDK_LIB BUILD_MACOSX_UB=ppc make \
|
PPC_CLIENT_CFLAGS="-arch ppc \
|
||||||
&&
|
-nostdinc \
|
||||||
MACOSX_SDK_DIR=$X86_SDK_DIR \
|
-F/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks \
|
||||||
MACOSX_SDK_INC=$X86_SDK_INC \
|
-I/Developer/SDKs/MacOSX10.2.8.sdk/usr/include/gcc/darwin/3.3 \
|
||||||
MACOSX_SDK_LIB=$X86_SDK_LIB BUILD_MACOSX_UB=i386 make ) || exit 1
|
-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
|
||||||
|
|
||||||
|
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"
|
echo "Creating .app bundle $DESTDIR/$APPBUNDLE"
|
||||||
if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
|
if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then
|
||||||
|
@ -162,6 +225,7 @@ echo "
|
||||||
|
|
||||||
lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ
|
lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ
|
||||||
lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN $BIN_DEDOBJ
|
lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN $BIN_DEDOBJ
|
||||||
|
rm $DESTDIR/ioq3ded.ppc
|
||||||
cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
|
cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/
|
||||||
cp $MPACK_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR/
|
cp $MPACK_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR/
|
||||||
cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
|
cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/
|
||||||
|
|
Loading…
Reference in a new issue