| #!/bin/bash |
| |
| F="configure-iphone" |
| |
| if test "$*" = "--help" -o "$*" = "-h"; then |
| echo "$F [OPTIONS]" |
| echo "" |
| echo "where:" |
| echo " OPTIONS Other options that will be passed directly to" |
| echo " ./aconfigure script. Run ./aconfigure --help" |
| echo " for more info." |
| echo "" |
| echo "Environment variables:" |
| echo " IPHONESDK Optionally specify which SDK to use. Value is the full " |
| echo " path of the SDK. By default, the latest SDK installed" |
| echo " will be used." |
| echo " CC Optionally specify the path of the ARM cross compiler" |
| echo " to use. By default, the compiler is deduced from the" |
| echo " SDK." |
| echo " ARCH Optional flags to specify target architecture, e.g." |
| echo " ARCH='-arch armv6'. Default is armv7." |
| echo "" |
| exit 0 |
| fi |
| |
| # Set the main iPhone developer directory, if not set |
| if test "x${DEVPATH}" = "x"; then |
| DEVPATH=/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer |
| if test ! -d $DEVPATH; then |
| DEVPATH=/Developer/Platforms/iPhoneOS.platform/Developer |
| fi |
| echo "$F: DEVPATH is not specified, using ${DEVPATH}" |
| fi |
| |
| # Make sure $DEVPATH directory exist |
| if test ! -d $DEVPATH; then |
| echo "$F error: directory $DEVPATH does not exist. Please install iPhone development kit" |
| exit 1 |
| fi |
| |
| # Choose SDK version to use |
| if test "$IPHONESDK" = ""; then |
| # If IPHONESDK is not set, use the latest one |
| for f in `ls $DEVPATH/SDKs/`; do echo $f | sed 's/\(.sdk\)//'; done | sort | tail -1 > tmpsdkname |
| IPHONESDK=`cat tmpsdkname`.sdk |
| rm -f tmpsdkname |
| SDKPATH=${DEVPATH}/SDKs/${IPHONESDK} |
| echo "$F: IPHONESDK is not specified, choosing ${IPHONESDK}" |
| elif test -d ${IPHONESDK}; then |
| # .. else if IPHONESDK is set and it points to a valid path, just use it |
| SDKPATH=${IPHONESDK} |
| else |
| # .. else assume the SDK name is used. |
| SDKPATH=${DEVPATH}/SDKs/${IPHONESDK} |
| fi |
| |
| # Test the SDK directory |
| if test ! -d ${SDKPATH}/usr/include; then |
| echo "$F error: unable to find valid iPhone SDK in ${SDKPATH}" |
| exit 1 |
| fi |
| |
| # Default CFLAGS if it's not specified |
| if test "$CFLAGS" = ""; then |
| CFLAGS="-O2 -Wno-unused-label" |
| fi |
| |
| # Default LDFLAGS if it's not specified |
| if test "$LDFLAGS" = ""; then |
| LDFLAGS="-O2" |
| fi |
| |
| # Test the toolchain directory |
| TCPATH="${DEVPATH}/../../../Toolchains/XcodeDefault.xctoolchain" |
| if test ! -d ${TCPATH}/usr/bin; then |
| TCPATH="${DEVPATH}" |
| fi |
| |
| # Determine which gcc for this SDK. Binaries should have the |
| # full path as it's not normally in user's PATH |
| |
| if test "${CC}" = ""; then |
| # Try to use clang if available |
| ccpath="${TCPATH}/usr/bin/clang" |
| # Next, try to use llvm-gcc |
| gccpath="${DEVPATH}/usr/bin/llvm-gcc" |
| if test -e ${ccpath}; then |
| export CC="${ccpath}" |
| elif test -e ${gccpath}; then |
| export CC="${gccpath}" |
| else |
| for archpath in `ls -d ${SDKPATH}/usr/lib/gcc/arm-apple-darwin*`; do |
| archname=`basename ${archpath}` |
| for gccver in `ls ${archpath}`; do |
| gccpath="${DEVPATH}/usr/bin/${archname}-gcc-${gccver}" |
| if test -e ${gccpath}; then |
| export CC="${gccpath}" |
| fi |
| done |
| done |
| fi |
| if test ! "${CC}" = ""; then |
| echo "$F: CC is not specified, choosing ${CC}" |
| fi |
| fi |
| |
| if test "${CC}" = ""; then |
| echo "$F error: unable to find gcc for ${IPHONESDK}. If you think you have the right gcc, set the full path in CC environment variable." |
| exit 1 |
| fi |
| |
| if test "${ARCH}" = ""; then |
| export ARCH="-arch armv7" |
| echo "$F: ARCH is not specified, choosing ${ARCH}" |
| fi |
| |
| # Set CXX if not set |
| if test "${CXX}" = ""; then |
| export CXX=`echo ${CC} | sed 's/gcc/g++/'` |
| echo "$F: CXX is not specified, using ${CXX}" |
| fi |
| |
| # Other settings to feed to configure script. |
| #ARCH="-arch armv6" |
| export CFLAGS="${CFLAGS} -DPJ_SDK_NAME=\"\\\"`basename $SDKPATH`\\\"\" ${ARCH} -isysroot ${SDKPATH}" |
| export LDFLAGS="${LDFLAGS} ${ARCH} -isysroot ${SDKPATH} -framework AudioToolbox -framework Foundation" |
| export AR="${TCPATH}/usr/bin/libtool -static -o" |
| export AR_FLAGS=" " |
| export RANLIB="echo ranlib" |
| # Use gcc -E as preprocessor instead of cpp, since cpp will find the |
| # header files in standard /usr/include instead of in isysroot |
| export CPP="${CC} ${ARCH} -E -isysroot ${SDKPATH}" |
| |
| # Print settings |
| if test "1" = "1"; then |
| echo "$F: calling ./aconfigure with env vars:" |
| echo " CC = ${CC}" |
| echo " CXX = ${CXX}" |
| echo " SDKPATH = ${SDKPATH}" |
| echo " CFLAGS = ${CFLAGS}" |
| echo " LDFLAGS = ${LDFLAGS}" |
| echo " AR = ${AR}" |
| echo " RANLIB = ${RANLIB}" |
| fi |
| |
| # And finally invoke the configure script itself |
| ./aconfigure --host=arm-apple-darwin9 --disable-sdl $* |
| |
| if test "$?" = "0"; then |
| echo "Done configuring for `basename $SDKPATH`" |
| echo "" |
| fi |
| |