OLD | NEW |
| (Empty) |
1 # Copyright 2013 the V8 project authors. All rights reserved. | |
2 # Redistribution and use in source and binary forms, with or without | |
3 # modification, are permitted provided that the following conditions are | |
4 # met: | |
5 # | |
6 # * Redistributions of source code must retain the above copyright | |
7 # notice, this list of conditions and the following disclaimer. | |
8 # * Redistributions in binary form must reproduce the above | |
9 # copyright notice, this list of conditions and the following | |
10 # disclaimer in the documentation and/or other materials provided | |
11 # with the distribution. | |
12 # * Neither the name of Google Inc. nor the names of its | |
13 # contributors may be used to endorse or promote products derived | |
14 # from this software without specific prior written permission. | |
15 # | |
16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
17 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
18 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
19 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
20 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
26 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
27 | |
28 # Shared definitions for all V8-related targets. | |
29 | |
30 { | |
31 'variables': { | |
32 'msvs_use_common_release': 0, | |
33 'clang%': 0, | |
34 'asan%': 0, | |
35 'lsan%': 0, | |
36 'msan%': 0, | |
37 'tsan%': 0, | |
38 'ubsan%': 0, | |
39 'ubsan_vptr%': 0, | |
40 'v8_target_arch%': '<(target_arch)', | |
41 'v8_host_byteorder%': '<!(python -c "import sys; print sys.byteorder")', | |
42 # Native Client builds currently use the V8 ARM JIT and | |
43 # arm/simulator-arm.cc to defer the significant effort required | |
44 # for NaCl JIT support. The nacl_target_arch variable provides | |
45 # the 'true' target arch for places in this file that need it. | |
46 # TODO(bradchen): get rid of nacl_target_arch when someday | |
47 # NaCl V8 builds stop using the ARM simulator | |
48 'nacl_target_arch%': 'none', # must be set externally | |
49 | |
50 # Setting 'v8_can_use_vfp32dregs' to 'true' will cause V8 to use the VFP | |
51 # registers d16-d31 in the generated code, both in the snapshot and for the | |
52 # ARM target. Leaving the default value of 'false' will avoid the use of | |
53 # these registers in the snapshot and use CPU feature probing when running | |
54 # on the target. | |
55 'v8_can_use_vfp32dregs%': 'false', | |
56 'arm_test_noprobe%': 'off', | |
57 | |
58 # Similar to vfp but on MIPS. | |
59 'v8_can_use_fpu_instructions%': 'true', | |
60 | |
61 # Similar to the ARM hard float ABI but on MIPS. | |
62 'v8_use_mips_abi_hardfloat%': 'true', | |
63 | |
64 # Force disable libstdc++ debug mode. | |
65 'disable_glibcxx_debug%': 0, | |
66 | |
67 'v8_enable_backtrace%': 0, | |
68 | |
69 # Enable profiling support. Only required on Windows. | |
70 'v8_enable_prof%': 0, | |
71 | |
72 # Some versions of GCC 4.5 seem to need -fno-strict-aliasing. | |
73 'v8_no_strict_aliasing%': 0, | |
74 | |
75 # Chrome needs this definition unconditionally. For standalone V8 builds, | |
76 # it's handled in build/standalone.gypi. | |
77 'want_separate_host_toolset%': 1, | |
78 | |
79 # Toolset the d8 binary should be compiled for. Possible values are 'host' | |
80 # and 'target'. If you want to run v8 tests, it needs to be set to 'target'. | |
81 # The setting is ignored if want_separate_host_toolset is 0. | |
82 'v8_toolset_for_d8%': 'target', | |
83 | |
84 'host_os%': '<(OS)', | |
85 'werror%': '-Werror', | |
86 # For a shared library build, results in "libv8-<(soname_version).so". | |
87 'soname_version%': '', | |
88 | |
89 # Allow to suppress the array bounds warning (default is no suppression). | |
90 'wno_array_bounds%': '', | |
91 | |
92 # Override where to find binutils | |
93 'binutils_dir%': '', | |
94 | |
95 'conditions': [ | |
96 ['OS=="linux" and host_arch=="x64"', { | |
97 'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin', | |
98 }], | |
99 ['OS=="linux" and host_arch=="ia32"', { | |
100 'binutils_dir%': 'third_party/binutils/Linux_ia32/Release/bin', | |
101 }], | |
102 | |
103 # linux_use_bundled_gold: whether to use the gold linker binary checked | |
104 # into third_party/binutils. Force this off via GYP_DEFINES when you | |
105 # are using a custom toolchain and need to control -B in ldflags. | |
106 # Do not use 32-bit gold on 32-bit hosts as it runs out address space | |
107 # for component=static_library builds. | |
108 ['OS=="linux" and (target_arch=="x64" or target_arch=="arm")', { | |
109 'linux_use_bundled_gold%': 1, | |
110 }, { | |
111 'linux_use_bundled_gold%': 0, | |
112 }], | |
113 # linux_use_bundled_binutils: whether to use the binary binutils | |
114 # checked into third_party/binutils. These are not multi-arch so cannot | |
115 # be used except on x86 and x86-64 (the only two architectures which | |
116 # are currently checke in). Force this off via GYP_DEFINES when you | |
117 # are using a custom toolchain and need to control -B in cflags. | |
118 ['OS=="linux" and (target_arch=="ia32" or target_arch=="x64")', { | |
119 'linux_use_bundled_binutils%': 1, | |
120 }, { | |
121 'linux_use_bundled_binutils%': 0, | |
122 }], | |
123 # linux_use_gold_flags: whether to use build flags that rely on gold. | |
124 # On by default for x64 Linux. | |
125 ['OS=="linux" and target_arch=="x64"', { | |
126 'linux_use_gold_flags%': 1, | |
127 }, { | |
128 'linux_use_gold_flags%': 0, | |
129 }], | |
130 ], | |
131 | |
132 # Link-Time Optimizations | |
133 'use_lto%': 0, | |
134 }, | |
135 'conditions': [ | |
136 ['host_arch=="ia32" or host_arch=="x64" or \ | |
137 host_arch=="ppc" or host_arch=="ppc64" or \ | |
138 host_arch=="s390" or host_arch=="s390x" or \ | |
139 clang==1', { | |
140 'variables': { | |
141 'host_cxx_is_biarch%': 1, | |
142 }, | |
143 }, { | |
144 'variables': { | |
145 'host_cxx_is_biarch%': 0, | |
146 }, | |
147 }], | |
148 ['target_arch=="ia32" or target_arch=="x64" or target_arch=="x87" or \ | |
149 target_arch=="ppc" or target_arch=="ppc64" or target_arch=="s390" or \ | |
150 target_arch=="s390x" or clang==1', { | |
151 'variables': { | |
152 'target_cxx_is_biarch%': 1, | |
153 }, | |
154 }, { | |
155 'variables': { | |
156 'target_cxx_is_biarch%': 0, | |
157 }, | |
158 }], | |
159 ], | |
160 'target_defaults': { | |
161 'conditions': [ | |
162 ['v8_target_arch=="arm"', { | |
163 'defines': [ | |
164 'V8_TARGET_ARCH_ARM', | |
165 ], | |
166 'conditions': [ | |
167 [ 'arm_version==7 or arm_version=="default"', { | |
168 'defines': [ | |
169 'CAN_USE_ARMV7_INSTRUCTIONS', | |
170 ], | |
171 }], | |
172 [ 'arm_fpu=="vfpv3-d16" or arm_fpu=="default"', { | |
173 'defines': [ | |
174 'CAN_USE_VFP3_INSTRUCTIONS', | |
175 ], | |
176 }], | |
177 [ 'arm_fpu=="vfpv3"', { | |
178 'defines': [ | |
179 'CAN_USE_VFP3_INSTRUCTIONS', | |
180 'CAN_USE_VFP32DREGS', | |
181 ], | |
182 }], | |
183 [ 'arm_fpu=="neon"', { | |
184 'defines': [ | |
185 'CAN_USE_VFP3_INSTRUCTIONS', | |
186 'CAN_USE_VFP32DREGS', | |
187 'CAN_USE_NEON', | |
188 ], | |
189 }], | |
190 [ 'arm_test_noprobe=="on"', { | |
191 'defines': [ | |
192 'ARM_TEST_NO_FEATURE_PROBE', | |
193 ], | |
194 }], | |
195 ], | |
196 'target_conditions': [ | |
197 ['_toolset=="host"', { | |
198 'conditions': [ | |
199 ['v8_target_arch==host_arch', { | |
200 # Host built with an Arm CXX compiler. | |
201 'conditions': [ | |
202 [ 'arm_version==7', { | |
203 'cflags': ['-march=armv7-a',], | |
204 }], | |
205 [ 'arm_version==7 or arm_version=="default"', { | |
206 'conditions': [ | |
207 [ 'arm_fpu!="default"', { | |
208 'cflags': ['-mfpu=<(arm_fpu)',], | |
209 }], | |
210 ], | |
211 }], | |
212 [ 'arm_float_abi!="default"', { | |
213 'cflags': ['-mfloat-abi=<(arm_float_abi)',], | |
214 }], | |
215 [ 'arm_thumb==1', { | |
216 'cflags': ['-mthumb',], | |
217 }], | |
218 [ 'arm_thumb==0', { | |
219 'cflags': ['-marm',], | |
220 }], | |
221 ], | |
222 }, { | |
223 # 'v8_target_arch!=host_arch' | |
224 # Host not built with an Arm CXX compiler (simulator build). | |
225 'conditions': [ | |
226 [ 'arm_float_abi=="hard"', { | |
227 'defines': [ | |
228 'USE_EABI_HARDFLOAT=1', | |
229 ], | |
230 }], | |
231 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { | |
232 'defines': [ | |
233 'USE_EABI_HARDFLOAT=0', | |
234 ], | |
235 }], | |
236 ], | |
237 }], | |
238 ], | |
239 }], # _toolset=="host" | |
240 ['_toolset=="target"', { | |
241 'conditions': [ | |
242 ['v8_target_arch==target_arch', { | |
243 # Target built with an Arm CXX compiler. | |
244 'conditions': [ | |
245 [ 'arm_version==7', { | |
246 'cflags': ['-march=armv7-a',], | |
247 }], | |
248 [ 'arm_version==7 or arm_version=="default"', { | |
249 'conditions': [ | |
250 [ 'arm_fpu!="default"', { | |
251 'cflags': ['-mfpu=<(arm_fpu)',], | |
252 }], | |
253 ], | |
254 }], | |
255 [ 'arm_float_abi!="default"', { | |
256 'cflags': ['-mfloat-abi=<(arm_float_abi)',], | |
257 }], | |
258 [ 'arm_thumb==1', { | |
259 'cflags': ['-mthumb',], | |
260 }], | |
261 [ 'arm_thumb==0', { | |
262 'cflags': ['-marm',], | |
263 }], | |
264 ], | |
265 }, { | |
266 # 'v8_target_arch!=target_arch' | |
267 # Target not built with an Arm CXX compiler (simulator build). | |
268 'conditions': [ | |
269 [ 'arm_float_abi=="hard"', { | |
270 'defines': [ | |
271 'USE_EABI_HARDFLOAT=1', | |
272 ], | |
273 }], | |
274 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { | |
275 'defines': [ | |
276 'USE_EABI_HARDFLOAT=0', | |
277 ], | |
278 }], | |
279 ], | |
280 }], | |
281 # Disable GCC LTO for v8 | |
282 # v8 is optimized for speed. Because GCC LTO merges flags at link | |
283 # time, we disable LTO to prevent any -O2 flags from taking | |
284 # precedence over v8's -Os flag. However, LLVM LTO does not work | |
285 # this way so we keep LTO enabled under LLVM. | |
286 ['clang==0 and use_lto==1', { | |
287 'cflags!': [ | |
288 '-flto', | |
289 '-ffat-lto-objects', | |
290 ], | |
291 }], | |
292 ], | |
293 }], # _toolset=="target" | |
294 ], | |
295 }], # v8_target_arch=="arm" | |
296 ['v8_target_arch=="arm64"', { | |
297 'defines': [ | |
298 'V8_TARGET_ARCH_ARM64', | |
299 ], | |
300 }], | |
301 ['v8_target_arch=="s390" or v8_target_arch=="s390x"', { | |
302 'defines': [ | |
303 'V8_TARGET_ARCH_S390', | |
304 ], | |
305 'conditions': [ | |
306 ['v8_target_arch=="s390x"', { | |
307 'defines': [ | |
308 'V8_TARGET_ARCH_S390X', | |
309 ], | |
310 }], | |
311 ['v8_host_byteorder=="little"', { | |
312 'defines': [ | |
313 'V8_TARGET_ARCH_S390_LE_SIM', | |
314 ], | |
315 }], | |
316 ], | |
317 }], # s390 | |
318 ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', { | |
319 'defines': [ | |
320 'V8_TARGET_ARCH_PPC', | |
321 ], | |
322 'conditions': [ | |
323 ['v8_target_arch=="ppc64"', { | |
324 'defines': [ | |
325 'V8_TARGET_ARCH_PPC64', | |
326 ], | |
327 }], | |
328 ['v8_host_byteorder=="little"', { | |
329 'defines': [ | |
330 'V8_TARGET_ARCH_PPC_LE', | |
331 ], | |
332 }], | |
333 ['v8_host_byteorder=="big"', { | |
334 'defines': [ | |
335 'V8_TARGET_ARCH_PPC_BE', | |
336 ], | |
337 'conditions': [ | |
338 ['OS=="aix"', { | |
339 # Work around AIX ceil, trunc and round oddities. | |
340 'cflags': [ '-mcpu=power5+ -mfprnd' ], | |
341 }], | |
342 ['OS=="aix"', { | |
343 # Work around AIX assembler popcntb bug. | |
344 'cflags': [ '-mno-popcntb' ], | |
345 }], | |
346 ], | |
347 }], | |
348 ], | |
349 }], # ppc | |
350 ['v8_target_arch=="ia32"', { | |
351 'defines': [ | |
352 'V8_TARGET_ARCH_IA32', | |
353 ], | |
354 }], # v8_target_arch=="ia32" | |
355 ['v8_target_arch=="x87"', { | |
356 'defines': [ | |
357 'V8_TARGET_ARCH_X87', | |
358 ], | |
359 'cflags': ['-march=i586'], | |
360 }], # v8_target_arch=="x87" | |
361 ['(v8_target_arch=="mips" or v8_target_arch=="mipsel" \ | |
362 or v8_target_arch=="mips64" or v8_target_arch=="mips64el") \ | |
363 and v8_target_arch==target_arch', { | |
364 'target_conditions': [ | |
365 ['_toolset=="target"', { | |
366 # Target built with a Mips CXX compiler. | |
367 'variables': { | |
368 'ldso_path%': '<!(/bin/echo -n $LDSO_PATH)', | |
369 'ld_r_path%': '<!(/bin/echo -n $LD_R_PATH)', | |
370 }, | |
371 'conditions': [ | |
372 ['ldso_path!=""', { | |
373 'ldflags': ['-Wl,--dynamic-linker=<(ldso_path)'], | |
374 }], | |
375 ['ld_r_path!=""', { | |
376 'ldflags': ['-Wl,--rpath=<(ld_r_path)'], | |
377 }], | |
378 [ 'clang==1', { | |
379 'cflags': ['-integrated-as'], | |
380 }], | |
381 ], | |
382 }], | |
383 ], | |
384 }], | |
385 ['v8_target_arch=="mips"', { | |
386 'defines': [ | |
387 'V8_TARGET_ARCH_MIPS', | |
388 ], | |
389 'conditions': [ | |
390 [ 'v8_can_use_fpu_instructions=="true"', { | |
391 'defines': [ | |
392 'CAN_USE_FPU_INSTRUCTIONS', | |
393 ], | |
394 }], | |
395 [ 'v8_use_mips_abi_hardfloat=="true"', { | |
396 'defines': [ | |
397 '__mips_hard_float=1', | |
398 'CAN_USE_FPU_INSTRUCTIONS', | |
399 ], | |
400 }, { | |
401 'defines': [ | |
402 '__mips_soft_float=1' | |
403 ] | |
404 }], | |
405 ], | |
406 'target_conditions': [ | |
407 ['_toolset=="target"', { | |
408 'conditions': [ | |
409 ['v8_target_arch==target_arch', { | |
410 # Target built with a Mips CXX compiler. | |
411 'cflags': [ | |
412 '-EB', | |
413 '-Wno-error=array-bounds', # Workaround https://gcc.gnu.org/b
ugzilla/show_bug.cgi?id=56273 | |
414 ], | |
415 'ldflags': ['-EB'], | |
416 'conditions': [ | |
417 [ 'v8_use_mips_abi_hardfloat=="true"', { | |
418 'cflags': ['-mhard-float'], | |
419 'ldflags': ['-mhard-float'], | |
420 }, { | |
421 'cflags': ['-msoft-float'], | |
422 'ldflags': ['-msoft-float'], | |
423 }], | |
424 ['mips_arch_variant=="r6"', { | |
425 'defines': [ | |
426 '_MIPS_ARCH_MIPS32R6', | |
427 'FPU_MODE_FP64', | |
428 ], | |
429 'cflags!': ['-mfp32', '-mfpxx'], | |
430 'conditions': [ | |
431 [ 'clang==0', { | |
432 'cflags': ['-Wa,-mips32r6'], | |
433 }], | |
434 ], | |
435 'cflags': ['-mips32r6'], | |
436 'ldflags': ['-mips32r6'], | |
437 }], | |
438 ['mips_arch_variant=="r2"', { | |
439 'conditions': [ | |
440 [ 'mips_fpu_mode=="fp64"', { | |
441 'defines': [ | |
442 '_MIPS_ARCH_MIPS32R2', | |
443 'FPU_MODE_FP64', | |
444 ], | |
445 'cflags': ['-mfp64'], | |
446 }], | |
447 ['mips_fpu_mode=="fpxx"', { | |
448 'defines': [ | |
449 '_MIPS_ARCH_MIPS32R2', | |
450 'FPU_MODE_FPXX', | |
451 ], | |
452 'cflags': ['-mfpxx'], | |
453 }], | |
454 ['mips_fpu_mode=="fp32"', { | |
455 'defines': [ | |
456 '_MIPS_ARCH_MIPS32R2', | |
457 'FPU_MODE_FP32', | |
458 ], | |
459 'cflags': ['-mfp32'], | |
460 }], | |
461 [ 'clang==0', { | |
462 'cflags': ['-Wa,-mips32r2'], | |
463 }], | |
464 ], | |
465 'cflags': ['-mips32r2'], | |
466 'ldflags': ['-mips32r2'], | |
467 }], | |
468 ['mips_arch_variant=="r1"', { | |
469 'defines': [ | |
470 'FPU_MODE_FP32', | |
471 ], | |
472 'cflags!': ['-mfp64', '-mfpxx'], | |
473 'conditions': [ | |
474 [ 'clang==0', { | |
475 'cflags': ['-Wa,-mips32'], | |
476 }], | |
477 ], | |
478 'cflags': ['-mips32'], | |
479 'ldflags': ['-mips32'], | |
480 }], | |
481 ['mips_arch_variant=="rx"', { | |
482 'defines': [ | |
483 '_MIPS_ARCH_MIPS32RX', | |
484 'FPU_MODE_FPXX', | |
485 ], | |
486 'cflags!': ['-mfp64', '-mfp32'], | |
487 'conditions': [ | |
488 [ 'clang==0', { | |
489 'cflags': ['-Wa,-mips32'], | |
490 }], | |
491 ], | |
492 'cflags': ['-mips32', '-mfpxx'], | |
493 'ldflags': ['-mips32'], | |
494 }], | |
495 ], | |
496 }, { | |
497 # 'v8_target_arch!=target_arch' | |
498 # Target not built with an MIPS CXX compiler (simulator build). | |
499 'conditions': [ | |
500 ['mips_arch_variant=="r6"', { | |
501 'defines': [ | |
502 '_MIPS_ARCH_MIPS32R6', | |
503 'FPU_MODE_FP64', | |
504 ], | |
505 }], | |
506 ['mips_arch_variant=="r2"', { | |
507 'conditions': [ | |
508 [ 'mips_fpu_mode=="fp64"', { | |
509 'defines': [ | |
510 '_MIPS_ARCH_MIPS32R2', | |
511 'FPU_MODE_FP64', | |
512 ], | |
513 }], | |
514 ['mips_fpu_mode=="fpxx"', { | |
515 'defines': [ | |
516 '_MIPS_ARCH_MIPS32R2', | |
517 'FPU_MODE_FPXX', | |
518 ], | |
519 }], | |
520 ['mips_fpu_mode=="fp32"', { | |
521 'defines': [ | |
522 '_MIPS_ARCH_MIPS32R2', | |
523 'FPU_MODE_FP32', | |
524 ], | |
525 }], | |
526 ], | |
527 }], | |
528 ['mips_arch_variant=="r1"', { | |
529 'defines': [ | |
530 'FPU_MODE_FP32', | |
531 ], | |
532 }], | |
533 ['mips_arch_variant=="rx"', { | |
534 'defines': [ | |
535 '_MIPS_ARCH_MIPS32RX', | |
536 'FPU_MODE_FPXX', | |
537 ], | |
538 }], | |
539 ], | |
540 }], | |
541 ], | |
542 }], #_toolset=="target" | |
543 ['_toolset=="host"', { | |
544 'conditions': [ | |
545 ['mips_arch_variant=="rx"', { | |
546 'defines': [ | |
547 '_MIPS_ARCH_MIPS32RX', | |
548 'FPU_MODE_FPXX', | |
549 ], | |
550 }], | |
551 ['mips_arch_variant=="r6"', { | |
552 'defines': [ | |
553 '_MIPS_ARCH_MIPS32R6', | |
554 'FPU_MODE_FP64', | |
555 ], | |
556 }], | |
557 ['mips_arch_variant=="r2"', { | |
558 'conditions': [ | |
559 ['mips_fpu_mode=="fp64"', { | |
560 'defines': [ | |
561 '_MIPS_ARCH_MIPS32R2', | |
562 'FPU_MODE_FP64', | |
563 ], | |
564 }], | |
565 ['mips_fpu_mode=="fpxx"', { | |
566 'defines': [ | |
567 '_MIPS_ARCH_MIPS32R2', | |
568 'FPU_MODE_FPXX', | |
569 ], | |
570 }], | |
571 ['mips_fpu_mode=="fp32"', { | |
572 'defines': [ | |
573 '_MIPS_ARCH_MIPS32R2', | |
574 'FPU_MODE_FP32' | |
575 ], | |
576 }], | |
577 ], | |
578 }], | |
579 ['mips_arch_variant=="r1"', { | |
580 'defines': ['FPU_MODE_FP32',], | |
581 }], | |
582 ] | |
583 }], #_toolset=="host" | |
584 ], | |
585 }], # v8_target_arch=="mips" | |
586 ['v8_target_arch=="mipsel"', { | |
587 'defines': [ | |
588 'V8_TARGET_ARCH_MIPS', | |
589 ], | |
590 'conditions': [ | |
591 [ 'v8_can_use_fpu_instructions=="true"', { | |
592 'defines': [ | |
593 'CAN_USE_FPU_INSTRUCTIONS', | |
594 ], | |
595 }], | |
596 [ 'v8_use_mips_abi_hardfloat=="true"', { | |
597 'defines': [ | |
598 '__mips_hard_float=1', | |
599 'CAN_USE_FPU_INSTRUCTIONS', | |
600 ], | |
601 }, { | |
602 'defines': [ | |
603 '__mips_soft_float=1' | |
604 ], | |
605 }], | |
606 ], | |
607 'target_conditions': [ | |
608 ['_toolset=="target"', { | |
609 'conditions': [ | |
610 ['v8_target_arch==target_arch', { | |
611 # Target built with a Mips CXX compiler. | |
612 'cflags': [ | |
613 '-EL', | |
614 '-Wno-error=array-bounds', # Workaround https://gcc.gnu.org/b
ugzilla/show_bug.cgi?id=56273 | |
615 ], | |
616 'ldflags': ['-EL'], | |
617 'conditions': [ | |
618 [ 'v8_use_mips_abi_hardfloat=="true"', { | |
619 'cflags': ['-mhard-float'], | |
620 'ldflags': ['-mhard-float'], | |
621 }, { | |
622 'cflags': ['-msoft-float'], | |
623 'ldflags': ['-msoft-float'], | |
624 }], | |
625 ['mips_arch_variant=="r6"', { | |
626 'defines': [ | |
627 '_MIPS_ARCH_MIPS32R6', | |
628 'FPU_MODE_FP64', | |
629 ], | |
630 'cflags!': ['-mfp32', '-mfpxx'], | |
631 'conditions': [ | |
632 [ 'clang==0', { | |
633 'cflags': ['-Wa,-mips32r6'], | |
634 }], | |
635 ], | |
636 'cflags': ['-mips32r6'], | |
637 'ldflags': ['-mips32r6'], | |
638 }], | |
639 ['mips_arch_variant=="r2"', { | |
640 'conditions': [ | |
641 [ 'mips_fpu_mode=="fp64"', { | |
642 'defines': [ | |
643 '_MIPS_ARCH_MIPS32R2', | |
644 'FPU_MODE_FP64', | |
645 ], | |
646 'cflags': ['-mfp64'], | |
647 }], | |
648 ['mips_fpu_mode=="fpxx"', { | |
649 'defines': [ | |
650 '_MIPS_ARCH_MIPS32R2', | |
651 'FPU_MODE_FPXX', | |
652 ], | |
653 'cflags': ['-mfpxx'], | |
654 }], | |
655 ['mips_fpu_mode=="fp32"', { | |
656 'defines': [ | |
657 '_MIPS_ARCH_MIPS32R2', | |
658 'FPU_MODE_FP32', | |
659 ], | |
660 'cflags': ['-mfp32'], | |
661 }], | |
662 [ 'clang==0', { | |
663 'cflags': ['-Wa,-mips32r2'], | |
664 }], | |
665 ], | |
666 'cflags': ['-mips32r2'], | |
667 'ldflags': ['-mips32r2'], | |
668 }], | |
669 ['mips_arch_variant=="r1"', { | |
670 'cflags!': ['-mfp64', '-mfpxx'], | |
671 'conditions': [ | |
672 [ 'clang==0', { | |
673 'cflags': ['-Wa,-mips32'], | |
674 }], | |
675 ], | |
676 'cflags': ['-mips32'], | |
677 'ldflags': ['-mips32'], | |
678 }], | |
679 ['mips_arch_variant=="rx"', { | |
680 'defines': [ | |
681 '_MIPS_ARCH_MIPS32RX', | |
682 'FPU_MODE_FPXX', | |
683 ], | |
684 'cflags!': ['-mfp64', '-mfp32'], | |
685 'conditions': [ | |
686 [ 'clang==0', { | |
687 'cflags': ['-Wa,-mips32'], | |
688 }], | |
689 ], | |
690 'cflags': ['-mips32', '-mfpxx'], | |
691 'ldflags': ['-mips32'], | |
692 }], | |
693 ['mips_arch_variant=="loongson"', { | |
694 'defines': [ | |
695 '_MIPS_ARCH_LOONGSON', | |
696 'FPU_MODE_FP32', | |
697 ], | |
698 'cflags!': ['-mfp64', '-mfpxx'], | |
699 'conditions': [ | |
700 [ 'clang==0', { | |
701 'cflags': ['-Wa,-mips3'], | |
702 }], | |
703 ], | |
704 'cflags': ['-mips3', '-mfp32'], | |
705 }], | |
706 ], | |
707 }, { | |
708 # 'v8_target_arch!=target_arch' | |
709 # Target not built with an MIPS CXX compiler (simulator build). | |
710 'conditions': [ | |
711 ['mips_arch_variant=="r6"', { | |
712 'defines': [ | |
713 '_MIPS_ARCH_MIPS32R6', | |
714 'FPU_MODE_FP64', | |
715 ], | |
716 }], | |
717 ['mips_arch_variant=="r2"', { | |
718 'conditions': [ | |
719 [ 'mips_fpu_mode=="fp64"', { | |
720 'defines': [ | |
721 '_MIPS_ARCH_MIPS32R2', | |
722 'FPU_MODE_FP64', | |
723 ], | |
724 }], | |
725 ['mips_fpu_mode=="fpxx"', { | |
726 'defines': [ | |
727 '_MIPS_ARCH_MIPS32R2', | |
728 'FPU_MODE_FPXX', | |
729 ], | |
730 }], | |
731 ['mips_fpu_mode=="fp32"', { | |
732 'defines': [ | |
733 '_MIPS_ARCH_MIPS32R2', | |
734 'FPU_MODE_FP32', | |
735 ], | |
736 }], | |
737 ], | |
738 }], | |
739 ['mips_arch_variant=="r1"', { | |
740 'defines': [ | |
741 'FPU_MODE_FP32', | |
742 ], | |
743 }], | |
744 ['mips_arch_variant=="rx"', { | |
745 'defines': [ | |
746 '_MIPS_ARCH_MIPS32RX', | |
747 'FPU_MODE_FPXX', | |
748 ], | |
749 }], | |
750 ['mips_arch_variant=="loongson"', { | |
751 'defines': [ | |
752 '_MIPS_ARCH_LOONGSON', | |
753 'FPU_MODE_FP32', | |
754 ], | |
755 }], | |
756 ], | |
757 }], | |
758 ], | |
759 }], #_toolset=="target | |
760 ['_toolset=="host"', { | |
761 'conditions': [ | |
762 ['mips_arch_variant=="rx"', { | |
763 'defines': [ | |
764 '_MIPS_ARCH_MIPS32RX', | |
765 'FPU_MODE_FPXX', | |
766 ], | |
767 }], | |
768 ['mips_arch_variant=="r6"', { | |
769 'defines': [ | |
770 '_MIPS_ARCH_MIPS32R6', | |
771 'FPU_MODE_FP64', | |
772 ], | |
773 }], | |
774 ['mips_arch_variant=="r2"', { | |
775 'conditions': [ | |
776 ['mips_fpu_mode=="fp64"', { | |
777 'defines': [ | |
778 '_MIPS_ARCH_MIPS32R2', | |
779 'FPU_MODE_FP64', | |
780 ], | |
781 }], | |
782 ['mips_fpu_mode=="fpxx"', { | |
783 'defines': [ | |
784 '_MIPS_ARCH_MIPS32R2', | |
785 'FPU_MODE_FPXX', | |
786 ], | |
787 }], | |
788 ['mips_fpu_mode=="fp32"', { | |
789 'defines': [ | |
790 '_MIPS_ARCH_MIPS32R2', | |
791 'FPU_MODE_FP32' | |
792 ], | |
793 }], | |
794 ], | |
795 }], | |
796 ['mips_arch_variant=="r1"', { | |
797 'defines': ['FPU_MODE_FP32',], | |
798 }], | |
799 ['mips_arch_variant=="loongson"', { | |
800 'defines': [ | |
801 '_MIPS_ARCH_LOONGSON', | |
802 'FPU_MODE_FP32', | |
803 ], | |
804 }], | |
805 ] | |
806 }], | |
807 ], | |
808 }], # v8_target_arch=="mipsel" | |
809 ['v8_target_arch=="mips64el" or v8_target_arch=="mips64"', { | |
810 'defines': [ | |
811 'V8_TARGET_ARCH_MIPS64', | |
812 ], | |
813 'conditions': [ | |
814 [ 'v8_can_use_fpu_instructions=="true"', { | |
815 'defines': [ | |
816 'CAN_USE_FPU_INSTRUCTIONS', | |
817 ], | |
818 }], | |
819 [ 'v8_host_byteorder=="little"', { | |
820 'defines': [ | |
821 'V8_TARGET_ARCH_MIPS64_LE', | |
822 ], | |
823 }], | |
824 [ 'v8_host_byteorder=="big"', { | |
825 'defines': [ | |
826 'V8_TARGET_ARCH_MIPS64_BE', | |
827 ], | |
828 }], | |
829 [ 'v8_use_mips_abi_hardfloat=="true"', { | |
830 'defines': [ | |
831 '__mips_hard_float=1', | |
832 'CAN_USE_FPU_INSTRUCTIONS', | |
833 ], | |
834 }, { | |
835 'defines': [ | |
836 '__mips_soft_float=1' | |
837 ], | |
838 }], | |
839 ], | |
840 'target_conditions': [ | |
841 ['_toolset=="target"', { | |
842 'conditions': [ | |
843 ['v8_target_arch==target_arch', { | |
844 'cflags': [ | |
845 '-Wno-error=array-bounds', # Workaround https://gcc.gnu.org/b
ugzilla/show_bug.cgi?id=56273 | |
846 ], | |
847 'conditions': [ | |
848 ['v8_target_arch=="mips64el"', { | |
849 'cflags': ['-EL'], | |
850 'ldflags': ['-EL'], | |
851 }], | |
852 ['v8_target_arch=="mips64"', { | |
853 'cflags': ['-EB'], | |
854 'ldflags': ['-EB'], | |
855 }], | |
856 [ 'v8_use_mips_abi_hardfloat=="true"', { | |
857 'cflags': ['-mhard-float'], | |
858 'ldflags': ['-mhard-float'], | |
859 }, { | |
860 'cflags': ['-msoft-float'], | |
861 'ldflags': ['-msoft-float'], | |
862 }], | |
863 ['mips_arch_variant=="r6"', { | |
864 'defines': ['_MIPS_ARCH_MIPS64R6',], | |
865 'conditions': [ | |
866 [ 'clang==0', { | |
867 'cflags': ['-Wa,-mips64r6'], | |
868 }], | |
869 ], | |
870 'cflags': ['-mips64r6', '-mabi=64'], | |
871 'ldflags': ['-mips64r6', '-mabi=64'], | |
872 }], | |
873 ['mips_arch_variant=="r2"', { | |
874 'defines': ['_MIPS_ARCH_MIPS64R2',], | |
875 'conditions': [ | |
876 [ 'clang==0', { | |
877 'cflags': ['-Wa,-mips64r2'], | |
878 }], | |
879 ], | |
880 'cflags': ['-mips64r2', '-mabi=64'], | |
881 'ldflags': ['-mips64r2', '-mabi=64'], | |
882 }], | |
883 ], | |
884 }, { | |
885 # 'v8_target_arch!=target_arch' | |
886 # Target not built with an MIPS CXX compiler (simulator build). | |
887 'conditions': [ | |
888 ['mips_arch_variant=="r6"', { | |
889 'defines': ['_MIPS_ARCH_MIPS64R6',], | |
890 }], | |
891 ['mips_arch_variant=="r2"', { | |
892 'defines': ['_MIPS_ARCH_MIPS64R2',], | |
893 }], | |
894 ], | |
895 }], | |
896 ], | |
897 }], #'_toolset=="target" | |
898 ['_toolset=="host"', { | |
899 'conditions': [ | |
900 ['mips_arch_variant=="r6"', { | |
901 'defines': ['_MIPS_ARCH_MIPS64R6',], | |
902 }], | |
903 ['mips_arch_variant=="r2"', { | |
904 'defines': ['_MIPS_ARCH_MIPS64R2',], | |
905 }], | |
906 ], | |
907 }], #'_toolset=="host" | |
908 ], | |
909 }], # v8_target_arch=="mips64el" | |
910 ['v8_target_arch=="x64"', { | |
911 'defines': [ | |
912 'V8_TARGET_ARCH_X64', | |
913 ], | |
914 'xcode_settings': { | |
915 'ARCHS': [ 'x86_64' ], | |
916 }, | |
917 'msvs_settings': { | |
918 'VCLinkerTool': { | |
919 'StackReserveSize': '2097152', | |
920 }, | |
921 }, | |
922 'msvs_configuration_platform': 'x64', | |
923 }], # v8_target_arch=="x64" | |
924 ['v8_target_arch=="x32"', { | |
925 'defines': [ | |
926 # x32 port shares the source code with x64 port. | |
927 'V8_TARGET_ARCH_X64', | |
928 'V8_TARGET_ARCH_32_BIT', | |
929 ], | |
930 'cflags': [ | |
931 '-mx32', | |
932 # Inhibit warning if long long type is used. | |
933 '-Wno-long-long', | |
934 ], | |
935 'ldflags': [ | |
936 '-mx32', | |
937 ], | |
938 }], # v8_target_arch=="x32" | |
939 ['linux_use_gold_flags==1', { | |
940 # Newer gccs and clangs support -fuse-ld, use the flag to force gold | |
941 # selection. | |
942 # gcc -- http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Optimize-Options.ht
ml | |
943 'ldflags': [ '-fuse-ld=gold', ], | |
944 }], | |
945 ['linux_use_bundled_binutils==1', { | |
946 'cflags': [ | |
947 '-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)', | |
948 ], | |
949 }], | |
950 ['linux_use_bundled_gold==1', { | |
951 # Put our binutils, which contains gold in the search path. We pass | |
952 # the path to gold to the compiler. gyp leaves unspecified what the | |
953 # cwd is when running the compiler, so the normal gyp path-munging | |
954 # fails us. This hack gets the right path. | |
955 'ldflags': [ | |
956 '-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)', | |
957 ], | |
958 }], | |
959 ['OS=="win"', { | |
960 'defines': [ | |
961 'WIN32', | |
962 ], | |
963 # 4351: VS 2005 and later are warning us that they've fixed a bug | |
964 # present in VS 2003 and earlier. | |
965 'msvs_disabled_warnings': [4351], | |
966 'msvs_configuration_attributes': { | |
967 'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)', | |
968 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', | |
969 'CharacterSet': '1', | |
970 }, | |
971 }], | |
972 ['OS=="win" and v8_target_arch=="ia32"', { | |
973 'msvs_settings': { | |
974 'VCCLCompilerTool': { | |
975 # Ensure no surprising artifacts from 80bit double math with x86. | |
976 'AdditionalOptions': ['/arch:SSE2'], | |
977 }, | |
978 }, | |
979 }], | |
980 ['OS=="win" and v8_enable_prof==1', { | |
981 'msvs_settings': { | |
982 'VCLinkerTool': { | |
983 'GenerateMapFile': 'true', | |
984 }, | |
985 }, | |
986 }], | |
987 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ | |
988 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ | |
989 v8_target_arch=="ia32"', { | |
990 'cflags': [ | |
991 '-msse2', | |
992 '-mfpmath=sse', | |
993 '-mmmx', # Allows mmintrin.h for MMX intrinsics. | |
994 ], | |
995 }], | |
996 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ | |
997 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ | |
998 (v8_target_arch=="arm" or v8_target_arch=="ia32" or \ | |
999 v8_target_arch=="x87" or v8_target_arch=="mips" or \ | |
1000 v8_target_arch=="mipsel" or v8_target_arch=="ppc" or \ | |
1001 v8_target_arch=="s390")', { | |
1002 'target_conditions': [ | |
1003 ['_toolset=="host"', { | |
1004 'conditions': [ | |
1005 ['host_cxx_is_biarch==1', { | |
1006 'conditions': [ | |
1007 ['host_arch=="s390" or host_arch=="s390x"', { | |
1008 'cflags': [ '-m31' ], | |
1009 'ldflags': [ '-m31' ] | |
1010 },{ | |
1011 'cflags': [ '-m32' ], | |
1012 'ldflags': [ '-m32' ] | |
1013 }], | |
1014 ], | |
1015 }], | |
1016 ], | |
1017 'xcode_settings': { | |
1018 'ARCHS': [ 'i386' ], | |
1019 }, | |
1020 }], | |
1021 ['_toolset=="target"', { | |
1022 'conditions': [ | |
1023 ['target_cxx_is_biarch==1 and nacl_target_arch!="nacl_x64"', { | |
1024 'conditions': [ | |
1025 ['host_arch=="s390" or host_arch=="s390x"', { | |
1026 'cflags': [ '-m31' ], | |
1027 'ldflags': [ '-m31' ] | |
1028 },{ | |
1029 'cflags': [ '-m32' ], | |
1030 'ldflags': [ '-m32' ], | |
1031 }], | |
1032 ], | |
1033 }], | |
1034 ], | |
1035 'xcode_settings': { | |
1036 'ARCHS': [ 'i386' ], | |
1037 }, | |
1038 }], | |
1039 ], | |
1040 }], | |
1041 ['(OS=="linux" or OS=="android") and \ | |
1042 (v8_target_arch=="x64" or v8_target_arch=="arm64" or \ | |
1043 v8_target_arch=="ppc64" or v8_target_arch=="s390x")', { | |
1044 'target_conditions': [ | |
1045 ['_toolset=="host"', { | |
1046 'conditions': [ | |
1047 ['host_cxx_is_biarch==1', { | |
1048 'cflags': [ '-m64' ], | |
1049 'ldflags': [ '-m64' ] | |
1050 }], | |
1051 ], | |
1052 }], | |
1053 ['_toolset=="target"', { | |
1054 'conditions': [ | |
1055 ['target_cxx_is_biarch==1', { | |
1056 'cflags': [ '-m64' ], | |
1057 'ldflags': [ '-m64' ], | |
1058 }], | |
1059 ] | |
1060 }], | |
1061 ], | |
1062 }], | |
1063 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ | |
1064 or OS=="netbsd" or OS=="qnx" or OS=="aix"', { | |
1065 'conditions': [ | |
1066 [ 'v8_no_strict_aliasing==1', { | |
1067 'cflags': [ '-fno-strict-aliasing' ], | |
1068 }], | |
1069 ], # conditions | |
1070 }], | |
1071 ['OS=="solaris"', { | |
1072 'defines': [ '__C99FEATURES__=1' ], # isinf() etc. | |
1073 }], | |
1074 ['OS=="freebsd" or OS=="openbsd"', { | |
1075 'cflags': [ '-I/usr/local/include' ], | |
1076 }], | |
1077 ['OS=="netbsd"', { | |
1078 'cflags': [ '-I/usr/pkg/include' ], | |
1079 }], | |
1080 ['OS=="aix"', { | |
1081 'defines': [ | |
1082 # Support for malloc(0) | |
1083 '_LINUX_SOURCE_COMPAT=1', | |
1084 '_ALL_SOURCE=1'], | |
1085 'conditions': [ | |
1086 [ 'v8_target_arch=="ppc"', { | |
1087 'ldflags': [ '-Wl,-bmaxdata:0x60000000/dsa' ], | |
1088 }], | |
1089 [ 'v8_target_arch=="ppc64"', { | |
1090 'cflags': [ '-maix64' ], | |
1091 'ldflags': [ '-maix64' ], | |
1092 }], | |
1093 ], | |
1094 }], | |
1095 ], # conditions | |
1096 'configurations': { | |
1097 # Abstract configuration for v8_optimized_debug == 0. | |
1098 'DebugBase0': { | |
1099 'abstract': 1, | |
1100 'msvs_settings': { | |
1101 'VCCLCompilerTool': { | |
1102 'Optimization': '0', | |
1103 'conditions': [ | |
1104 ['component=="shared_library"', { | |
1105 'RuntimeLibrary': '3', # /MDd | |
1106 }, { | |
1107 'RuntimeLibrary': '1', # /MTd | |
1108 }], | |
1109 ], | |
1110 }, | |
1111 'VCLinkerTool': { | |
1112 'LinkIncremental': '2', | |
1113 }, | |
1114 }, | |
1115 'variables': { | |
1116 'v8_enable_slow_dchecks%': 1, | |
1117 }, | |
1118 'conditions': [ | |
1119 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ | |
1120 OS=="qnx" or OS=="aix"', { | |
1121 'cflags!': [ | |
1122 '-O3', | |
1123 '-O2', | |
1124 '-O1', | |
1125 '-Os', | |
1126 ], | |
1127 'cflags': [ | |
1128 '-fdata-sections', | |
1129 '-ffunction-sections', | |
1130 ], | |
1131 }], | |
1132 ['OS=="mac"', { | |
1133 'xcode_settings': { | |
1134 'GCC_OPTIMIZATION_LEVEL': '0', # -O0 | |
1135 }, | |
1136 }], | |
1137 ['v8_enable_slow_dchecks==1', { | |
1138 'defines': [ | |
1139 'ENABLE_SLOW_DCHECKS', | |
1140 ], | |
1141 }], | |
1142 ], | |
1143 }, # DebugBase0 | |
1144 # Abstract configuration for v8_optimized_debug == 1. | |
1145 'DebugBase1': { | |
1146 'abstract': 1, | |
1147 'msvs_settings': { | |
1148 'VCCLCompilerTool': { | |
1149 'Optimization': '2', | |
1150 'InlineFunctionExpansion': '2', | |
1151 'EnableIntrinsicFunctions': 'true', | |
1152 'FavorSizeOrSpeed': '0', | |
1153 'StringPooling': 'true', | |
1154 'BasicRuntimeChecks': '0', | |
1155 'conditions': [ | |
1156 ['component=="shared_library"', { | |
1157 'RuntimeLibrary': '3', #/MDd | |
1158 }, { | |
1159 'RuntimeLibrary': '1', #/MTd | |
1160 }], | |
1161 ], | |
1162 }, | |
1163 'VCLinkerTool': { | |
1164 'LinkIncremental': '1', | |
1165 'OptimizeReferences': '2', | |
1166 'EnableCOMDATFolding': '2', | |
1167 }, | |
1168 }, | |
1169 'variables': { | |
1170 'v8_enable_slow_dchecks%': 0, | |
1171 }, | |
1172 'conditions': [ | |
1173 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ | |
1174 OS=="qnx" or OS=="aix"', { | |
1175 'cflags!': [ | |
1176 '-O0', | |
1177 '-O1', | |
1178 '-Os', | |
1179 ], | |
1180 'cflags': [ | |
1181 '-fdata-sections', | |
1182 '-ffunction-sections', | |
1183 ], | |
1184 'conditions': [ | |
1185 # TODO(crbug.com/272548): Avoid -O3 in NaCl | |
1186 # Don't use -O3 with sanitizers. | |
1187 ['nacl_target_arch=="none" and asan==0 and msan==0 and lsan==0 \ | |
1188 and tsan==0 and ubsan==0 and ubsan_vptr==0', { | |
1189 'cflags': ['-O3'], | |
1190 'cflags!': ['-O2'], | |
1191 }, { | |
1192 'cflags': ['-O2'], | |
1193 'cflags!': ['-O3'], | |
1194 }], | |
1195 ], | |
1196 }], | |
1197 ['OS=="mac"', { | |
1198 'xcode_settings': { | |
1199 'GCC_OPTIMIZATION_LEVEL': '3', # -O3 | |
1200 'GCC_STRICT_ALIASING': 'YES', | |
1201 }, | |
1202 }], | |
1203 ['v8_enable_slow_dchecks==1', { | |
1204 'defines': [ | |
1205 'ENABLE_SLOW_DCHECKS', | |
1206 ], | |
1207 }], | |
1208 ], | |
1209 }, # DebugBase1 | |
1210 # Common settings for the Debug configuration. | |
1211 'DebugBaseCommon': { | |
1212 'abstract': 1, | |
1213 'defines': [ | |
1214 'ENABLE_DISASSEMBLER', | |
1215 'V8_ENABLE_CHECKS', | |
1216 'OBJECT_PRINT', | |
1217 'VERIFY_HEAP', | |
1218 'DEBUG', | |
1219 'TRACE_MAPS' | |
1220 ], | |
1221 'conditions': [ | |
1222 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ | |
1223 OS=="qnx" or OS=="aix"', { | |
1224 'cflags': [ '-Woverloaded-virtual', '<(wno_array_bounds)', ], | |
1225 }], | |
1226 ['OS=="linux" and v8_enable_backtrace==1', { | |
1227 # Support for backtrace_symbols. | |
1228 'ldflags': [ '-rdynamic' ], | |
1229 }], | |
1230 ['OS=="linux" and disable_glibcxx_debug==0', { | |
1231 # Enable libstdc++ debugging facilities to help catch problems | |
1232 # early, see http://crbug.com/65151 . | |
1233 'defines': ['_GLIBCXX_DEBUG=1',], | |
1234 }], | |
1235 ['OS=="aix"', { | |
1236 'ldflags': [ '-Wl,-bbigtoc' ], | |
1237 'conditions': [ | |
1238 ['v8_target_arch=="ppc64"', { | |
1239 'cflags': [ '-maix64 -mcmodel=large' ], | |
1240 }], | |
1241 ], | |
1242 }], | |
1243 ['OS=="android"', { | |
1244 'variables': { | |
1245 'android_full_debug%': 1, | |
1246 }, | |
1247 'conditions': [ | |
1248 ['android_full_debug==0', { | |
1249 # Disable full debug if we want a faster v8 in a debug build. | |
1250 # TODO(2304): pass DISABLE_DEBUG_ASSERT instead of hiding DEBUG. | |
1251 'defines!': [ | |
1252 'DEBUG', | |
1253 'ENABLE_SLOW_DCHECKS', | |
1254 ], | |
1255 }], | |
1256 ], | |
1257 }], | |
1258 # TODO(pcc): Re-enable in LTO builds once we've fixed the intermittent | |
1259 # link failures (crbug.com/513074). | |
1260 ['linux_use_gold_flags==1 and use_lto==0', { | |
1261 'target_conditions': [ | |
1262 ['_toolset=="target"', { | |
1263 'ldflags': [ | |
1264 # Experimentation found that using four linking threads | |
1265 # saved ~20% of link time. | |
1266 # https://groups.google.com/a/chromium.org/group/chromium-dev/
browse_thread/thread/281527606915bb36 | |
1267 # Only apply this to the target linker, since the host | |
1268 # linker might not be gold, but isn't used much anyway. | |
1269 '-Wl,--threads', | |
1270 '-Wl,--thread-count=4', | |
1271 ], | |
1272 }], | |
1273 ], | |
1274 }], | |
1275 ], | |
1276 }, # DebugBaseCommon | |
1277 'Debug': { | |
1278 'inherit_from': ['DebugBaseCommon'], | |
1279 'conditions': [ | |
1280 ['v8_optimized_debug==0', { | |
1281 'inherit_from': ['DebugBase0'], | |
1282 }, { | |
1283 'inherit_from': ['DebugBase1'], | |
1284 }], | |
1285 ], | |
1286 }, # Debug | |
1287 'ReleaseBase': { | |
1288 'abstract': 1, | |
1289 'variables': { | |
1290 'v8_enable_slow_dchecks%': 0, | |
1291 }, | |
1292 'conditions': [ | |
1293 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" \ | |
1294 or OS=="aix"', { | |
1295 'cflags!': [ | |
1296 '-Os', | |
1297 ], | |
1298 'cflags': [ | |
1299 '-fdata-sections', | |
1300 '-ffunction-sections', | |
1301 '<(wno_array_bounds)', | |
1302 ], | |
1303 'conditions': [ | |
1304 # TODO(crbug.com/272548): Avoid -O3 in NaCl | |
1305 # Don't use -O3 with sanitizers. | |
1306 ['nacl_target_arch=="none" and asan==0 and msan==0 and lsan==0 \ | |
1307 and tsan==0 and ubsan==0 and ubsan_vptr==0', { | |
1308 'cflags': ['-O3'], | |
1309 'cflags!': ['-O2'], | |
1310 }, { | |
1311 'cflags': ['-O2'], | |
1312 'cflags!': ['-O3'], | |
1313 }], | |
1314 ], | |
1315 }], | |
1316 ['OS=="android"', { | |
1317 'cflags!': [ | |
1318 '-O3', | |
1319 '-Os', | |
1320 ], | |
1321 'cflags': [ | |
1322 '-fdata-sections', | |
1323 '-ffunction-sections', | |
1324 '-O2', | |
1325 ], | |
1326 }], | |
1327 ['OS=="mac"', { | |
1328 'xcode_settings': { | |
1329 'GCC_OPTIMIZATION_LEVEL': '3', # -O3 | |
1330 | |
1331 # -fstrict-aliasing. Mainline gcc | |
1332 # enables this at -O2 and above, | |
1333 # but Apple gcc does not unless it | |
1334 # is specified explicitly. | |
1335 'GCC_STRICT_ALIASING': 'YES', | |
1336 }, | |
1337 }], # OS=="mac" | |
1338 ['OS=="win"', { | |
1339 'msvs_settings': { | |
1340 'VCCLCompilerTool': { | |
1341 'Optimization': '2', | |
1342 'InlineFunctionExpansion': '2', | |
1343 'EnableIntrinsicFunctions': 'true', | |
1344 'FavorSizeOrSpeed': '0', | |
1345 'StringPooling': 'true', | |
1346 'conditions': [ | |
1347 ['component=="shared_library"', { | |
1348 'RuntimeLibrary': '2', #/MD | |
1349 }, { | |
1350 'RuntimeLibrary': '0', #/MT | |
1351 }], | |
1352 ], | |
1353 }, | |
1354 'VCLinkerTool': { | |
1355 'LinkIncremental': '1', | |
1356 'OptimizeReferences': '2', | |
1357 'EnableCOMDATFolding': '2', | |
1358 }, | |
1359 }, | |
1360 }], # OS=="win" | |
1361 ['v8_enable_slow_dchecks==1', { | |
1362 'defines': [ | |
1363 'ENABLE_SLOW_DCHECKS', | |
1364 ], | |
1365 }], | |
1366 ], # conditions | |
1367 }, # Release | |
1368 'Release': { | |
1369 'inherit_from': ['ReleaseBase'], | |
1370 }, # Debug | |
1371 'conditions': [ | |
1372 [ 'OS=="win"', { | |
1373 # TODO(bradnelson): add a gyp mechanism to make this more graceful. | |
1374 'Debug_x64': { | |
1375 'inherit_from': ['DebugBaseCommon'], | |
1376 'conditions': [ | |
1377 ['v8_optimized_debug==0', { | |
1378 'inherit_from': ['DebugBase0'], | |
1379 }, { | |
1380 'inherit_from': ['DebugBase1'], | |
1381 }], | |
1382 ], | |
1383 }, | |
1384 'Release_x64': { | |
1385 'inherit_from': ['ReleaseBase'], | |
1386 }, | |
1387 }], | |
1388 ], | |
1389 }, # configurations | |
1390 }, # target_defaults | |
1391 } | |
OLD | NEW |