Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4516)

Unified Diff: build/toolchain/cros/BUILD.gn

Issue 2083063003: Move the cros_* GN args to a .gni file and add a bootstrap cros toolchain. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: import needed declare_args(), fix toolchain_os Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/compiler/compiler.gni ('k') | build/toolchain/cros_toolchain.gni » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/toolchain/cros/BUILD.gn
diff --git a/build/toolchain/cros/BUILD.gn b/build/toolchain/cros/BUILD.gn
index 3619828c820346967af168a78f35e2e3f18e0cf7..f2accb2c206d0334c057f55e843648988ce02c7a 100644
--- a/build/toolchain/cros/BUILD.gn
+++ b/build/toolchain/cros/BUILD.gn
@@ -2,80 +2,10 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import("//build/config/compiler/compiler.gni")
+import("//build/config/sysroot.gni")
import("//build/toolchain/gcc_toolchain.gni")
-
-# CrOS builds must cross-compile on a Linux host for the actual CrOS
-# device target. There are many different CrOS devices so the build
-# system provides configuration variables that permit a CrOS build to
-# control the cross-compilation tool chain. However, requiring such
-# fine-grain specification is tedious for build-bots and developers.
-# Consequently, the CrOS build system defaults to a convenience
-# compilation mode where the compilation host is also the build target.
-#
-# Chrome can be compiled in this way with the gn variable:
-#
-# target_os = "chromeos"
-#
-# To perform a board-specific build, first obtain the correct system
-# root (http://goo.gl/aFB4XH) for the board. Then configure GN to use it
-# by setting appropriate cross-compilation variables.
-#
-# For example, to compile a Chrome source tree in /g/src for an
-# auron_paine CrOS device with the system root cached in /g/.cros_cache,
-# the following GN arguments must be provided to configure
-# cross-compilation with Goma acceleration. (NB: additional variables
-# will be necessary to successfully compile a working CrOS Chrome. See
-# the definition of GYP_DEFINES inside a sysroot shell.)
-#
-# goma_dir = "/g/.cros_cache/common/goma+2"
-# target_sysroot= /g/.cros_cache/chrome-sdk/tarballs/auron_paine+7644.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz"
-# cros_target_cc = "x86_64-cros-linux-gnu-gcc -B/g/.cros_cache/chrome-sdk/tarballs/auron_paine+7657.0.0+target_toolchain/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold"
-# cros_target_cxx = "x86_64-cros-linux-gnu-g++ -B/g/.cros_cache/chrome-sdk/tarballs/auron_paine+7657.0.0+target_toolchain/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold"
-# cros_target_ar = "x86_64-cros-linux-gnu-gcc-ar"
-# target_cpu = "x64"
-
-declare_args() {
- # These must be specified for a board-specific build.
- cros_target_ar = "ar"
- cros_target_cc = "gcc"
- cros_target_cxx = "g++"
- cros_target_ld = ""
- cros_target_nm = ""
- cros_target_readelf = ""
-
- # These can be optionally set. The "_cppflags" will be applied to *both*
- # C and C++ files; use "_cxxflags" for C++-only flags.
- cros_target_extra_cflags = ""
- cros_target_extra_cppflags = ""
- cros_target_extra_cxxflags = ""
- cros_target_extra_ldflags = ""
-
- # is_clang is used instead of cros_target_is_clang
-
- cros_host_ar = "ar"
- cros_host_cc = "gcc"
- cros_host_cxx = "g++"
- cros_host_ld = ""
- cros_host_nm = ""
- cros_host_readelf = ""
- cros_host_extra_cflags = ""
- cros_host_extra_cppflags = ""
- cros_host_extra_cxxflags = ""
- cros_host_extra_ldflags = ""
- cros_host_is_clang = false
-
- cros_v8_snapshot_ar = "ar"
- cros_v8_snapshot_cc = "gcc"
- cros_v8_snapshot_cxx = "g++"
- cros_v8_snapshot_ld = ""
- cros_v8_snapshot_nm = ""
- cros_v8_snapshot_readelf = ""
- cros_v8_snapshot_extra_cflags = ""
- cros_v8_snapshot_extra_cppflags = ""
- cros_v8_snapshot_extra_cxxflags = ""
- cros_v8_snapshot_extra_ldflags = ""
- cros_v8_snapshot_is_clang = false
-}
+import("//build/toolchain/cros_toolchain.gni")
# TODO(dpranke): Delete this after we get rid of the reference to
# build/toolchain/cros:clang_target in BUILDCONFIG.gn
@@ -84,31 +14,61 @@ clang_toolchain("clang_target") {
toolchain_os = "linux"
}
-gcc_toolchain("target") {
- # These are args for the template.
- ar = cros_target_ar
- cc = cros_target_cc
- cxx = cros_target_cxx
- ld = cxx
- if (cros_target_ld != "") {
- ld = cros_target_ld
+template("cros_target_toolchain") {
+ if (defined(invoker.use_debug_fission)) {
+ use_debug_fission = invoker.use_debug_fission
}
- if (cros_target_nm != "") {
- nm = cros_target_nm
+ if (defined(invoker.use_gold)) {
+ use_gold = invoker.use_gold
}
- if (cros_target_readelf != "") {
- readelf = cros_target_readelf
+ if (defined(invoker.use_sysroot)) {
+ use_sysroot = invoker.use_sysroot
}
- extra_cflags = cros_target_extra_cflags
- extra_cppflags = cros_target_extra_cppflags
- extra_cxxflags = cros_target_extra_cxxflags
- extra_ldflags = cros_target_extra_ldflags
- # These are passed through as toolchain_args.
- cc_wrapper = ""
- is_clang = is_clang
- toolchain_cpu = target_cpu
- toolchain_os = "linux"
+ gcc_toolchain(target_name) {
+ # These are args for the template.
+ ar = cros_target_ar
+ cc = cros_target_cc
+ cxx = cros_target_cxx
+ ld = cxx
+ if (cros_target_ld != "") {
+ ld = cros_target_ld
+ }
+ if (cros_target_nm != "") {
+ nm = cros_target_nm
+ }
+ if (cros_target_readelf != "") {
+ readelf = cros_target_readelf
+ }
+ extra_cflags = cros_target_extra_cflags
+ extra_cppflags = cros_target_extra_cppflags
+ extra_cxxflags = cros_target_extra_cxxflags
+ extra_ldflags = cros_target_extra_ldflags
+
+ # These are passed through as toolchain_args.
+ cc_wrapper = ""
+ is_clang = is_clang
+ toolchain_cpu = target_cpu
+ toolchain_os = "chromeos"
+
+ use_debug_fission = use_debug_fission
+ use_gold = use_gold
+ use_sysroot = use_sysroot
+ }
+}
+
+# This is the normal toolchain for most targets.
+cros_target_toolchain("target") {
+}
+
+# This is a special toolchain needed just for the nacl_bootstrap target in
+# //native_client/src/trusted/service_runtime/linux. It is identical
+# to ":target" except that it forces use_debug_fission, use_gold, and
+# use_sysroot off.
+cros_target_toolchain("nacl_bootstrap") {
+ use_debug_fission = false
+ use_gold = false
+ use_sysroot = false
}
gcc_toolchain("host") {
« no previous file with comments | « build/config/compiler/compiler.gni ('k') | build/toolchain/cros_toolchain.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698