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