1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2021 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/mac/mac_sdk.gni") 6*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/v8_target_cpu.gni") 7*8975f5c5SAndroid Build Coastguard Workerimport("//build/toolchain/apple/toolchain.gni") 8*8975f5c5SAndroid Build Coastguard Workerimport("//build_overrides/build.gni") 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker# Specialisation of the apple_toolchain template to declare the toolchain 11*8975f5c5SAndroid Build Coastguard Worker# and its tools to build target for macOS platform. 12*8975f5c5SAndroid Build Coastguard Workertemplate("mac_toolchain") { 13*8975f5c5SAndroid Build Coastguard Worker assert(defined(invoker.toolchain_args), 14*8975f5c5SAndroid Build Coastguard Worker "Toolchains must declare toolchain_args") 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker apple_toolchain(target_name) { 17*8975f5c5SAndroid Build Coastguard Worker forward_variables_from(invoker, "*", [ "toolchain_args" ]) 18*8975f5c5SAndroid Build Coastguard Worker 19*8975f5c5SAndroid Build Coastguard Worker bin_path = mac_bin_path 20*8975f5c5SAndroid Build Coastguard Worker 21*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 22*8975f5c5SAndroid Build Coastguard Worker forward_variables_from(invoker.toolchain_args, "*") 23*8975f5c5SAndroid Build Coastguard Worker current_os = "mac" 24*8975f5c5SAndroid Build Coastguard Worker 25*8975f5c5SAndroid Build Coastguard Worker if (target_os == "ios") { 26*8975f5c5SAndroid Build Coastguard Worker # Use LLD for the host part of a chrome/ios build. 27*8975f5c5SAndroid Build Coastguard Worker use_lld = true 28*8975f5c5SAndroid Build Coastguard Worker 29*8975f5c5SAndroid Build Coastguard Worker # Override `is_component_build` for the host toolchain. 30*8975f5c5SAndroid Build Coastguard Worker # See https://crbug.com/gn/286 for details why this is 31*8975f5c5SAndroid Build Coastguard Worker # required. 32*8975f5c5SAndroid Build Coastguard Worker is_component_build = is_debug 33*8975f5c5SAndroid Build Coastguard Worker 34*8975f5c5SAndroid Build Coastguard Worker # Defined in //base, would trigger a warning if the build doesn't depend 35*8975f5c5SAndroid Build Coastguard Worker # on it. 36*8975f5c5SAndroid Build Coastguard Worker if (build_with_chromium) { 37*8975f5c5SAndroid Build Coastguard Worker # cronet disable this because it targets 32-bit, 38*8975f5c5SAndroid Build Coastguard Worker # enable it unconditionally for the host toolchain. 39*8975f5c5SAndroid Build Coastguard Worker use_allocator_shim = true 40*8975f5c5SAndroid Build Coastguard Worker } 41*8975f5c5SAndroid Build Coastguard Worker 42*8975f5c5SAndroid Build Coastguard Worker # TODO(crbug.com/40534102): the use_sanitizer_coverage arg is currently 43*8975f5c5SAndroid Build Coastguard Worker # not supported by the Chromium mac_clang_x64 toolchain on iOS 44*8975f5c5SAndroid Build Coastguard Worker # distribution. 45*8975f5c5SAndroid Build Coastguard Worker use_sanitizer_coverage = false 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker # iOS supports being build with or without blink, but macOS requires 48*8975f5c5SAndroid Build Coastguard Worker # it to be enabled, even if iOS build force disable it in args.gn. 49*8975f5c5SAndroid Build Coastguard Worker use_blink = true 50*8975f5c5SAndroid Build Coastguard Worker } 51*8975f5c5SAndroid Build Coastguard Worker } 52*8975f5c5SAndroid Build Coastguard Worker } 53*8975f5c5SAndroid Build Coastguard Worker} 54*8975f5c5SAndroid Build Coastguard Worker 55*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_arm") { 56*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 57*8975f5c5SAndroid Build Coastguard Worker current_cpu = "arm" 58*8975f5c5SAndroid Build Coastguard Worker } 59*8975f5c5SAndroid Build Coastguard Worker} 60*8975f5c5SAndroid Build Coastguard Worker 61*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_arm64") { 62*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 63*8975f5c5SAndroid Build Coastguard Worker current_cpu = "arm64" 64*8975f5c5SAndroid Build Coastguard Worker } 65*8975f5c5SAndroid Build Coastguard Worker} 66*8975f5c5SAndroid Build Coastguard Worker 67*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_x64") { 68*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 69*8975f5c5SAndroid Build Coastguard Worker current_cpu = "x64" 70*8975f5c5SAndroid Build Coastguard Worker } 71*8975f5c5SAndroid Build Coastguard Worker} 72*8975f5c5SAndroid Build Coastguard Worker 73*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_x86") { 74*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 75*8975f5c5SAndroid Build Coastguard Worker current_cpu = "x86" 76*8975f5c5SAndroid Build Coastguard Worker } 77*8975f5c5SAndroid Build Coastguard Worker} 78*8975f5c5SAndroid Build Coastguard Worker 79*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_x86_v8_arm") { 80*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 81*8975f5c5SAndroid Build Coastguard Worker current_cpu = "x86" 82*8975f5c5SAndroid Build Coastguard Worker v8_current_cpu = "arm" 83*8975f5c5SAndroid Build Coastguard Worker } 84*8975f5c5SAndroid Build Coastguard Worker} 85*8975f5c5SAndroid Build Coastguard Worker 86*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_x86_v8_mipsel") { 87*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 88*8975f5c5SAndroid Build Coastguard Worker current_cpu = "x86" 89*8975f5c5SAndroid Build Coastguard Worker v8_current_cpu = "mipsel" 90*8975f5c5SAndroid Build Coastguard Worker } 91*8975f5c5SAndroid Build Coastguard Worker} 92*8975f5c5SAndroid Build Coastguard Worker 93*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_x64_v8_arm64") { 94*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 95*8975f5c5SAndroid Build Coastguard Worker current_cpu = "x64" 96*8975f5c5SAndroid Build Coastguard Worker v8_current_cpu = "arm64" 97*8975f5c5SAndroid Build Coastguard Worker } 98*8975f5c5SAndroid Build Coastguard Worker} 99*8975f5c5SAndroid Build Coastguard Worker 100*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_x64_v8_mips64el") { 101*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 102*8975f5c5SAndroid Build Coastguard Worker current_cpu = "x64" 103*8975f5c5SAndroid Build Coastguard Worker v8_current_cpu = "mips64el" 104*8975f5c5SAndroid Build Coastguard Worker } 105*8975f5c5SAndroid Build Coastguard Worker} 106*8975f5c5SAndroid Build Coastguard Worker 107*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_arm64_v8_x64") { 108*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 109*8975f5c5SAndroid Build Coastguard Worker current_cpu = "arm64" 110*8975f5c5SAndroid Build Coastguard Worker v8_current_cpu = "x64" 111*8975f5c5SAndroid Build Coastguard Worker } 112*8975f5c5SAndroid Build Coastguard Worker} 113*8975f5c5SAndroid Build Coastguard Worker 114*8975f5c5SAndroid Build Coastguard Worker# Needed to run v8 on the host during a arm64 -> x86_64 cross-build 115*8975f5c5SAndroid Build Coastguard Workermac_toolchain("clang_arm64_v8_arm64") { 116*8975f5c5SAndroid Build Coastguard Worker toolchain_args = { 117*8975f5c5SAndroid Build Coastguard Worker current_cpu = "arm64" 118*8975f5c5SAndroid Build Coastguard Worker v8_current_cpu = "arm64" 119*8975f5c5SAndroid Build Coastguard Worker } 120*8975f5c5SAndroid Build Coastguard Worker} 121