1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2014 The Chromium Authors 2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 4*8975f5c5SAndroid Build Coastguard Worker 5*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/apple/mobile_config.gni") 6*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/ios/config.gni") 7*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/ios/ios_sdk.gni") 8*8975f5c5SAndroid Build Coastguard Workerimport("//build/toolchain/apple/toolchain.gni") 9*8975f5c5SAndroid Build Coastguard Workerimport("//build/toolchain/rbe.gni") 10*8975f5c5SAndroid Build Coastguard Workerimport("//build/toolchain/siso.gni") 11*8975f5c5SAndroid Build Coastguard Workerimport("//build/toolchain/toolchain.gni") 12*8975f5c5SAndroid Build Coastguard Workerimport("//build_overrides/build.gni") 13*8975f5c5SAndroid Build Coastguard Worker 14*8975f5c5SAndroid Build Coastguard Worker# This is included by reference in the //build/config/compiler config that 15*8975f5c5SAndroid Build Coastguard Worker# is applied to all targets. It is here to separate out the logic. 16*8975f5c5SAndroid Build Coastguard Workerconfig("compiler") { 17*8975f5c5SAndroid Build Coastguard Worker # These flags are shared between the C compiler and linker. 18*8975f5c5SAndroid Build Coastguard Worker common_flags = [] 19*8975f5c5SAndroid Build Coastguard Worker 20*8975f5c5SAndroid Build Coastguard Worker # CPU architecture. 21*8975f5c5SAndroid Build Coastguard Worker if (current_cpu == "x64") { 22*8975f5c5SAndroid Build Coastguard Worker triplet_cpu = "x86_64" 23*8975f5c5SAndroid Build Coastguard Worker } else if (current_cpu == "x86") { 24*8975f5c5SAndroid Build Coastguard Worker triplet_cpu = "i386" 25*8975f5c5SAndroid Build Coastguard Worker } else if (current_cpu == "arm" || current_cpu == "armv7") { 26*8975f5c5SAndroid Build Coastguard Worker triplet_cpu = "armv7" 27*8975f5c5SAndroid Build Coastguard Worker } else if (current_cpu == "arm64") { 28*8975f5c5SAndroid Build Coastguard Worker triplet_cpu = "arm64" 29*8975f5c5SAndroid Build Coastguard Worker } else { 30*8975f5c5SAndroid Build Coastguard Worker assert(false, "unsupported cpu: $current_cpu") 31*8975f5c5SAndroid Build Coastguard Worker } 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Worker # Environment. 34*8975f5c5SAndroid Build Coastguard Worker if (target_environment == "simulator") { 35*8975f5c5SAndroid Build Coastguard Worker triplet_environment = "-simulator" 36*8975f5c5SAndroid Build Coastguard Worker } else if (target_environment == "device") { 37*8975f5c5SAndroid Build Coastguard Worker triplet_environment = "" 38*8975f5c5SAndroid Build Coastguard Worker } else if (target_environment == "catalyst") { 39*8975f5c5SAndroid Build Coastguard Worker triplet_environment = "-macabi" 40*8975f5c5SAndroid Build Coastguard Worker } else { 41*8975f5c5SAndroid Build Coastguard Worker assert(false, "unsupported environment: $target_environment") 42*8975f5c5SAndroid Build Coastguard Worker } 43*8975f5c5SAndroid Build Coastguard Worker 44*8975f5c5SAndroid Build Coastguard Worker # OS. 45*8975f5c5SAndroid Build Coastguard Worker triplet_os = "apple-ios" 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker # Set target. 48*8975f5c5SAndroid Build Coastguard Worker common_flags = [ 49*8975f5c5SAndroid Build Coastguard Worker "-target", 50*8975f5c5SAndroid Build Coastguard Worker "$triplet_cpu-$triplet_os$ios_deployment_target$triplet_environment", 51*8975f5c5SAndroid Build Coastguard Worker ] 52*8975f5c5SAndroid Build Coastguard Worker 53*8975f5c5SAndroid Build Coastguard Worker # This is here so that all files get recompiled after an Xcode update. 54*8975f5c5SAndroid Build Coastguard Worker # (defines are passed via the command line, and build system rebuild things 55*8975f5c5SAndroid Build Coastguard Worker # when their commandline changes). Nothing should ever read this define. 56*8975f5c5SAndroid Build Coastguard Worker defines = [ "CR_XCODE_VERSION=$xcode_version" ] 57*8975f5c5SAndroid Build Coastguard Worker 58*8975f5c5SAndroid Build Coastguard Worker asmflags = common_flags 59*8975f5c5SAndroid Build Coastguard Worker cflags = common_flags 60*8975f5c5SAndroid Build Coastguard Worker swiftflags = common_flags 61*8975f5c5SAndroid Build Coastguard Worker 62*8975f5c5SAndroid Build Coastguard Worker swiftflags += [ 63*8975f5c5SAndroid Build Coastguard Worker "-swift-version", 64*8975f5c5SAndroid Build Coastguard Worker "5", 65*8975f5c5SAndroid Build Coastguard Worker ] 66*8975f5c5SAndroid Build Coastguard Worker 67*8975f5c5SAndroid Build Coastguard Worker cflags_objcc = [ 68*8975f5c5SAndroid Build Coastguard Worker # When using -std=c++20 or higher, clang automatically returns true for 69*8975f5c5SAndroid Build Coastguard Worker # `__has_feature(modules)` as it enables cxx modules. This is problematic 70*8975f5c5SAndroid Build Coastguard Worker # because Objective-C code uses this to detect whether `@import` can be 71*8975f5c5SAndroid Build Coastguard Worker # used (this feature is also named modules). 72*8975f5c5SAndroid Build Coastguard Worker # 73*8975f5c5SAndroid Build Coastguard Worker # Since Chromium does not yet enable cxx modules, nor clang modules, 74*8975f5c5SAndroid Build Coastguard Worker # force disable the cxx modules, which cause `__has_features(modules)` 75*8975f5c5SAndroid Build Coastguard Worker # to return false unless clang modules are explicitly enabled. 76*8975f5c5SAndroid Build Coastguard Worker "-Xclang", 77*8975f5c5SAndroid Build Coastguard Worker "-fno-cxx-modules", 78*8975f5c5SAndroid Build Coastguard Worker ] 79*8975f5c5SAndroid Build Coastguard Worker if (ios_chrome_generate_order_file) { 80*8975f5c5SAndroid Build Coastguard Worker cflags_objcc += [ "-fsanitize-coverage=func,trace-pc-guard" ] 81*8975f5c5SAndroid Build Coastguard Worker } 82*8975f5c5SAndroid Build Coastguard Worker 83*8975f5c5SAndroid Build Coastguard Worker ldflags = common_flags 84*8975f5c5SAndroid Build Coastguard Worker 85*8975f5c5SAndroid Build Coastguard Worker # This is on by default in ld64 for our deployment target, but not yet 86*8975f5c5SAndroid Build Coastguard Worker # in ld64.lld. Force it on. 87*8975f5c5SAndroid Build Coastguard Worker if (ios_deployment_target != "11.0" && ios_deployment_target != "12.0" && 88*8975f5c5SAndroid Build Coastguard Worker ios_deployment_target != "13.0" && ios_deployment_target != "13.4" && 89*8975f5c5SAndroid Build Coastguard Worker ios_deployment_target != "14.0") { 90*8975f5c5SAndroid Build Coastguard Worker ldflags += [ "-Wl,-fixup_chains" ] 91*8975f5c5SAndroid Build Coastguard Worker } 92*8975f5c5SAndroid Build Coastguard Worker 93*8975f5c5SAndroid Build Coastguard Worker if (ios_is_app_extension) { 94*8975f5c5SAndroid Build Coastguard Worker ldflags += [ "-fapplication-extension" ] 95*8975f5c5SAndroid Build Coastguard Worker cflags += [ "-fapplication-extension" ] 96*8975f5c5SAndroid Build Coastguard Worker } 97*8975f5c5SAndroid Build Coastguard Worker} 98*8975f5c5SAndroid Build Coastguard Worker 99*8975f5c5SAndroid Build Coastguard Worker# This is included by reference in the //build/config/compiler:runtime_library 100*8975f5c5SAndroid Build Coastguard Worker# config that is applied to all targets. It is here to separate out the logic 101*8975f5c5SAndroid Build Coastguard Worker# that is iOS-only. Please see that target for advice on what should go in 102*8975f5c5SAndroid Build Coastguard Worker# :runtime_library vs. :compiler. 103*8975f5c5SAndroid Build Coastguard Workerconfig("runtime_library") { 104*8975f5c5SAndroid Build Coastguard Worker # The variable ios_sdk_path is relative to root_build_dir when using RBE 105*8975f5c5SAndroid Build Coastguard Worker # and system Xcode (since RBE only supports paths relative to source). 106*8975f5c5SAndroid Build Coastguard Worker # Rebase the value in that case since gn does not convert paths in compiler 107*8975f5c5SAndroid Build Coastguard Worker # flags (since it is not aware they are paths). 108*8975f5c5SAndroid Build Coastguard Worker _sdk_root = ios_sdk_path 109*8975f5c5SAndroid Build Coastguard Worker if (ios_use_xcode_symlinks) { 110*8975f5c5SAndroid Build Coastguard Worker _sdk_root = rebase_path(ios_sdk_path, root_build_dir) 111*8975f5c5SAndroid Build Coastguard Worker } 112*8975f5c5SAndroid Build Coastguard Worker 113*8975f5c5SAndroid Build Coastguard Worker common_flags = [ 114*8975f5c5SAndroid Build Coastguard Worker "-isysroot", 115*8975f5c5SAndroid Build Coastguard Worker _sdk_root, 116*8975f5c5SAndroid Build Coastguard Worker ] 117*8975f5c5SAndroid Build Coastguard Worker swiftflags = [ 118*8975f5c5SAndroid Build Coastguard Worker "-sdk", 119*8975f5c5SAndroid Build Coastguard Worker _sdk_root, 120*8975f5c5SAndroid Build Coastguard Worker ] 121*8975f5c5SAndroid Build Coastguard Worker 122*8975f5c5SAndroid Build Coastguard Worker if (target_environment == "catalyst") { 123*8975f5c5SAndroid Build Coastguard Worker common_flags += [ 124*8975f5c5SAndroid Build Coastguard Worker "-isystem", 125*8975f5c5SAndroid Build Coastguard Worker "$_sdk_root/System/iOSSupport/usr/include", 126*8975f5c5SAndroid Build Coastguard Worker "-iframework", 127*8975f5c5SAndroid Build Coastguard Worker "$_sdk_root/System/iOSSupport/System/Library/Frameworks", 128*8975f5c5SAndroid Build Coastguard Worker ] 129*8975f5c5SAndroid Build Coastguard Worker 130*8975f5c5SAndroid Build Coastguard Worker swiftflags += [ 131*8975f5c5SAndroid Build Coastguard Worker "-isystem", 132*8975f5c5SAndroid Build Coastguard Worker "$_sdk_root/System/iOSSupport/usr/include", 133*8975f5c5SAndroid Build Coastguard Worker "-Fsystem", 134*8975f5c5SAndroid Build Coastguard Worker "$_sdk_root/System/iOSSupport/System/Library/Frameworks", 135*8975f5c5SAndroid Build Coastguard Worker ] 136*8975f5c5SAndroid Build Coastguard Worker } 137*8975f5c5SAndroid Build Coastguard Worker 138*8975f5c5SAndroid Build Coastguard Worker asmflags = common_flags 139*8975f5c5SAndroid Build Coastguard Worker cflags = common_flags 140*8975f5c5SAndroid Build Coastguard Worker ldflags = common_flags 141*8975f5c5SAndroid Build Coastguard Worker} 142*8975f5c5SAndroid Build Coastguard Worker 143*8975f5c5SAndroid Build Coastguard Workerconfig("ios_executable_flags") { 144*8975f5c5SAndroid Build Coastguard Worker ldflags = [] 145*8975f5c5SAndroid Build Coastguard Worker 146*8975f5c5SAndroid Build Coastguard Worker # On "catalyst", the bundle structure is different (uses the same structure 147*8975f5c5SAndroid Build Coastguard Worker # as a regular macOS app), so an additional -rpath is required. 148*8975f5c5SAndroid Build Coastguard Worker if (target_environment == "catalyst") { 149*8975f5c5SAndroid Build Coastguard Worker ldflags += [ "-Wl,-rpath,@loader_path/../Frameworks" ] 150*8975f5c5SAndroid Build Coastguard Worker } 151*8975f5c5SAndroid Build Coastguard Worker 152*8975f5c5SAndroid Build Coastguard Worker ldflags += [ "-Wl,-rpath,@executable_path/Frameworks" ] 153*8975f5c5SAndroid Build Coastguard Worker} 154*8975f5c5SAndroid Build Coastguard Worker 155*8975f5c5SAndroid Build Coastguard Workerconfig("ios_extension_executable_flags") { 156*8975f5c5SAndroid Build Coastguard Worker configs = default_executable_configs 157*8975f5c5SAndroid Build Coastguard Worker 158*8975f5c5SAndroid Build Coastguard Worker ldflags = [ 159*8975f5c5SAndroid Build Coastguard Worker "-e", 160*8975f5c5SAndroid Build Coastguard Worker "_NSExtensionMain", 161*8975f5c5SAndroid Build Coastguard Worker ] 162*8975f5c5SAndroid Build Coastguard Worker 163*8975f5c5SAndroid Build Coastguard Worker # On "catalyst", the bundle structure is different (uses the same structure 164*8975f5c5SAndroid Build Coastguard Worker # as a regular macOS app), so an additional -rpath is required. 165*8975f5c5SAndroid Build Coastguard Worker if (target_environment == "catalyst") { 166*8975f5c5SAndroid Build Coastguard Worker ldflags += [ "-Wl,-rpath,@loader_path/../../../../Frameworks" ] 167*8975f5c5SAndroid Build Coastguard Worker } 168*8975f5c5SAndroid Build Coastguard Worker 169*8975f5c5SAndroid Build Coastguard Worker ldflags += [ "-Wl,-rpath,@executable_path/../../Frameworks" ] 170*8975f5c5SAndroid Build Coastguard Worker} 171*8975f5c5SAndroid Build Coastguard Worker 172*8975f5c5SAndroid Build Coastguard Workerconfig("ios_dynamic_flags") { 173*8975f5c5SAndroid Build Coastguard Worker ldflags = [ 174*8975f5c5SAndroid Build Coastguard Worker # Always load Objective-C categories and class. 175*8975f5c5SAndroid Build Coastguard Worker "-Wl,-ObjC", 176*8975f5c5SAndroid Build Coastguard Worker ] 177*8975f5c5SAndroid Build Coastguard Worker 178*8975f5c5SAndroid Build Coastguard Worker # The path to the Swift compatibility libraries (required to run code built 179*8975f5c5SAndroid Build Coastguard Worker # with version N of the SDK on older version of the OS) is relative to the 180*8975f5c5SAndroid Build Coastguard Worker # toolchains directory and changes with the environment when using the 181*8975f5c5SAndroid Build Coastguard Worker # system toolchain. When using the hermetic swift toolchain instead, those 182*8975f5c5SAndroid Build Coastguard Worker # libraries are relative to $swift_toolchain_path. 183*8975f5c5SAndroid Build Coastguard Worker if (swift_toolchain_path == "") { 184*8975f5c5SAndroid Build Coastguard Worker _swift_compatibility_libs_prefix = ios_toolchains_path 185*8975f5c5SAndroid Build Coastguard Worker } else { 186*8975f5c5SAndroid Build Coastguard Worker _swift_compatibility_libs_prefix = swift_toolchain_path 187*8975f5c5SAndroid Build Coastguard Worker } 188*8975f5c5SAndroid Build Coastguard Worker 189*8975f5c5SAndroid Build Coastguard Worker if (target_environment == "simulator") { 190*8975f5c5SAndroid Build Coastguard Worker _swift_compatibility_libs_suffix = "iphonesimulator" 191*8975f5c5SAndroid Build Coastguard Worker } else if (target_environment == "device") { 192*8975f5c5SAndroid Build Coastguard Worker _swift_compatibility_libs_suffix = "iphoneos" 193*8975f5c5SAndroid Build Coastguard Worker } else if (target_environment == "catalyst") { 194*8975f5c5SAndroid Build Coastguard Worker # The Swift compatibility libraries have changed location starting with 195*8975f5c5SAndroid Build Coastguard Worker # Xcode 13.0, so check the version of Xcode when deciding which path to 196*8975f5c5SAndroid Build Coastguard Worker # use. 197*8975f5c5SAndroid Build Coastguard Worker if (xcode_version_int >= 1300) { 198*8975f5c5SAndroid Build Coastguard Worker _swift_compatibility_libs_suffix = "macosx" 199*8975f5c5SAndroid Build Coastguard Worker } else { 200*8975f5c5SAndroid Build Coastguard Worker _swift_compatibility_libs_suffix = "maccatalyst" 201*8975f5c5SAndroid Build Coastguard Worker } 202*8975f5c5SAndroid Build Coastguard Worker } 203*8975f5c5SAndroid Build Coastguard Worker 204*8975f5c5SAndroid Build Coastguard Worker lib_dirs = [ 205*8975f5c5SAndroid Build Coastguard Worker "$ios_sdk_path/usr/lib/swift", 206*8975f5c5SAndroid Build Coastguard Worker "$_swift_compatibility_libs_prefix/usr/lib/swift/" + 207*8975f5c5SAndroid Build Coastguard Worker "$_swift_compatibility_libs_suffix", 208*8975f5c5SAndroid Build Coastguard Worker ] 209*8975f5c5SAndroid Build Coastguard Worker 210*8975f5c5SAndroid Build Coastguard Worker # When building for catalyst, some Swift support libraries are in a 211*8975f5c5SAndroid Build Coastguard Worker # different directory which needs to be added to the search path. 212*8975f5c5SAndroid Build Coastguard Worker if (target_environment == "catalyst") { 213*8975f5c5SAndroid Build Coastguard Worker lib_dirs += [ "$ios_sdk_path/System/iOSSupport/usr/lib/swift" ] 214*8975f5c5SAndroid Build Coastguard Worker } 215*8975f5c5SAndroid Build Coastguard Worker} 216*8975f5c5SAndroid Build Coastguard Worker 217*8975f5c5SAndroid Build Coastguard Workerconfig("ios_shared_library_flags") { 218*8975f5c5SAndroid Build Coastguard Worker ldflags = [ 219*8975f5c5SAndroid Build Coastguard Worker "-Wl,-rpath,@executable_path/Frameworks", 220*8975f5c5SAndroid Build Coastguard Worker "-Wl,-rpath,@loader_path/Frameworks", 221*8975f5c5SAndroid Build Coastguard Worker ] 222*8975f5c5SAndroid Build Coastguard Worker} 223*8975f5c5SAndroid Build Coastguard Worker 224*8975f5c5SAndroid Build Coastguard Workerconfig("xctest_config") { 225*8975f5c5SAndroid Build Coastguard Worker # Add some directories to the system framework search path to make 226*8975f5c5SAndroid Build Coastguard Worker # them available to the compiler while silencing warnings in the 227*8975f5c5SAndroid Build Coastguard Worker # framework headers. This is required for XCTest. 228*8975f5c5SAndroid Build Coastguard Worker common_flags = [ 229*8975f5c5SAndroid Build Coastguard Worker "-iframework", 230*8975f5c5SAndroid Build Coastguard Worker rebase_path("$ios_sdk_platform_path/Developer/Library/Frameworks", 231*8975f5c5SAndroid Build Coastguard Worker root_build_dir), 232*8975f5c5SAndroid Build Coastguard Worker "-iframework", 233*8975f5c5SAndroid Build Coastguard Worker rebase_path("$ios_sdk_path/Developer/Library/Frameworks", root_build_dir), 234*8975f5c5SAndroid Build Coastguard Worker ] 235*8975f5c5SAndroid Build Coastguard Worker cflags = common_flags 236*8975f5c5SAndroid Build Coastguard Worker ldflags = common_flags 237*8975f5c5SAndroid Build Coastguard Worker swiftflags = common_flags 238*8975f5c5SAndroid Build Coastguard Worker 239*8975f5c5SAndroid Build Coastguard Worker include_dirs = [ "$ios_sdk_platform_path/Developer/usr/lib" ] 240*8975f5c5SAndroid Build Coastguard Worker lib_dirs = [ "$ios_sdk_platform_path/Developer/usr/lib" ] 241*8975f5c5SAndroid Build Coastguard Worker frameworks = [ 242*8975f5c5SAndroid Build Coastguard Worker "Foundation.framework", 243*8975f5c5SAndroid Build Coastguard Worker "XCTest.framework", 244*8975f5c5SAndroid Build Coastguard Worker ] 245*8975f5c5SAndroid Build Coastguard Worker} 246*8975f5c5SAndroid Build Coastguard Worker 247*8975f5c5SAndroid Build Coastguard Worker# TODO(crbug.com/40911785): any target that uses this config will miscompile. 248*8975f5c5SAndroid Build Coastguard Worker# This needs to be fixed if we want to use Swift - C++ interop. 249*8975f5c5SAndroid Build Coastguard Workerconfig("enable_swift_cxx_interop") { 250*8975f5c5SAndroid Build Coastguard Worker swiftflags = [ "-enable-experimental-cxx-interop" ] 251*8975f5c5SAndroid Build Coastguard Worker} 252*8975f5c5SAndroid Build Coastguard Worker 253*8975f5c5SAndroid Build Coastguard Workergroup("xctest") { 254*8975f5c5SAndroid Build Coastguard Worker public_configs = [ ":xctest_config" ] 255*8975f5c5SAndroid Build Coastguard Worker} 256*8975f5c5SAndroid Build Coastguard Worker 257*8975f5c5SAndroid Build Coastguard Worker_xctrunner_path = 258*8975f5c5SAndroid Build Coastguard Worker "$ios_sdk_platform_path/Developer/Library/Xcode/Agents/XCTRunner.app" 259*8975f5c5SAndroid Build Coastguard Worker 260*8975f5c5SAndroid Build Coastguard Worker# When building with RBE, $ios_sdk_platform_path corresponds to a symlink 261*8975f5c5SAndroid Build Coastguard Worker# below $root_build_dir that points to the real SDK to use. Because the files 262*8975f5c5SAndroid Build Coastguard Worker# are below $root_build_dir, it is not possible to list them as a target input 263*8975f5c5SAndroid Build Coastguard Worker# without gn complaining (as it can't find a target creating those files). 264*8975f5c5SAndroid Build Coastguard Worker# 265*8975f5c5SAndroid Build Coastguard Worker# The symlinks are created by //build/config/apple/sdk_info.py script invoked 266*8975f5c5SAndroid Build Coastguard Worker# via exec_script() from //build/config/{ios/ios_sdk.gni,mac/mac_sdk.gni}. 267*8975f5c5SAndroid Build Coastguard Worker# As the invocation is done by exec_script, there is no target that can list 268*8975f5c5SAndroid Build Coastguard Worker# those files as output. 269*8975f5c5SAndroid Build Coastguard Worker# 270*8975f5c5SAndroid Build Coastguard Worker# To workaround this, add a target that pretends to create those files 271*8975f5c5SAndroid Build Coastguard Worker# (but does nothing). See https://crbug.com/1061487 for why this is needed. 272*8975f5c5SAndroid Build Coastguard Workerif (ios_use_xcode_symlinks) { 273*8975f5c5SAndroid Build Coastguard Worker action("copy_xctrunner_app") { 274*8975f5c5SAndroid Build Coastguard Worker testonly = true 275*8975f5c5SAndroid Build Coastguard Worker script = "//build/noop.py" 276*8975f5c5SAndroid Build Coastguard Worker outputs = [ 277*8975f5c5SAndroid Build Coastguard Worker "$_xctrunner_path/Info.plist", 278*8975f5c5SAndroid Build Coastguard Worker "$_xctrunner_path/PkgInfo", 279*8975f5c5SAndroid Build Coastguard Worker "$_xctrunner_path/XCTRunner", 280*8975f5c5SAndroid Build Coastguard Worker ] 281*8975f5c5SAndroid Build Coastguard Worker } 282*8975f5c5SAndroid Build Coastguard Worker} 283*8975f5c5SAndroid Build Coastguard Worker 284*8975f5c5SAndroid Build Coastguard Worker# When creating the test runner for an XCUITest, the arm64e slice of the binary 285*8975f5c5SAndroid Build Coastguard Worker# must be removed (at least until the app ships with arm64e slice which is not 286*8975f5c5SAndroid Build Coastguard Worker# yet supported by Apple). 287*8975f5c5SAndroid Build Coastguard Workeraction("xctest_runner_without_arm64e") { 288*8975f5c5SAndroid Build Coastguard Worker testonly = true 289*8975f5c5SAndroid Build Coastguard Worker script = "//build/config/ios/strip_arm64e.py" 290*8975f5c5SAndroid Build Coastguard Worker sources = [ "$_xctrunner_path/XCTRunner" ] 291*8975f5c5SAndroid Build Coastguard Worker outputs = [ "$target_out_dir/XCTRunner" ] 292*8975f5c5SAndroid Build Coastguard Worker args = [ 293*8975f5c5SAndroid Build Coastguard Worker "--output", 294*8975f5c5SAndroid Build Coastguard Worker rebase_path(outputs[0], root_build_dir), 295*8975f5c5SAndroid Build Coastguard Worker "--input", 296*8975f5c5SAndroid Build Coastguard Worker rebase_path(sources[0], root_build_dir), 297*8975f5c5SAndroid Build Coastguard Worker "--xcode-version", 298*8975f5c5SAndroid Build Coastguard Worker xcode_version, 299*8975f5c5SAndroid Build Coastguard Worker ] 300*8975f5c5SAndroid Build Coastguard Worker 301*8975f5c5SAndroid Build Coastguard Worker # When running under ASan, the ASan runtime library must be packaged alongside 302*8975f5c5SAndroid Build Coastguard Worker # the test runner binary. 303*8975f5c5SAndroid Build Coastguard Worker deps = [ "//build/config/sanitizers:deps" ] 304*8975f5c5SAndroid Build Coastguard Worker if (ios_use_xcode_symlinks) { 305*8975f5c5SAndroid Build Coastguard Worker deps += [ ":copy_xctrunner_app" ] 306*8975f5c5SAndroid Build Coastguard Worker } 307*8975f5c5SAndroid Build Coastguard Worker} 308