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 # 8 my %targets = ( 9 "ios-common" => { 10 template => 1, 11 inherit_from => [ "darwin-common" ], 12 sys_id => "iOS", 13 disable => [ "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