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