summaryrefslogtreecommitdiffstats
path: root/build/autoconf/ios.m4
diff options
context:
space:
mode:
Diffstat (limited to 'build/autoconf/ios.m4')
-rw-r--r--build/autoconf/ios.m4108
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)
+])