#### 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 => [ "shared", "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)\""), }, );