diff options
Diffstat (limited to 'build/autoconf/ios.m4')
-rw-r--r-- | build/autoconf/ios.m4 | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/build/autoconf/ios.m4 b/build/autoconf/ios.m4 new file mode 100644 index 000000000..b341cda89 --- /dev/null +++ b/build/autoconf/ios.m4 @@ -0,0 +1,108 @@ +dnl This Source Code Form is subject to the terms of the Mozilla Public +dnl License, v. 2.0. If a copy of the MPL was not distributed with this +dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. + +AC_DEFUN([MOZ_IOS_PATH_PROG], +[ +changequote({,}) +_prog_name=ifelse($2, {}, `echo $1 | tr "[:upper:]" "[:lower:]"`, $2) +changequote([,]) +AC_CACHE_CHECK([for $_prog_name in iOS SDK], +ac_cv_ios_path_$1, +[ +_path=`xcrun --sdk $ios_sdk --find $_prog_name 2>/dev/null` +_res=$? +if test $_res -ne 0; then + AC_MSG_ERROR([Could not find '$_prog_name' in the iOS SDK]) +fi +ac_cv_ios_path_$1=$_path +]) +$1="${ac_cv_ios_path_$1}$3" +]) + +AC_DEFUN([MOZ_IOS_SDK], +[ + +MOZ_ARG_WITH_STRING(ios-sdk, +[ --with-ios-sdk=TYPE + Type of iOS SDK to use (iphonesimulator, iphoneos) + and optionally version (like iphoneos8.2)], + ios_sdk=$withval) + +MOZ_ARG_ENABLE_STRING(ios-target, + [ --enable-ios-target=VER (default=8.0) + Set the minimum iOS version needed at runtime], + [_IOS_TARGET=$enableval]) +_IOS_TARGET_DEFAULT=8.0 + +case "$target" in +arm*-apple-darwin*) + if test -z "$ios_sdk" -o "$ios_sdk" = "yes"; then + ios_sdk=iphoneos + fi + case "$ios_sdk" in + iphoneos*) + ios_target_arg="-miphoneos-version-min" + ;; + *) + AC_MSG_ERROR([Only 'iphoneos' SDKs are valid when targeting iOS device, don't know what to do with '$ios_sdk'.]) + ;; + esac + ;; +*-apple-darwin*) + ios_target_arg="-mios-simulator-version-min" + case "$ios_sdk" in + # Empty SDK is okay, this might be an OS X desktop build. + ""|iphonesimulator*) + ;; + # Default to iphonesimulator + yes) + ios_sdk=iphonesimulator + ;; + *) + AC_MSG_ERROR([Only 'iphonesimulator' SDKs are valid when targeting iOS simulator.]) + ;; + esac + ;; +esac + + +if test -n "$ios_sdk"; then + if test -z "$_IOS_TARGET"; then + _IOS_TARGET=$_IOS_TARGET_DEFAULT + ios_target_arg="${ios_target_arg}=${_IOS_TARGET}" + fi + # Ensure that xcrun knows where this SDK is. + ios_sdk_path=`xcrun --sdk $ios_sdk --show-sdk-path 2>/dev/null` + _ret=$? + if test $_ret -ne 0; then + AC_MSG_ERROR([iOS SDK '$ios_sdk' could not be found.]) + fi + MOZ_IOS=1 + export HOST_CC=clang + export HOST_CXX=clang++ + # Add isysroot, arch, and ios target arguments + case "$target_cpu" in + arm*) + ARGS="-arch armv7" + ;; + *) + # Unfortunately simulator builds need this. + export CROSS_COMPILE=1 + ;; + esac + ARGS=" $ARGS -isysroot $ios_sdk_path $ios_target_arg" + # Now find our tools + MOZ_IOS_PATH_PROG(CC, clang, $ARGS) + MOZ_IOS_PATH_PROG(CXX, clang++, $ARGS) + export CPP="$CC -E" + export LD="$CXX" + MOZ_IOS_PATH_PROG(AR) + MOZ_IOS_PATH_PROG(AS, as, $ARGS) + MOZ_IOS_PATH_PROG(OTOOL) + MOZ_IOS_PATH_PROG(STRIP) + export PKG_CONFIG_PATH=${ios_sdk_path}/usr/lib/pkgconfig/ +fi + +AC_SUBST(MOZ_IOS) +]) |