1#### iPhoneOS/iOS 2# 3# It takes recent enough Xcode to use following two targets. It shouldn't 4# be a problem by now, but if they don't work, original targets below 5# that depend on manual definition of environment variables should still 6# work... 7# 8my %targets = ( 9 "ios-common" => { 10 template => 1, 11 inherit_from => [ "darwin-common" ], 12 sys_id => "iOS", 13 disable => [ "shared", "async" ], 14 }, 15 "ios-xcrun" => { 16 inherit_from => [ "ios-common" ], 17 # It should be possible to go below iOS 6 and even add -arch armv6, 18 # thus targeting iPhone pre-3GS, but it's assumed to be irrelevant 19 # at this point. 20 CC => "xcrun -sdk iphoneos cc", 21 cflags => add("-arch armv7 -mios-version-min=6.0.0 -fno-common"), 22 asm_arch => 'armv4', 23 perlasm_scheme => "ios32", 24 }, 25 "ios64-xcrun" => { 26 inherit_from => [ "ios-common" ], 27 CC => "xcrun -sdk iphoneos cc", 28 cflags => add("-arch arm64 -mios-version-min=7.0.0 -fno-common"), 29 bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", 30 asm_arch => 'aarch64', 31 perlasm_scheme => "ios64", 32 }, 33 "iossimulator-xcrun" => { 34 inherit_from => [ "ios-common" ], 35 CC => "xcrun -sdk iphonesimulator cc", 36 }, 37# It takes three prior-set environment variables to make it work: 38# 39# CROSS_COMPILE=/where/toolchain/is/usr/bin/ [note ending slash] 40# CROSS_TOP=/where/SDKs/are 41# CROSS_SDK=iPhoneOSx.y.sdk 42# 43# Exact paths vary with Xcode releases, but for couple of last ones 44# they would look like this: 45# 46# CROSS_COMPILE=`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/ 47# CROSS_TOP=`xcode-select --print-path`/Platforms/iPhoneOS.platform/Developer 48# CROSS_SDK=iPhoneOS.sdk 49# 50 "iphoneos-cross" => { 51 inherit_from => [ "ios-common" ], 52 cflags => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common"), 53 }, 54 "ios-cross" => { 55 inherit_from => [ "ios-xcrun" ], 56 CC => "cc", 57 cflags => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK)"), 58 }, 59 "ios64-cross" => { 60 inherit_from => [ "ios64-xcrun" ], 61 CC => "cc", 62 cflags => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK)"), 63 }, 64); 65