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 => [ "engine", "async" ], 14 }, 15 "ios-xcrun" => { 16 inherit_from => [ "ios-common", asm("armv4_asm") ], 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 perlasm_scheme => "ios32", 23 }, 24 "ios64-xcrun" => { 25 inherit_from => [ "ios-common", asm("aarch64_asm") ], 26 CC => "xcrun -sdk iphoneos cc", 27 cflags => add("-arch arm64 -mios-version-min=7.0.0 -fno-common"), 28 bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", 29 perlasm_scheme => "ios64", 30 }, 31 "iossimulator-xcrun" => { 32 inherit_from => [ "ios-common" ], 33 CC => "xcrun -sdk iphonesimulator cc", 34 }, 35# It takes three prior-set environment variables to make it work: 36# 37# CROSS_COMPILE=/where/toolchain/is/usr/bin/ [note ending slash] 38# CROSS_TOP=/where/SDKs/are 39# CROSS_SDK=iPhoneOSx.y.sdk 40# 41# Exact paths vary with Xcode releases, but for couple of last ones 42# they would look like this: 43# 44# CROSS_COMPILE=`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/ 45# CROSS_TOP=`xcode-select --print-path`/Platforms/iPhoneOS.platform/Developer 46# CROSS_SDK=iPhoneOS.sdk 47# 48 "iphoneos-cross" => { 49 inherit_from => [ "ios-common" ], 50 cflags => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common"), 51 }, 52 "ios-cross" => { 53 inherit_from => [ "ios-xcrun" ], 54 CC => "cc", 55 cflags => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK)"), 56 }, 57 "ios64-cross" => { 58 inherit_from => [ "ios64-xcrun" ], 59 CC => "cc", 60 cflags => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK)"), 61 }, 62); 63