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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « build/config/compiler/compiler.gni ('k') | build/toolchain/cros_toolchain.gni » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import("//build/config/compiler/compiler.gni")
6 import("//build/config/sysroot.gni")
5 import("//build/toolchain/gcc_toolchain.gni") 7 import("//build/toolchain/gcc_toolchain.gni")
6 8 import("//build/toolchain/cros_toolchain.gni")
7 # CrOS builds must cross-compile on a Linux host for the actual CrOS
8 # device target. There are many different CrOS devices so the build
9 # system provides configuration variables that permit a CrOS build to
10 # control the cross-compilation tool chain. However, requiring such
11 # fine-grain specification is tedious for build-bots and developers.
12 # Consequently, the CrOS build system defaults to a convenience
13 # compilation mode where the compilation host is also the build target.
14 #
15 # Chrome can be compiled in this way with the gn variable:
16 #
17 # target_os = "chromeos"
18 #
19 # To perform a board-specific build, first obtain the correct system
20 # root (http://goo.gl/aFB4XH) for the board. Then configure GN to use it
21 # by setting appropriate cross-compilation variables.
22 #
23 # For example, to compile a Chrome source tree in /g/src for an
24 # auron_paine CrOS device with the system root cached in /g/.cros_cache,
25 # the following GN arguments must be provided to configure
26 # cross-compilation with Goma acceleration. (NB: additional variables
27 # will be necessary to successfully compile a working CrOS Chrome. See
28 # the definition of GYP_DEFINES inside a sysroot shell.)
29 #
30 # goma_dir = "/g/.cros_cache/common/goma+2"
31 # target_sysroot= /g/.cros_cache/chrome-sdk/tarballs/auron_paine+7644.0.0+sysroo t_chromeos-base_chromeos-chrome.tar.xz"
32 # cros_target_cc = "x86_64-cros-linux-gnu-gcc -B/g/.cros_cache/chrome-sdk/tarbal ls/auron_paine+7657.0.0+target_toolchain/usr/x86_64-pc-linux-gnu/x86_64-cros-lin ux-gnu/binutils-bin/2.25.51-gold"
33 # cros_target_cxx = "x86_64-cros-linux-gnu-g++ -B/g/.cros_cache/chrome-sdk/tarba lls/auron_paine+7657.0.0+target_toolchain/usr/x86_64-pc-linux-gnu/x86_64-cros-li nux-gnu/binutils-bin/2.25.51-gold"
34 # cros_target_ar = "x86_64-cros-linux-gnu-gcc-ar"
35 # target_cpu = "x64"
36
37 declare_args() {
38 # These must be specified for a board-specific build.
39 cros_target_ar = "ar"
40 cros_target_cc = "gcc"
41 cros_target_cxx = "g++"
42 cros_target_ld = ""
43 cros_target_nm = ""
44 cros_target_readelf = ""
45
46 # These can be optionally set. The "_cppflags" will be applied to *both*
47 # C and C++ files; use "_cxxflags" for C++-only flags.
48 cros_target_extra_cflags = ""
49 cros_target_extra_cppflags = ""
50 cros_target_extra_cxxflags = ""
51 cros_target_extra_ldflags = ""
52
53 # is_clang is used instead of cros_target_is_clang
54
55 cros_host_ar = "ar"
56 cros_host_cc = "gcc"
57 cros_host_cxx = "g++"
58 cros_host_ld = ""
59 cros_host_nm = ""
60 cros_host_readelf = ""
61 cros_host_extra_cflags = ""
62 cros_host_extra_cppflags = ""
63 cros_host_extra_cxxflags = ""
64 cros_host_extra_ldflags = ""
65 cros_host_is_clang = false
66
67 cros_v8_snapshot_ar = "ar"
68 cros_v8_snapshot_cc = "gcc"
69 cros_v8_snapshot_cxx = "g++"
70 cros_v8_snapshot_ld = ""
71 cros_v8_snapshot_nm = ""
72 cros_v8_snapshot_readelf = ""
73 cros_v8_snapshot_extra_cflags = ""
74 cros_v8_snapshot_extra_cppflags = ""
75 cros_v8_snapshot_extra_cxxflags = ""
76 cros_v8_snapshot_extra_ldflags = ""
77 cros_v8_snapshot_is_clang = false
78 }
79 9
80 # TODO(dpranke): Delete this after we get rid of the reference to 10 # TODO(dpranke): Delete this after we get rid of the reference to
81 # build/toolchain/cros:clang_target in BUILDCONFIG.gn 11 # build/toolchain/cros:clang_target in BUILDCONFIG.gn
82 clang_toolchain("clang_target") { 12 clang_toolchain("clang_target") {
83 toolchain_cpu = target_cpu 13 toolchain_cpu = target_cpu
84 toolchain_os = "linux" 14 toolchain_os = "linux"
85 } 15 }
86 16
87 gcc_toolchain("target") { 17 template("cros_target_toolchain") {
88 # These are args for the template. 18 if (defined(invoker.use_debug_fission)) {
89 ar = cros_target_ar 19 use_debug_fission = invoker.use_debug_fission
90 cc = cros_target_cc
91 cxx = cros_target_cxx
92 ld = cxx
93 if (cros_target_ld != "") {
94 ld = cros_target_ld
95 } 20 }
96 if (cros_target_nm != "") { 21 if (defined(invoker.use_gold)) {
97 nm = cros_target_nm 22 use_gold = invoker.use_gold
98 } 23 }
99 if (cros_target_readelf != "") { 24 if (defined(invoker.use_sysroot)) {
100 readelf = cros_target_readelf 25 use_sysroot = invoker.use_sysroot
101 } 26 }
102 extra_cflags = cros_target_extra_cflags
103 extra_cppflags = cros_target_extra_cppflags
104 extra_cxxflags = cros_target_extra_cxxflags
105 extra_ldflags = cros_target_extra_ldflags
106 27
107 # These are passed through as toolchain_args. 28 gcc_toolchain(target_name) {
108 cc_wrapper = "" 29 # These are args for the template.
109 is_clang = is_clang 30 ar = cros_target_ar
110 toolchain_cpu = target_cpu 31 cc = cros_target_cc
111 toolchain_os = "linux" 32 cxx = cros_target_cxx
33 ld = cxx
34 if (cros_target_ld != "") {
35 ld = cros_target_ld
36 }
37 if (cros_target_nm != "") {
38 nm = cros_target_nm
39 }
40 if (cros_target_readelf != "") {
41 readelf = cros_target_readelf
42 }
43 extra_cflags = cros_target_extra_cflags
44 extra_cppflags = cros_target_extra_cppflags
45 extra_cxxflags = cros_target_extra_cxxflags
46 extra_ldflags = cros_target_extra_ldflags
47
48 # These are passed through as toolchain_args.
49 cc_wrapper = ""
50 is_clang = is_clang
51 toolchain_cpu = target_cpu
52 toolchain_os = "chromeos"
53
54 use_debug_fission = use_debug_fission
55 use_gold = use_gold
56 use_sysroot = use_sysroot
57 }
58 }
59
60 # This is the normal toolchain for most targets.
61 cros_target_toolchain("target") {
62 }
63
64 # This is a special toolchain needed just for the nacl_bootstrap target in
65 # //native_client/src/trusted/service_runtime/linux. It is identical
66 # to ":target" except that it forces use_debug_fission, use_gold, and
67 # use_sysroot off.
68 cros_target_toolchain("nacl_bootstrap") {
69 use_debug_fission = false
70 use_gold = false
71 use_sysroot = false
112 } 72 }
113 73
114 gcc_toolchain("host") { 74 gcc_toolchain("host") {
115 # These are args for the template. 75 # These are args for the template.
116 ar = cros_host_ar 76 ar = cros_host_ar
117 cc = cros_host_cc 77 cc = cros_host_cc
118 cxx = cros_host_cxx 78 cxx = cros_host_cxx
119 ld = cxx 79 ld = cxx
120 if (cros_host_ld != "") { 80 if (cros_host_ld != "") {
121 ld = cros_host_ld 81 ld = cros_host_ld
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 cc_wrapper = "" 123 cc_wrapper = ""
164 is_clang = cros_v8_snapshot_is_clang 124 is_clang = cros_v8_snapshot_is_clang
165 if (target_cpu == "x86" || target_cpu == "arm" || target_cpu == "mipsel") { 125 if (target_cpu == "x86" || target_cpu == "arm" || target_cpu == "mipsel") {
166 toolchain_cpu = "x86" 126 toolchain_cpu = "x86"
167 } else { 127 } else {
168 toolchain_cpu = "x64" 128 toolchain_cpu = "x64"
169 } 129 }
170 toolchain_os = "linux" 130 toolchain_os = "linux"
171 use_sysroot = false 131 use_sysroot = false
172 } 132 }
OLDNEW
« 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