OLD | NEW |
1 # Copyright (c) 2014 The Native Client Authors. All rights reserved. | 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 | 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/sysroot.gni") | 5 import("//build/config/sysroot.gni") |
6 import("//build/toolchain/nacl_toolchain.gni") | 6 import("//build/toolchain/nacl_toolchain.gni") |
7 | 7 |
8 nacl_toolchain_dir = rebase_path("//native_client/toolchain", root_build_dir) | 8 nacl_toolchain_dir = rebase_path("//native_client/toolchain", root_build_dir) |
9 os_toolchain_dir = "${nacl_toolchain_dir}/${current_os}_x86" | 9 os_toolchain_dir = "${nacl_toolchain_dir}/${current_os}_x86" |
10 | 10 |
(...skipping 16 matching lines...) Expand all Loading... |
27 nacl_x86_newlib_rev = revisions[1] | 27 nacl_x86_newlib_rev = revisions[1] |
28 nacl_x86_glibc_rev = revisions[2] | 28 nacl_x86_glibc_rev = revisions[2] |
29 pnacl_newlib_rev = revisions[3] | 29 pnacl_newlib_rev = revisions[3] |
30 | 30 |
31 nacl_toolchain("newlib_arm") { | 31 nacl_toolchain("newlib_arm") { |
32 toolchain_package = "nacl_arm_newlib" | 32 toolchain_package = "nacl_arm_newlib" |
33 toolchain_revision = nacl_arm_newlib_rev | 33 toolchain_revision = nacl_arm_newlib_rev |
34 toolchain_cpu = "arm" | 34 toolchain_cpu = "arm" |
35 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/arm-nacl-" | 35 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/arm-nacl-" |
36 is_clang = false | 36 is_clang = false |
| 37 is_nacl_glibc = false |
37 | 38 |
38 cc = toolprefix + "gcc" | 39 cc = toolprefix + "gcc" |
39 cxx = toolprefix + "g++" | 40 cxx = toolprefix + "g++" |
40 ar = toolprefix + "ar" | 41 ar = toolprefix + "ar" |
41 ld = cxx | 42 ld = cxx |
42 } | 43 } |
43 | 44 |
44 nacl_toolchain("newlib_x86") { | 45 nacl_toolchain("newlib_x86") { |
45 toolchain_package = "nacl_x86_newlib" | 46 toolchain_package = "nacl_x86_newlib" |
46 toolchain_revision = nacl_x86_newlib_rev | 47 toolchain_revision = nacl_x86_newlib_rev |
47 toolchain_cpu = "x86" | 48 toolchain_cpu = "x86" |
48 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" | 49 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" |
49 is_clang = false | 50 is_clang = false |
| 51 is_nacl_glibc = false |
50 | 52 |
51 cc = toolprefix + "gcc" | 53 cc = toolprefix + "gcc" |
52 cxx = toolprefix + "g++" | 54 cxx = toolprefix + "g++" |
53 ar = toolprefix + "ar" | 55 ar = toolprefix + "ar" |
54 ld = cxx | 56 ld = cxx |
55 } | 57 } |
56 | 58 |
57 nacl_toolchain("newlib_x64") { | 59 nacl_toolchain("newlib_x64") { |
58 toolchain_package = "nacl_x86_newlib" | 60 toolchain_package = "nacl_x86_newlib" |
59 toolchain_revision = nacl_x86_newlib_rev | 61 toolchain_revision = nacl_x86_newlib_rev |
60 toolchain_cpu = "x64" | 62 toolchain_cpu = "x64" |
61 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" | 63 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" |
62 is_clang = false | 64 is_clang = false |
| 65 is_nacl_glibc = false |
63 | 66 |
64 cc = toolprefix + "gcc" | 67 cc = toolprefix + "gcc" |
65 cxx = toolprefix + "g++" | 68 cxx = toolprefix + "g++" |
66 ar = toolprefix + "ar" | 69 ar = toolprefix + "ar" |
67 ld = cxx | 70 ld = cxx |
68 } | 71 } |
69 | 72 |
70 nacl_toolchain("newlib_pnacl") { | 73 nacl_toolchain("newlib_pnacl") { |
71 toolchain_package = "pnacl_newlib" | 74 toolchain_package = "pnacl_newlib" |
72 toolchain_revision = pnacl_newlib_rev | 75 toolchain_revision = pnacl_newlib_rev |
73 toolchain_cpu = "pnacl" | 76 toolchain_cpu = "pnacl" |
74 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/pnacl-" | 77 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/pnacl-" |
| 78 is_nacl_glibc = false |
75 | 79 |
76 cc = toolprefix + "clang" | 80 cc = toolprefix + "clang" |
77 cxx = toolprefix + "clang++" | 81 cxx = toolprefix + "clang++" |
78 ar = toolprefix + "ar" | 82 ar = toolprefix + "ar" |
79 ld = cxx | 83 ld = cxx |
80 executable_extension = ".pexe.debug" | 84 executable_extension = ".pexe.debug" |
81 | 85 |
82 finalize = toolprefix + "finalize" | 86 finalize = toolprefix + "finalize" |
83 nonfinal_file = | 87 nonfinal_file = |
84 "{{root_out_dir}}/{{target_output_name}}${executable_extension}" | 88 "{{root_out_dir}}/{{target_output_name}}${executable_extension}" |
85 finalized_file = "{{root_out_dir}}/{{target_output_name}}.pexe" | 89 finalized_file = "{{root_out_dir}}/{{target_output_name}}.pexe" |
86 postlink = "$finalize $nonfinal_file -o $finalized_file" | 90 postlink = "$finalize $nonfinal_file -o $finalized_file" |
87 link_outputs = [ finalized_file ] | 91 link_outputs = [ finalized_file ] |
88 } | 92 } |
89 | 93 |
90 nacl_toolchain("glibc_x86") { | 94 nacl_toolchain("glibc_x86") { |
91 toolchain_package = "nacl_x86_glibc" | 95 toolchain_package = "nacl_x86_glibc" |
92 toolchain_revision = nacl_x86_glibc_rev | 96 toolchain_revision = nacl_x86_glibc_rev |
93 toolchain_cpu = "x86" | 97 toolchain_cpu = "x86" |
94 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" | 98 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" |
95 is_clang = false | 99 is_clang = false |
| 100 is_nacl_glibc = true |
96 | 101 |
97 cc = toolprefix + "gcc" | 102 cc = toolprefix + "gcc" |
98 cxx = toolprefix + "g++" | 103 cxx = toolprefix + "g++" |
99 ar = toolprefix + "ar" | 104 ar = toolprefix + "ar" |
100 ld = cxx | 105 ld = cxx |
101 } | 106 } |
102 | 107 |
103 nacl_toolchain("glibc_x64") { | 108 nacl_toolchain("glibc_x64") { |
104 toolchain_package = "nacl_x86_glibc" | 109 toolchain_package = "nacl_x86_glibc" |
105 toolchain_revision = nacl_x86_glibc_rev | 110 toolchain_revision = nacl_x86_glibc_rev |
106 toolchain_cpu = "x64" | 111 toolchain_cpu = "x64" |
107 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" | 112 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" |
108 is_clang = false | 113 is_clang = false |
| 114 is_nacl_glibc = true |
109 | 115 |
110 cc = toolprefix + "gcc" | 116 cc = toolprefix + "gcc" |
111 cxx = toolprefix + "g++" | 117 cxx = toolprefix + "g++" |
112 ar = toolprefix + "ar" | 118 ar = toolprefix + "ar" |
113 ld = cxx | 119 ld = cxx |
114 } | 120 } |
115 | 121 |
116 nacl_toolchain("clang_newlib_x86") { | 122 nacl_toolchain("clang_newlib_x86") { |
117 toolchain_package = "pnacl_newlib" | 123 toolchain_package = "pnacl_newlib" |
118 toolchain_revision = pnacl_newlib_rev | 124 toolchain_revision = pnacl_newlib_rev |
119 toolchain_cpu = "x86" | 125 toolchain_cpu = "x86" |
120 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" | 126 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" |
121 is_clang = true | 127 is_clang = true |
| 128 is_nacl_glibc = false |
122 | 129 |
123 cc = toolprefix + "clang" | 130 cc = toolprefix + "clang" |
124 cxx = toolprefix + "clang++" | 131 cxx = toolprefix + "clang++" |
125 ar = toolprefix + "ar" | 132 ar = toolprefix + "ar" |
126 ld = cxx | 133 ld = cxx |
127 } | 134 } |
128 | 135 |
129 nacl_toolchain("clang_newlib_x64") { | 136 nacl_toolchain("clang_newlib_x64") { |
130 toolchain_package = "pnacl_newlib" | 137 toolchain_package = "pnacl_newlib" |
131 toolchain_revision = pnacl_newlib_rev | 138 toolchain_revision = pnacl_newlib_rev |
132 toolchain_cpu = "x64" | 139 toolchain_cpu = "x64" |
133 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" | 140 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" |
134 is_clang = true | 141 is_clang = true |
| 142 is_nacl_glibc = false |
135 | 143 |
136 cc = toolprefix + "clang" | 144 cc = toolprefix + "clang" |
137 cxx = toolprefix + "clang++" | 145 cxx = toolprefix + "clang++" |
138 ar = toolprefix + "ar" | 146 ar = toolprefix + "ar" |
139 ld = cxx | 147 ld = cxx |
140 } | 148 } |
141 | 149 |
142 link_irt = rebase_path("//native_client/build/link_irt.py", root_build_dir) | 150 link_irt = rebase_path("//native_client/build/link_irt.py", root_build_dir) |
143 | 151 |
144 nacl_toolchain("irt_x86") { | 152 nacl_toolchain("irt_x86") { |
145 toolchain_package = "pnacl_newlib" | 153 toolchain_package = "pnacl_newlib" |
146 toolchain_revision = pnacl_newlib_rev | 154 toolchain_revision = pnacl_newlib_rev |
147 toolchain_cpu = "x86" | 155 toolchain_cpu = "x86" |
148 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" | 156 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/i686-nacl-" |
149 is_clang = true | 157 is_clang = true |
| 158 is_nacl_glibc = false |
150 | 159 |
151 cc = toolprefix + "clang" | 160 cc = toolprefix + "clang" |
152 cxx = toolprefix + "clang++" | 161 cxx = toolprefix + "clang++" |
153 ar = toolprefix + "ar" | 162 ar = toolprefix + "ar" |
154 readelf = toolprefix + "readelf" | 163 readelf = toolprefix + "readelf" |
155 | 164 |
156 tls_edit_label = | 165 tls_edit_label = |
157 "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)" | 166 "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)" |
158 host_toolchain_out_dir = | 167 host_toolchain_out_dir = |
159 rebase_path(get_label_info(tls_edit_label, "root_out_dir"), | 168 rebase_path(get_label_info(tls_edit_label, "root_out_dir"), |
160 root_build_dir) | 169 root_build_dir) |
161 | 170 |
162 # Some IRT implementations (notably, Chromium's) contain C++ code, | 171 # Some IRT implementations (notably, Chromium's) contain C++ code, |
163 # so we need to link w/ the C++ linker. | 172 # so we need to link w/ the C++ linker. |
164 ld = "${python_path} ${link_irt} --tls-edit=${host_toolchain_out_dir}/tls_edit
--link-cmd=${cxx} --readelf-cmd=${readelf}" | 173 ld = "${python_path} ${link_irt} --tls-edit=${host_toolchain_out_dir}/tls_edit
--link-cmd=${cxx} --readelf-cmd=${readelf}" |
165 | 174 |
166 # TODO(ncbray): depend on link script | 175 # TODO(ncbray): depend on link script |
167 deps = [ | 176 deps = [ |
168 tls_edit_label, | 177 tls_edit_label, |
169 ] | 178 ] |
170 } | 179 } |
171 | 180 |
172 nacl_toolchain("irt_x64") { | 181 nacl_toolchain("irt_x64") { |
173 toolchain_package = "pnacl_newlib" | 182 toolchain_package = "pnacl_newlib" |
174 toolchain_revision = pnacl_newlib_rev | 183 toolchain_revision = pnacl_newlib_rev |
175 toolchain_cpu = "x64" | 184 toolchain_cpu = "x64" |
176 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" | 185 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/x86_64-nacl-" |
177 is_clang = true | 186 is_clang = true |
| 187 is_nacl_glibc = false |
178 | 188 |
179 cc = toolprefix + "clang" | 189 cc = toolprefix + "clang" |
180 cxx = toolprefix + "clang++" | 190 cxx = toolprefix + "clang++" |
181 ar = toolprefix + "ar" | 191 ar = toolprefix + "ar" |
182 readelf = toolprefix + "readelf" | 192 readelf = toolprefix + "readelf" |
183 | 193 |
184 # Some IRT implementations (notably, Chromium's) contain C++ code, | 194 # Some IRT implementations (notably, Chromium's) contain C++ code, |
185 # so we need to link w/ the C++ linker. | 195 # so we need to link w/ the C++ linker. |
186 ld = "${python_path} ${link_irt} --tls-edit=tls_edit --link-cmd=${cxx} --reade
lf-cmd=${readelf}" | 196 ld = "${python_path} ${link_irt} --tls-edit=tls_edit --link-cmd=${cxx} --reade
lf-cmd=${readelf}" |
187 | 197 |
188 # TODO(ncbray): depend on link script | 198 # TODO(ncbray): depend on link script |
189 deps = [ | 199 deps = [ |
190 "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)", | 200 "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)", |
191 ] | 201 ] |
192 } | 202 } |
193 | 203 |
194 # Uses newlib to match the Chrome build. | 204 # Uses newlib to match the Chrome build. |
195 nacl_toolchain("irt_arm") { | 205 nacl_toolchain("irt_arm") { |
196 toolchain_package = "nacl_arm_newlib" | 206 toolchain_package = "nacl_arm_newlib" |
197 toolchain_revision = nacl_arm_newlib_rev | 207 toolchain_revision = nacl_arm_newlib_rev |
198 toolchain_cpu = "arm" | 208 toolchain_cpu = "arm" |
199 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/arm-nacl-" | 209 toolprefix = "${os_toolchain_dir}/${toolchain_package}/bin/arm-nacl-" |
200 is_clang = false | 210 is_clang = false |
| 211 is_nacl_glibc = false |
201 | 212 |
202 cc = toolprefix + "gcc" | 213 cc = toolprefix + "gcc" |
203 cxx = toolprefix + "g++" | 214 cxx = toolprefix + "g++" |
204 ar = toolprefix + "ar" | 215 ar = toolprefix + "ar" |
205 readelf = toolprefix + "readelf" | 216 readelf = toolprefix + "readelf" |
206 | 217 |
207 # Some IRT implementations (notably, Chromium's) contain C++ code, | 218 # Some IRT implementations (notably, Chromium's) contain C++ code, |
208 # so we need to link w/ the C++ linker. | 219 # so we need to link w/ the C++ linker. |
209 ld = "${python_path} ${link_irt} --tls-edit=tls_edit --link-cmd=${cxx} --reade
lf-cmd=${readelf}" | 220 ld = "${python_path} ${link_irt} --tls-edit=tls_edit --link-cmd=${cxx} --reade
lf-cmd=${readelf}" |
210 | 221 |
211 # TODO(ncbray): depend on link script | 222 # TODO(ncbray): depend on link script |
212 deps = [ | 223 deps = [ |
213 "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)", | 224 "//native_client/src/tools/tls_edit:tls_edit($host_toolchain)", |
214 ] | 225 ] |
215 } | 226 } |
OLD | NEW |