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

Side by Side Diff: chrome/test/data/nacl/BUILD.gn

Issue 1494423002: GN: Build Non-SFI version of NaCl browser tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass the nmf flags to non-SFI script Created 5 years 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/nacl/rules.gni ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 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/features.gni") 5 import("//build/config/features.gni")
6 import("//build/config/nacl/config.gni") 6 import("//build/config/nacl/config.gni")
7 import("//build/config/nacl/rules.gni") 7 import("//build/config/nacl/rules.gni")
8 8
9 group("nacl") { 9 group("nacl") {
10 newlib = "//build/toolchain/nacl:clang_newlib_${target_cpu}" 10 newlib = "//build/toolchain/nacl:clang_newlib_${target_cpu}"
11 glibc = "//build/toolchain/nacl:glibc_${target_cpu}" 11 glibc = "//build/toolchain/nacl:glibc_${target_cpu}"
12 pnacl = "//build/toolchain/nacl:newlib_pnacl" 12 pnacl = "//build/toolchain/nacl:newlib_pnacl"
13 nonsfi = "//build/toolchain/nacl:newlib_pnacl_nonsfi"
13 deps = [ 14 deps = [
14 ":exit_status_test($glibc)", 15 ":exit_status_test($glibc)",
15 ":exit_status_test($newlib)", 16 ":exit_status_test($newlib)",
16 ":exit_status_test($pnacl)", 17 ":exit_status_test($pnacl)",
17 ":extension_validation_cache($glibc)", 18 ":extension_validation_cache($glibc)",
18 ":extension_validation_cache($newlib)", 19 ":extension_validation_cache($newlib)",
19 ":irt_exception_test($glibc)", 20 ":irt_exception_test($glibc)",
20 ":irt_exception_test($newlib)", 21 ":irt_exception_test($newlib)",
22 ":irt_exception_test($nonsfi)",
21 ":irt_exception_test($pnacl)", 23 ":irt_exception_test($pnacl)",
22 ":irt_manifest_file($newlib)", 24 ":irt_manifest_file($newlib)",
25 ":irt_manifest_file($nonsfi)",
23 ":partly_invalid($newlib)", 26 ":partly_invalid($newlib)",
24 ":pnacl_debug_url_test($pnacl)", 27 ":pnacl_debug_url_test($pnacl)",
25 ":pnacl_dyncode_syscall_disabled_test($pnacl)", 28 ":pnacl_dyncode_syscall_disabled_test($pnacl)",
26 ":pnacl_error_handling_test($pnacl)", 29 ":pnacl_error_handling_test($pnacl)",
27 ":pnacl_hw_eh_disabled_test($pnacl)", 30 ":pnacl_hw_eh_disabled_test($pnacl)",
28 ":pnacl_mime_type_test($glibc)", 31 ":pnacl_mime_type_test($glibc)",
29 ":pnacl_mime_type_test($newlib)", 32 ":pnacl_mime_type_test($newlib)",
30 ":pnacl_mime_type_test($pnacl)", 33 ":pnacl_mime_type_test($pnacl)",
31 ":pnacl_options_test($pnacl)", 34 ":pnacl_options_test($pnacl)",
32 ":ppapi_bad_get_ppp_instance_crash($newlib)", 35 ":ppapi_bad_get_ppp_instance_crash($newlib)",
(...skipping 25 matching lines...) Expand all
58 ":ppapi_ppb_instance($newlib)", 61 ":ppapi_ppb_instance($newlib)",
59 ":ppapi_ppb_instance($pnacl)", 62 ":ppapi_ppb_instance($pnacl)",
60 ":ppapi_ppp_instance($glibc)", 63 ":ppapi_ppp_instance($glibc)",
61 ":ppapi_ppp_instance($newlib)", 64 ":ppapi_ppp_instance($newlib)",
62 ":ppapi_ppp_instance($pnacl)", 65 ":ppapi_ppp_instance($pnacl)",
63 ":ppapi_progress_events($glibc)", 66 ":ppapi_progress_events($glibc)",
64 ":ppapi_progress_events($newlib)", 67 ":ppapi_progress_events($newlib)",
65 ":ppapi_progress_events($pnacl)", 68 ":ppapi_progress_events($pnacl)",
66 ":shared_test_files($glibc)", 69 ":shared_test_files($glibc)",
67 ":shared_test_files($newlib)", 70 ":shared_test_files($newlib)",
71 ":shared_test_files($nonsfi)",
68 ":shared_test_files($pnacl)", 72 ":shared_test_files($pnacl)",
69 ":simple_test($glibc)", 73 ":simple_test($glibc)",
70 ":simple_test($newlib)", 74 ":simple_test($newlib)",
71 ":simple_test($pnacl)", 75 ":simple_test($pnacl)",
72 ":sysconf_nprocessors_onln_test($glibc)", 76 ":sysconf_nprocessors_onln_test($glibc)",
73 ":sysconf_nprocessors_onln_test($newlib)", 77 ":sysconf_nprocessors_onln_test($newlib)",
74 ":sysconf_nprocessors_onln_test($pnacl)", 78 ":sysconf_nprocessors_onln_test($pnacl)",
75 ] 79 ]
80 if (is_linux && is_clang) {
81 deps += [ ":nonsfi_libc_free" ]
82 }
76 } 83 }
77 84
78 if (is_nacl) { 85 if (is_nacl) {
79 template("nacl_test_data") { 86 template("nacl_test_data") {
80 if (current_cpu == "pnacl") { 87 if (current_cpu == "pnacl") {
81 variant = "pnacl" 88 if (is_nacl_nonsfi) {
89 variant = "nonsfi"
90 } else {
91 variant = "pnacl"
92 }
82 } else if (is_nacl_glibc) { 93 } else if (is_nacl_glibc) {
83 variant = "glibc" 94 variant = "glibc"
84 } else { 95 } else {
85 variant = "newlib" 96 variant = "newlib"
86 } 97 }
87 98
88 if (defined(invoker.sources)) { 99 if (defined(invoker.sources)) {
89 if (defined(invoker.output_name)) { 100 if (defined(invoker.output_name)) {
90 base_target_name = invoker.output_name 101 base_target_name = invoker.output_name
91 } else { 102 } else {
(...skipping 14 matching lines...) Expand all
106 } 117 }
107 suffixed_target_name = "${base_target_name}_${suffix}" 118 suffixed_target_name = "${base_target_name}_${suffix}"
108 119
109 if (defined(invoker.generate_nmf)) { 120 if (defined(invoker.generate_nmf)) {
110 generate_nmf = invoker.generate_nmf 121 generate_nmf = invoker.generate_nmf
111 } else { 122 } else {
112 generate_nmf = true 123 generate_nmf = true
113 } 124 }
114 125
115 nexe_target_name = target_name + "_nexe" 126 nexe_target_name = target_name + "_nexe"
127 if (is_nacl_nonsfi) {
128 pexe_translate_target_name = target_name + "_translate_pexe"
129 }
116 nexe_copy_target_name = target_name + "_copy_nexe" 130 nexe_copy_target_name = target_name + "_copy_nexe"
117 if (generate_nmf) { 131 if (generate_nmf) {
118 nmf_target_name = target_name + "_nmf" 132 nmf_target_name = target_name + "_nmf"
119 } 133 }
120 } 134 }
121 135
122 if (defined(invoker.test_files)) { 136 if (defined(invoker.test_files)) {
123 test_files_target_name = target_name + "_test_files" 137 test_files_target_name = target_name + "_test_files"
124 } 138 }
125 139
(...skipping 21 matching lines...) Expand all
147 deps += [ 161 deps += [
148 "//native_client/src/untrusted/nacl", 162 "//native_client/src/untrusted/nacl",
149 "//native_client/src/untrusted/pthread", 163 "//native_client/src/untrusted/pthread",
150 ] 164 ]
151 } 165 }
152 if (defined(invoker.deps)) { 166 if (defined(invoker.deps)) {
153 deps += invoker.deps 167 deps += invoker.deps
154 } 168 }
155 } 169 }
156 170
171 if (is_nacl_nonsfi) {
172 action(pexe_translate_target_name) {
173 # We specify the toolchain explicitly because in the Non-SFI case, we
174 # still want to use the pexe built using the newlib_pnacl toolchain.
175 tests = ":$nexe_target_name(//build/toolchain/nacl:newlib_pnacl)"
176
177 pexe = get_label_info(tests, "root_out_dir") +
178 "/${suffixed_target_name}.pexe"
179 if (target_cpu == "x86" || target_cpu == "x64") {
180 nmf_cpu = "x32"
181 } else {
182 nmf_cpu = target_cpu
183 }
184 nexe = "${root_out_dir}/${base_target_name}_pnacl_newlib_${nmf_cpu}_no nsfi.nexe"
185
186 script = "${nacl_toolchain_bindir}/pydir/loader.py"
187 sources = [
188 pexe,
189 ]
190 outputs = [
191 nexe,
192 ]
193
194 if (target_cpu == "x86" || target_cpu == "x64") {
195 arch = "x86-32-nonsfi"
196 } else if (target_cpu == "arm") {
197 arch = "arm-nonsfi"
198 }
199
200 pnacl_irt_shim = "//ppapi/native_client/src/untrusted/pnacl_irt_shim:a ot(//build/toolchain/nacl:newlib_pnacl_nonsfi)"
201
202 args = [
203 "pnacl-translate",
204 rebase_path(pexe, root_build_dir),
205 "-o",
206 rebase_path(nexe, root_build_dir),
207 "-arch",
208 arch,
209 "-Wl,-L" +
210 rebase_path(get_label_info(pnacl_irt_shim, "target_out_dir")),
211 ]
212 deps = [
213 ":$nexe_target_name(//build/toolchain/nacl:newlib_pnacl)",
214 ]
215 data_deps = [
216 pnacl_irt_shim,
217 ]
218 }
219 }
220
157 copy(nexe_copy_target_name) { 221 copy(nexe_copy_target_name) {
158 if (current_cpu == "pnacl") { 222 if (current_cpu == "pnacl" && !is_nacl_nonsfi) {
159 if (defined(invoker.nonstable_pexe) && invoker.nonstable_pexe) { 223 if (defined(invoker.nonstable_pexe) && invoker.nonstable_pexe) {
160 sources = [ 224 sources = [
161 "${root_out_dir}/exe.unstripped/${suffixed_target_name}.pexe", 225 "${root_out_dir}/exe.unstripped/${suffixed_target_name}.pexe",
162 ] 226 ]
163 } else { 227 } else {
164 sources = [ 228 sources = [
165 "${root_out_dir}/${suffixed_target_name}.pexe", 229 "${root_out_dir}/${suffixed_target_name}.pexe",
166 ] 230 ]
167 } 231 }
232 } else if (is_nacl_nonsfi) {
233 sources = get_target_outputs(":${pexe_translate_target_name}")
168 } else { 234 } else {
169 sources = [ 235 sources = [
170 "${root_out_dir}/${suffixed_target_name}.nexe", 236 "${root_out_dir}/${suffixed_target_name}.nexe",
171 ] 237 ]
172 } 238 }
173 outputs = [ 239 outputs = [
174 "${root_build_dir}/${destination_dir}/${variant}/{{source_file_part}}" , 240 "${root_build_dir}/${destination_dir}/${variant}/{{source_file_part}}" ,
175 ] 241 ]
176 deps = [ 242 if (is_nacl_nonsfi) {
177 ":${nexe_target_name}", 243 deps = [
178 ] 244 ":${pexe_translate_target_name}",
245 ]
246 } else {
247 deps = [
248 ":${nexe_target_name}",
249 ]
250 }
179 } 251 }
180 } 252 }
181 253
182 if (defined(invoker.sources) && generate_nmf) { 254 if (defined(invoker.sources) && generate_nmf) {
183 generate_nmf(nmf_target_name) { 255 if (is_nacl_nonsfi) {
184 nmf = "${root_build_dir}/${destination_dir}/${variant}/${base_target_nam e}.nmf" 256 generate_nonsfi_test_nmf(nmf_target_name) {
185 if (current_cpu == "pnacl") { 257 nmf = "${root_build_dir}/${destination_dir}/${variant}/${base_target_n ame}.nmf"
186 executables = [ "${root_build_dir}/${destination_dir}/${variant}/${suf fixed_target_name}.pexe" ] 258 files = get_target_outputs(":${nexe_copy_target_name}")
187 } else { 259 executable = files[0]
188 executables = [ "${root_build_dir}/${destination_dir}/${variant}/${suf fixed_target_name}.nexe" ] 260 if (defined(invoker.nmfflags)) {
261 nmfflags = invoker.nmfflags
262 }
263 deps = [
264 ":${nexe_copy_target_name}",
265 ]
189 } 266 }
190 if (is_nacl_glibc) { 267 } else {
191 lib_prefix = "${base_target_name}_libs" 268 generate_nmf(nmf_target_name) {
192 stage_dependencies = "${root_build_dir}/${destination_dir}/${variant}" 269 nmf = "${root_build_dir}/${destination_dir}/${variant}/${base_target_n ame}.nmf"
270 if (current_cpu == "pnacl") {
271 executables = [ "${root_build_dir}/${destination_dir}/${variant}/${s uffixed_target_name}.pexe" ]
272 } else {
273 executables = [ "${root_build_dir}/${destination_dir}/${variant}/${s uffixed_target_name}.nexe" ]
274 }
275 if (is_nacl_glibc) {
276 lib_prefix = "${base_target_name}_libs"
277 stage_dependencies =
278 "${root_build_dir}/${destination_dir}/${variant}"
279 }
280 if (defined(invoker.nmfflags)) {
281 nmfflags = invoker.nmfflags
282 }
283 deps = [
284 ":${nexe_copy_target_name}",
285 ]
193 } 286 }
194 if (defined(invoker.nmfflags)) {
195 nmfflags = invoker.nmfflags
196 }
197 deps = [
198 ":${nexe_copy_target_name}",
199 ]
200 } 287 }
201 } 288 }
202 289
203 if (defined(invoker.test_files)) { 290 if (defined(invoker.test_files)) {
204 copy(test_files_target_name) { 291 copy(test_files_target_name) {
205 sources = invoker.test_files 292 sources = invoker.test_files
206 outputs = [ 293 outputs = [
207 "${root_build_dir}/${destination_dir}/${variant}/{{source_file_part}}" , 294 "${root_build_dir}/${destination_dir}/${variant}/{{source_file_part}}" ,
208 ] 295 ]
296 deps = []
209 if (defined(invoker.sources)) { 297 if (defined(invoker.sources)) {
210 deps = [ 298 deps += [ ":${nexe_target_name}" ]
211 ":${nexe_target_name}", 299 }
212 ] 300 if (defined(invoker.files_deps)) {
301 deps += invoker.files_deps
213 } 302 }
214 } 303 }
215 } 304 }
216 305
217 group(target_name) { 306 group(target_name) {
218 data_deps = [] 307 data_deps = []
219 if (defined(invoker.sources)) { 308 if (defined(invoker.sources)) {
220 data_deps += [ ":${nexe_copy_target_name}" ] 309 data_deps += [ ":${nexe_copy_target_name}" ]
221 if (generate_nmf) { 310 if (generate_nmf) {
222 data_deps += [ ":${nmf_target_name}" ] 311 data_deps += [ ":${nmf_target_name}" ]
(...skipping 26 matching lines...) Expand all
249 "crash/ppapi_crash_in_callback.html", 338 "crash/ppapi_crash_in_callback.html",
250 "crash/ppapi_crash_ppapi_off_main_thread.html", 339 "crash/ppapi_crash_ppapi_off_main_thread.html",
251 "crash/ppapi_crash_off_main_thread.html", 340 "crash/ppapi_crash_off_main_thread.html",
252 "load_util.js", 341 "load_util.js",
253 "manifest_file/test_file.txt", 342 "manifest_file/test_file.txt",
254 "progress_event_listener.js", 343 "progress_event_listener.js",
255 "simple_cc.js", 344 "simple_cc.js",
256 ] 345 ]
257 } 346 }
258 347
348 source_set("ppapi_test_lib") {
349 sources = [
350 # TODO(ncbray) move these files once SCons no longer depends on them.
351 "//ppapi/native_client/tests/ppapi_test_lib/get_browser_interface.cc",
352 "//ppapi/native_client/tests/ppapi_test_lib/get_browser_interface.h",
353 "//ppapi/native_client/tests/ppapi_test_lib/internal_utils.cc",
354 "//ppapi/native_client/tests/ppapi_test_lib/internal_utils.h",
355 "//ppapi/native_client/tests/ppapi_test_lib/module_instance.cc",
356 "//ppapi/native_client/tests/ppapi_test_lib/test_interface.cc",
357 "//ppapi/native_client/tests/ppapi_test_lib/test_interface.h",
358 "//ppapi/native_client/tests/ppapi_test_lib/testable_callback.cc",
359 "//ppapi/native_client/tests/ppapi_test_lib/testable_callback.h",
360 ]
361 deps = [
362 "//native_client/src/shared/gio",
363 "//native_client/src/shared/platform",
364 "//ppapi/native_client:ppapi_lib",
365 ]
366 }
367
368 nacl_test_data("irt_manifest_file") {
369 sources = [
370 "manifest_file/irt_manifest_file_test.cc",
371 ]
372 nmfflags = [
373 "-xtest_file:test_file.txt",
374 "-xnmf says hello world:test_file.txt",
375
376 # There is no dummy_test_file.txt file intentionally. This is just for
377 # a test case where there is a manifest entry, but no actual file.
378 "-xdummy_test_file:dummy_test_file.txt",
379 ]
380 test_files = [ "manifest_file/irt_manifest_file_test.html" ]
381 }
382
383 nacl_test_data("irt_exception_test") {
384 sources = [
385 "irt_exception/irt_exception_test.cc",
386 ]
387 deps = [
388 ":ppapi_test_lib",
389 "//native_client/src/untrusted/nacl:nacl_exception",
390 ]
391 test_files = [ "irt_exception/irt_exception_test.html" ]
392 }
393 }
394
395 if (is_nacl && !is_nacl_nonsfi) {
259 nacl_test_data("simple_test") { 396 nacl_test_data("simple_test") {
260 output_name = "simple" 397 output_name = "simple"
261 sources = [ 398 sources = [
262 "simple.cc", 399 "simple.cc",
263 ] 400 ]
264 test_files = [ "nacl_load_test.html" ] 401 test_files = [ "nacl_load_test.html" ]
265 } 402 }
266 403
267 nacl_test_data("exit_status_test") { 404 nacl_test_data("exit_status_test") {
268 output_name = "pm_exit_status_test" 405 output_name = "pm_exit_status_test"
(...skipping 28 matching lines...) Expand all
297 } 434 }
298 435
299 nacl_test_data("sysconf_nprocessors_onln_test") { 436 nacl_test_data("sysconf_nprocessors_onln_test") {
300 sources = [ 437 sources = [
301 "sysconf_nprocessors_onln/sysconf_nprocessors_onln_test.cc", 438 "sysconf_nprocessors_onln/sysconf_nprocessors_onln_test.cc",
302 ] 439 ]
303 test_files = 440 test_files =
304 [ "sysconf_nprocessors_onln/sysconf_nprocessors_onln_test.html" ] 441 [ "sysconf_nprocessors_onln/sysconf_nprocessors_onln_test.html" ]
305 } 442 }
306 443
307 source_set("ppapi_test_lib") {
308 sources = [
309 # TODO(ncbray) move these files once SCons no longer depends on them.
310 "//ppapi/native_client/tests/ppapi_test_lib/get_browser_interface.cc",
311 "//ppapi/native_client/tests/ppapi_test_lib/get_browser_interface.h",
312 "//ppapi/native_client/tests/ppapi_test_lib/internal_utils.cc",
313 "//ppapi/native_client/tests/ppapi_test_lib/internal_utils.h",
314 "//ppapi/native_client/tests/ppapi_test_lib/module_instance.cc",
315 "//ppapi/native_client/tests/ppapi_test_lib/test_interface.cc",
316 "//ppapi/native_client/tests/ppapi_test_lib/test_interface.h",
317 "//ppapi/native_client/tests/ppapi_test_lib/testable_callback.cc",
318 "//ppapi/native_client/tests/ppapi_test_lib/testable_callback.h",
319 ]
320 deps = [
321 "//native_client/src/shared/gio",
322 "//native_client/src/shared/platform",
323 "//ppapi/native_client:ppapi_lib",
324 ]
325 }
326
327 nacl_test_data("ppapi_progress_events") { 444 nacl_test_data("ppapi_progress_events") {
328 sources = [ 445 sources = [
329 "progress_events/ppapi_progress_events.cc", 446 "progress_events/ppapi_progress_events.cc",
330 ] 447 ]
331 test_files = [ "progress_events/ppapi_progress_events.html" ] 448 test_files = [ "progress_events/ppapi_progress_events.html" ]
332 deps = [ 449 deps = [
333 ":ppapi_test_lib", 450 ":ppapi_test_lib",
334 ] 451 ]
335 } 452 }
336 453
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 528
412 nacl_test_data("ppapi_crash_ppapi_off_main_thread") { 529 nacl_test_data("ppapi_crash_ppapi_off_main_thread") {
413 sources = [ 530 sources = [
414 "crash/ppapi_crash_ppapi_off_main_thread.cc", 531 "crash/ppapi_crash_ppapi_off_main_thread.cc",
415 ] 532 ]
416 deps = [ 533 deps = [
417 ":ppapi_test_lib", 534 ":ppapi_test_lib",
418 ] 535 ]
419 } 536 }
420 537
421 nacl_test_data("irt_manifest_file") {
422 sources = [
423 "manifest_file/irt_manifest_file_test.cc",
424 ]
425 nmfflags = [
426 "-xtest_file:test_file.txt",
427 "-xnmf says hello world:test_file.txt",
428
429 # There is no dummy_test_file.txt file intentionally. This is just for
430 # a test case where there is a manifest entry, but no actual file.
431 "-xdummy_test_file:dummy_test_file.txt",
432 ]
433 test_files = [ "manifest_file/irt_manifest_file_test.html" ]
434 }
435
436 nacl_test_data("irt_exception_test") {
437 sources = [
438 "irt_exception/irt_exception_test.cc",
439 ]
440 deps = [
441 ":ppapi_test_lib",
442 "//native_client/src/untrusted/nacl:nacl_exception",
443 ]
444 test_files = [ "irt_exception/irt_exception_test.html" ]
445 }
446
447 nacl_test_data("ppapi_extension_mime_handler") { 538 nacl_test_data("ppapi_extension_mime_handler") {
448 sources = [ 539 sources = [
449 "extension_mime_handler/ppapi_extension_mime_handler.cc", 540 "extension_mime_handler/ppapi_extension_mime_handler.cc",
450 ] 541 ]
451 deps = [ 542 deps = [
452 ":ppapi_test_lib", 543 ":ppapi_test_lib",
453 ] 544 ]
454 test_files = [ 545 test_files = [
455 "extension_mime_handler/ppapi_extension_mime_handler.html", 546 "extension_mime_handler/ppapi_extension_mime_handler.html",
456 "extension_mime_handler/mime_test_data.dat", 547 "extension_mime_handler/mime_test_data.dat",
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 cflags = [ 676 cflags = [
586 "--pnacl-mips-bias", 677 "--pnacl-mips-bias",
587 "-arch", 678 "-arch",
588 "mips32", 679 "mips32",
589 "--pnacl-allow-translate", 680 "--pnacl-allow-translate",
590 ] 681 ]
591 ldflags = [ "--pnacl-allow-native" ] 682 ldflags = [ "--pnacl-allow-native" ]
592 } 683 }
593 } 684 }
594 } 685 }
686 }
595 687
596 # TODO(phosek): convert the non-SFI tests. 688 if (is_linux && is_clang) {
689 if (target_cpu == "x86") {
690 arch = "x86_32"
691 } else if (target_cpu == "x64") {
692 arch = "x86_64"
693 } else {
694 arch = target_cpu
695 }
696
697 config("nonsfi_libc_free_nexe_config") {
698 cflags = [
699 "-Wno-sign-compare",
700
701 # Stack-Smashing protector does not work with libc-free context.
702 "-fno-stack-protector",
703
704 # Optimizers may translate the original code to code which
705 # requires builtin functions and/or relocations. Specifically,
706 # the LLVM's optimizer translates for-loop based zero
707 # clear to memset.
708 "-O0",
709
710 # ARM GCC emits symbols like __aeabi_unwind_cpp_pr0 in
711 # .exidx sections without this flag.
712 "-fno-unwind-tables",
713 ]
714 }
715
716 executable("nonsfi_libc_free_nexe") {
717 output_name = "libc_free_$arch"
718 output_extension = "nexe"
719 sources = [
720 "nonsfi/libc_free.c",
721 ]
722
723 # Here, we would like to link a relocatable, libc-free executable.
724 # -shared/-fPIC make this binary relocatable. -nostdlib ensures
725 # this is libc-free.
726 # The program does not apply any dynamic relocations at start up,
727 # so it cannot rely on relocations having been applied.
728 # In addition, -fvisibility=hidden avoids creating some types
729 # of relocation.
730 cflags = [
731 "-fPIC",
732 "-fvisibility=hidden",
733 ]
734 ldflags = [
735 "-nostdlib",
736 "-shared",
737
738 # This binary cannot relocate itself, so we should have no
739 # undefined references left.
740 "-Wl,--no-undefined",
741
742 # Silence the warning about the unused '-pthread' argument.
743 "-Qunused-arguments",
744 ]
745 defines = [ "NACL_LINUX=1" ]
746 include_dirs = [ "../../../.." ]
747 configs += [ ":nonsfi_libc_free_nexe_config" ]
748 }
749
750 copy("nonsfi_libc_free") {
751 sources = [
752 "${root_out_dir}/libc_free_${arch}.nexe",
753
754 # TODO(ncbray) move into chrome/test/data/nacl when all tests are
755 # converted.
756 "//ppapi/native_client/tools/browser_tester/browserdata/nacltest.js",
757 "nonsfi/irt_test.html",
758 "nonsfi/libc_free.html",
759 "nonsfi/libc_free.nmf",
760 ]
761 outputs = [
762 "${root_build_dir}/nacl_test_data/libc-free/{{source_file_part}}",
763 ]
764 deps = [
765 ":nonsfi_libc_free_nexe",
766 ]
767 }
597 } 768 }
OLDNEW
« no previous file with comments | « build/config/nacl/rules.gni ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698