1*6777b538SAndroid Build Coastguard Worker# Copyright (c) 2014 The Native Client Authors. All rights reserved. 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/nacl/config.gni") 6*6777b538SAndroid Build Coastguard Workerimport("//build/toolchain/gcc_toolchain.gni") 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker# This template defines a NaCl toolchain. 9*6777b538SAndroid Build Coastguard Worker# 10*6777b538SAndroid Build Coastguard Worker# It requires the following variables specifying the executables to run: 11*6777b538SAndroid Build Coastguard Worker# - cc 12*6777b538SAndroid Build Coastguard Worker# - cxx 13*6777b538SAndroid Build Coastguard Worker# - ar 14*6777b538SAndroid Build Coastguard Worker# - ld 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Workertemplate("nacl_toolchain") { 17*6777b538SAndroid Build Coastguard Worker assert(defined(invoker.cc), "nacl_toolchain() must specify a \"cc\" value") 18*6777b538SAndroid Build Coastguard Worker assert(defined(invoker.cxx), "nacl_toolchain() must specify a \"cxx\" value") 19*6777b538SAndroid Build Coastguard Worker assert(defined(invoker.ar), "nacl_toolchain() must specify a \"ar\" value") 20*6777b538SAndroid Build Coastguard Worker assert(defined(invoker.ld), "nacl_toolchain() must specify a \"ld\" value") 21*6777b538SAndroid Build Coastguard Worker gcc_toolchain(target_name) { 22*6777b538SAndroid Build Coastguard Worker if (defined(invoker.executable_extension)) { 23*6777b538SAndroid Build Coastguard Worker executable_extension = invoker.executable_extension 24*6777b538SAndroid Build Coastguard Worker } else { 25*6777b538SAndroid Build Coastguard Worker executable_extension = ".nexe" 26*6777b538SAndroid Build Coastguard Worker } 27*6777b538SAndroid Build Coastguard Worker rebuild_define = "NACL_TC_REV=" + invoker.toolchain_revision 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard Worker forward_variables_from(invoker, 30*6777b538SAndroid Build Coastguard Worker [ 31*6777b538SAndroid Build Coastguard Worker "ar", 32*6777b538SAndroid Build Coastguard Worker "cc", 33*6777b538SAndroid Build Coastguard Worker "cxx", 34*6777b538SAndroid Build Coastguard Worker "deps", 35*6777b538SAndroid Build Coastguard Worker "ld", 36*6777b538SAndroid Build Coastguard Worker "link_outputs", 37*6777b538SAndroid Build Coastguard Worker "nm", 38*6777b538SAndroid Build Coastguard Worker "readelf", 39*6777b538SAndroid Build Coastguard Worker "strip", 40*6777b538SAndroid Build Coastguard Worker "extra_cppflags", 41*6777b538SAndroid Build Coastguard Worker ]) 42*6777b538SAndroid Build Coastguard Worker 43*6777b538SAndroid Build Coastguard Worker toolchain_args = { 44*6777b538SAndroid Build Coastguard Worker # Use all values set on the invoker's toolchain_args. 45*6777b538SAndroid Build Coastguard Worker forward_variables_from(invoker.toolchain_args, "*") 46*6777b538SAndroid Build Coastguard Worker 47*6777b538SAndroid Build Coastguard Worker current_os = "nacl" 48*6777b538SAndroid Build Coastguard Worker 49*6777b538SAndroid Build Coastguard Worker # We do not support component builds with the NaCl toolchains. 50*6777b538SAndroid Build Coastguard Worker is_component_build = false 51*6777b538SAndroid Build Coastguard Worker 52*6777b538SAndroid Build Coastguard Worker # We do not support clang profiling in the NaCl toolchains. 53*6777b538SAndroid Build Coastguard Worker use_clang_profiling = false 54*6777b538SAndroid Build Coastguard Worker use_clang_coverage = false 55*6777b538SAndroid Build Coastguard Worker coverage_instrumentation_input_file = "" 56*6777b538SAndroid Build Coastguard Worker 57*6777b538SAndroid Build Coastguard Worker if (use_remoteexec) { 58*6777b538SAndroid Build Coastguard Worker if (is_win) { 59*6777b538SAndroid Build Coastguard Worker rbe_cc_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) + 60*6777b538SAndroid Build Coastguard Worker "/nacl/rewrapper_windows.cfg" 61*6777b538SAndroid Build Coastguard Worker } else if (is_mac) { 62*6777b538SAndroid Build Coastguard Worker rbe_cc_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) + 63*6777b538SAndroid Build Coastguard Worker "/nacl/rewrapper_mac.cfg" 64*6777b538SAndroid Build Coastguard Worker } else { 65*6777b538SAndroid Build Coastguard Worker # TODO(ukai): non linux? 66*6777b538SAndroid Build Coastguard Worker rbe_cc_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) + 67*6777b538SAndroid Build Coastguard Worker "/nacl/rewrapper_linux.cfg" 68*6777b538SAndroid Build Coastguard Worker } 69*6777b538SAndroid Build Coastguard Worker } 70*6777b538SAndroid Build Coastguard Worker 71*6777b538SAndroid Build Coastguard Worker if (use_remoteexec_links) { 72*6777b538SAndroid Build Coastguard Worker rbe_link_cfg_file = rebase_path(rbe_cfg_dir, root_build_dir) + 73*6777b538SAndroid Build Coastguard Worker "/nacl/rewrapper_linux_link.cfg" 74*6777b538SAndroid Build Coastguard Worker } 75*6777b538SAndroid Build Coastguard Worker 76*6777b538SAndroid Build Coastguard Worker # TODO(b/282032209): Re-enable remote nacl links once mismatches due to 77*6777b538SAndroid Build Coastguard Worker # linking with absolute paths has been fixed. 78*6777b538SAndroid Build Coastguard Worker use_remoteexec_links = false 79*6777b538SAndroid Build Coastguard Worker } 80*6777b538SAndroid Build Coastguard Worker } 81*6777b538SAndroid Build Coastguard Worker} 82