Home | History | Annotate | Download | only in toolchain
      1 # Copyright (c) 2014 The Native Client Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import("//build/config/nacl/config.gni")
      6 import("//build/toolchain/gcc_toolchain.gni")
      7 
      8 # This template defines a NaCl toolchain.
      9 #
     10 # It requires the following variables specifying the executables to run:
     11 #  - cc
     12 #  - cxx
     13 #  - ar
     14 #  - ld
     15 # and the following which is used in the toolchain_args
     16 #  - toolchain_cpu  (What "current_cpu" should be set to when invoking a
     17 #                    build using this toolchain.)
     18 
     19 template("nacl_toolchain") {
     20   assert(defined(invoker.cc), "nacl_toolchain() must specify a \"cc\" value")
     21   assert(defined(invoker.cxx), "nacl_toolchain() must specify a \"cxx\" value")
     22   assert(defined(invoker.ar), "nacl_toolchain() must specify a \"ar\" value")
     23   assert(defined(invoker.ld), "nacl_toolchain() must specify a \"ld\" value")
     24   assert(defined(invoker.toolchain_cpu),
     25          "nacl_toolchain() must specify a \"toolchain_cpu\"")
     26   gcc_toolchain(target_name) {
     27     toolchain_os = "nacl"
     28 
     29     if (defined(invoker.executable_extension)) {
     30       executable_extension = invoker.executable_extension
     31     } else {
     32       executable_extension = ".nexe"
     33     }
     34 
     35     forward_variables_from(invoker,
     36                            [
     37                              "ar",
     38                              "cc",
     39                              "cxx",
     40                              "deps",
     41                              "ld",
     42                              "link_outputs",
     43                              "nm",
     44                              "readelf",
     45                              "strip",
     46                              "toolchain_cpu",
     47                            ])
     48 
     49     if (defined(invoker.is_clang)) {
     50       is_clang = invoker.is_clang
     51     }
     52     if (defined(invoker.is_nacl_glibc)) {
     53       is_nacl_glibc = invoker.is_nacl_glibc
     54     }
     55     if (defined(invoker.symbol_level)) {
     56       symbol_level = invoker.symbol_level
     57     }
     58 
     59     # We do not support component builds or sanitizers with the NaCl toolchains.
     60     is_component_build = false
     61     clear_sanitizers = true
     62 
     63     # We do not support tcmalloc in the NaCl toolchains.
     64     use_allocator = "none"
     65 
     66     rebuild_define = "NACL_TC_REV=" + invoker.toolchain_revision
     67   }
     68 }
     69