summaryrefslogtreecommitdiffstats
path: root/build/autoconf/ios.m4
blob: b341cda895cb1b8c5d42ca4577f73c706c359cea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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)
])