| #### iPhoneOS/iOS |
| # |
| # `xcrun` targets require an Xcode that can determine the correct C compiler via |
| # `xcrun -sdk iphoneos`. This has been standard in Xcode for a while now - any recent |
| # Xcode should do. If the Xcode on the build machine doesn't support this then use |
| # the legacy targets at the end of this file. These require manual definition of |
| # environment variables. |
| # |
| my %targets = ( |
| "ios-common" => { |
| template => 1, |
| inherit_from => [ "darwin-common" ], |
| sys_id => "iOS", |
| disable => [ "async" ], |
| }, |
| "ios-xcrun" => { |
| inherit_from => [ "ios-common" ], |
| # It should be possible to go below iOS 6 and even add -arch armv6, |
| # thus targeting iPhone pre-3GS, but it's assumed to be irrelevant |
| # at this point. |
| CC => "xcrun -sdk iphoneos cc", |
| cflags => add("-arch armv7 -fno-common"), |
| asm_arch => 'armv4', |
| perlasm_scheme => "ios32", |
| }, |
| "ios64-xcrun" => { |
| inherit_from => [ "ios-common" ], |
| CC => "xcrun -sdk iphoneos cc", |
| cflags => add("-arch arm64 -fno-common"), |
| bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", |
| asm_arch => 'aarch64', |
| perlasm_scheme => "ios64", |
| }, |
| "iossimulator-xcrun" => { |
| inherit_from => [ "ios-common" ], |
| CC => "xcrun -sdk iphonesimulator cc", |
| }, |
| "iossimulator-arm64-xcrun" => { |
| inherit_from => [ "ios-common" ], |
| CC => "xcrun -sdk iphonesimulator cc", |
| cflags => add("-arch arm64 -fno-common"), |
| bn_ops => "SIXTY_FOUR_BIT_LONG", |
| asm_arch => 'aarch64', |
| perlasm_scheme => "ios64", |
| }, |
| "iossimulator-i386-xcrun" => { |
| inherit_from => [ "ios-common" ], |
| CC => "xcrun -sdk iphonesimulator cc", |
| cflags => add("-arch i386 -fno-common"), |
| bn_ops => "BN_LLONG", |
| asm_arch => 'x86', |
| perlasm_scheme => "macosx", |
| }, |
| "iossimulator-x86_64-xcrun" => { |
| inherit_from => [ "ios-common" ], |
| CC => "xcrun -sdk iphonesimulator cc", |
| cflags => add("-arch x86_64 -fno-common"), |
| bn_ops => "SIXTY_FOUR_BIT_LONG", |
| asm_arch => 'x86_64', |
| perlasm_scheme => "macosx", |
| }, |
| # It takes three prior-set environment variables to make it work: |
| # |
| # CROSS_COMPILE=/where/toolchain/is/usr/bin/ [note ending slash] |
| # CROSS_TOP=/where/SDKs/are |
| # CROSS_SDK=iPhoneOSx.y.sdk |
| # |
| # Exact paths vary with Xcode releases, but for couple of last ones |
| # they would look like this: |
| # |
| # CROSS_COMPILE=`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/ |
| # CROSS_TOP=`xcode-select --print-path`/Platforms/iPhoneOS.platform/Developer |
| # CROSS_SDK=iPhoneOS.sdk |
| # |
| "iphoneos-cross" => { |
| inherit_from => [ "ios-common" ], |
| cflags => add("-isysroot \"\$(CROSS_TOP)/SDKs/\$(CROSS_SDK)\" -fno-common"), |
| }, |
| "ios-cross" => { |
| inherit_from => [ "ios-xcrun" ], |
| CC => "cc", |
| cflags => add("-isysroot \"\$(CROSS_TOP)/SDKs/\$(CROSS_SDK)\""), |
| }, |
| "ios64-cross" => { |
| inherit_from => [ "ios64-xcrun" ], |
| CC => "cc", |
| cflags => add("-isysroot \"\$(CROSS_TOP)/SDKs/\$(CROSS_SDK)\""), |
| }, |
| ); |