blob: 7f3b9e52d91dfab36ad3297e147d94f039664d0b [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001# 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 'gcc_version%': 'unknown',
34 'clang%': 0,
35 'v8_target_arch%': '<(target_arch)',
36 # Native Client builds currently use the V8 ARM JIT and
37 # arm/simulator-arm.cc to defer the significant effort required
38 # for NaCl JIT support. The nacl_target_arch variable provides
39 # the 'true' target arch for places in this file that need it.
40 # TODO(bradchen): get rid of nacl_target_arch when someday
41 # NaCl V8 builds stop using the ARM simulator
42 'nacl_target_arch%': 'none', # must be set externally
43
44 # Setting 'v8_can_use_vfp32dregs' to 'true' will cause V8 to use the VFP
45 # registers d16-d31 in the generated code, both in the snapshot and for the
46 # ARM target. Leaving the default value of 'false' will avoid the use of
47 # these registers in the snapshot and use CPU feature probing when running
48 # on the target.
49 'v8_can_use_vfp32dregs%': 'false',
50 'arm_test_noprobe%': 'off',
51
52 # Similar to vfp but on MIPS.
53 'v8_can_use_fpu_instructions%': 'true',
54
55 # Similar to the ARM hard float ABI but on MIPS.
56 'v8_use_mips_abi_hardfloat%': 'true',
57
58 # Default arch variant for MIPS.
59 'mips_arch_variant%': 'r2',
60
61 # Possible values fp32, fp64, fpxx.
62 # fp32 - 32 32-bit FPU registers are available, doubles are placed in
63 # register pairs.
64 # fp64 - 32 64-bit FPU registers are available.
65 # fpxx - compatibility mode, it chooses fp32 or fp64 depending on runtime
66 # detection
67 'mips_fpu_mode%': 'fp32',
68
69 'v8_enable_backtrace%': 0,
70
71 # Enable profiling support. Only required on Windows.
72 'v8_enable_prof%': 0,
73
74 # Some versions of GCC 4.5 seem to need -fno-strict-aliasing.
75 'v8_no_strict_aliasing%': 0,
76
77 # Chrome needs this definition unconditionally. For standalone V8 builds,
78 # it's handled in build/standalone.gypi.
79 'want_separate_host_toolset%': 1,
80
81 # Toolset the d8 binary should be compiled for. Possible values are 'host'
82 # and 'target'. If you want to run v8 tests, it needs to be set to 'target'.
83 # The setting is ignored if want_separate_host_toolset is 0.
84 'v8_toolset_for_d8%': 'target',
85
86 'host_os%': '<(OS)',
87 'werror%': '-Werror',
88 # For a shared library build, results in "libv8-<(soname_version).so".
89 'soname_version%': '',
90
91 # Allow to suppress the array bounds warning (default is no suppression).
92 'wno_array_bounds%': '',
93
94 # Link-Time Optimizations
95 'use_lto%': 0,
96
97 'variables': {
98 # This is set when building the Android WebView inside the Android build
99 # system, using the 'android' gyp backend.
100 'android_webview_build%': 0,
101 },
102 # Copy it out one scope.
103 'android_webview_build%': '<(android_webview_build)',
104 },
105 'conditions': [
106 ['host_arch=="ia32" or host_arch=="x64" or clang==1', {
107 'variables': {
108 'host_cxx_is_biarch%': 1,
109 },
110 }, {
111 'variables': {
112 'host_cxx_is_biarch%': 0,
113 },
114 }],
115 ['target_arch=="ia32" or target_arch=="x64" or target_arch=="x87" or \
116 clang==1', {
117 'variables': {
118 'target_cxx_is_biarch%': 1,
119 },
120 }, {
121 'variables': {
122 'target_cxx_is_biarch%': 0,
123 },
124 }],
125 ],
126 'target_defaults': {
127 'conditions': [
128 ['v8_target_arch=="arm"', {
129 'defines': [
130 'V8_TARGET_ARCH_ARM',
131 ],
132 'conditions': [
133 [ 'arm_version==7 or arm_version=="default"', {
134 'defines': [
135 'CAN_USE_ARMV7_INSTRUCTIONS',
136 ],
137 }],
138 [ 'arm_fpu=="vfpv3-d16" or arm_fpu=="default"', {
139 'defines': [
140 'CAN_USE_VFP3_INSTRUCTIONS',
141 ],
142 }],
143 [ 'arm_fpu=="vfpv3"', {
144 'defines': [
145 'CAN_USE_VFP3_INSTRUCTIONS',
146 'CAN_USE_VFP32DREGS',
147 ],
148 }],
149 [ 'arm_fpu=="neon"', {
150 'defines': [
151 'CAN_USE_VFP3_INSTRUCTIONS',
152 'CAN_USE_VFP32DREGS',
153 'CAN_USE_NEON',
154 ],
155 }],
156 [ 'arm_test_noprobe=="on"', {
157 'defines': [
158 'ARM_TEST_NO_FEATURE_PROBE',
159 ],
160 }],
161 ],
162 'target_conditions': [
163 ['_toolset=="host"', {
164 'conditions': [
165 ['v8_target_arch==host_arch and android_webview_build==0', {
166 # Host built with an Arm CXX compiler.
167 'conditions': [
168 [ 'arm_version==7', {
169 'cflags': ['-march=armv7-a',],
170 }],
171 [ 'arm_version==7 or arm_version=="default"', {
172 'conditions': [
173 [ 'arm_fpu!="default"', {
174 'cflags': ['-mfpu=<(arm_fpu)',],
175 }],
176 ],
177 }],
178 [ 'arm_float_abi!="default"', {
179 'cflags': ['-mfloat-abi=<(arm_float_abi)',],
180 }],
181 [ 'arm_thumb==1', {
182 'cflags': ['-mthumb',],
183 }],
184 [ 'arm_thumb==0', {
185 'cflags': ['-marm',],
186 }],
187 ],
188 }, {
189 # 'v8_target_arch!=host_arch'
190 # Host not built with an Arm CXX compiler (simulator build).
191 'conditions': [
192 [ 'arm_float_abi=="hard"', {
193 'defines': [
194 'USE_EABI_HARDFLOAT=1',
195 ],
196 }],
197 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
198 'defines': [
199 'USE_EABI_HARDFLOAT=0',
200 ],
201 }],
202 ],
203 }],
204 ],
205 }], # _toolset=="host"
206 ['_toolset=="target"', {
207 'conditions': [
208 ['v8_target_arch==target_arch and android_webview_build==0', {
209 # Target built with an Arm CXX compiler.
210 'conditions': [
211 [ 'arm_version==7', {
212 'cflags': ['-march=armv7-a',],
213 }],
214 [ 'arm_version==7 or arm_version=="default"', {
215 'conditions': [
216 [ 'arm_fpu!="default"', {
217 'cflags': ['-mfpu=<(arm_fpu)',],
218 }],
219 ],
220 }],
221 [ 'arm_float_abi!="default"', {
222 'cflags': ['-mfloat-abi=<(arm_float_abi)',],
223 }],
224 [ 'arm_thumb==1', {
225 'cflags': ['-mthumb',],
226 }],
227 [ 'arm_thumb==0', {
228 'cflags': ['-marm',],
229 }],
230 ],
231 }, {
232 # 'v8_target_arch!=target_arch'
233 # Target not built with an Arm CXX compiler (simulator build).
234 'conditions': [
235 [ 'arm_float_abi=="hard"', {
236 'defines': [
237 'USE_EABI_HARDFLOAT=1',
238 ],
239 }],
240 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
241 'defines': [
242 'USE_EABI_HARDFLOAT=0',
243 ],
244 }],
245 ],
246 }],
247 # Disable LTO for v8
248 # v8 is optimized for speed, which takes precedence over
249 # size optimization in LTO.
250 ['use_lto==1', {
251 'cflags!': [
252 '-flto',
253 '-ffat-lto-objects',
254 ],
255 }],
256 ],
257 }], # _toolset=="target"
258 ],
259 }], # v8_target_arch=="arm"
260 ['v8_target_arch=="arm64"', {
261 'defines': [
262 'V8_TARGET_ARCH_ARM64',
263 ],
264 }],
265 ['v8_target_arch=="ia32"', {
266 'defines': [
267 'V8_TARGET_ARCH_IA32',
268 ],
269 }], # v8_target_arch=="ia32"
270 ['v8_target_arch=="x87"', {
271 'defines': [
272 'V8_TARGET_ARCH_X87',
273 ],
274 'cflags': ['-march=i586'],
275 }], # v8_target_arch=="x87"
276 ['v8_target_arch=="mips"', {
277 'defines': [
278 'V8_TARGET_ARCH_MIPS',
279 ],
280 'conditions': [
281 ['v8_target_arch==target_arch and android_webview_build==0', {
282 # Target built with a Mips CXX compiler.
283 'target_conditions': [
284 ['_toolset=="target"', {
285 'cflags': ['-EB'],
286 'ldflags': ['-EB'],
287 'conditions': [
288 [ 'v8_use_mips_abi_hardfloat=="true"', {
289 'cflags': ['-mhard-float'],
290 'ldflags': ['-mhard-float'],
291 }, {
292 'cflags': ['-msoft-float'],
293 'ldflags': ['-msoft-float'],
294 }],
295 ['mips_fpu_mode=="fp64"', {
296 'cflags': ['-mfp64'],
297 }],
298 ['mips_fpu_mode=="fpxx"', {
299 'cflags': ['-mfpxx'],
300 }],
301 ['mips_fpu_mode=="fp32"', {
302 'cflags': ['-mfp32'],
303 }],
304 ['mips_arch_variant=="r6"', {
305 'cflags!': ['-mfp32'],
306 'cflags': ['-mips32r6', '-Wa,-mips32r6'],
307 'ldflags': [
308 '-mips32r6',
309 '-Wl,--dynamic-linker=$(LDSO_PATH)',
310 '-Wl,--rpath=$(LD_R_PATH)',
311 ],
312 }],
313 ['mips_arch_variant=="r2"', {
314 'cflags': ['-mips32r2', '-Wa,-mips32r2'],
315 }],
316 ['mips_arch_variant=="r1"', {
317 'cflags!': ['-mfp64'],
318 'cflags': ['-mips32', '-Wa,-mips32'],
319 }],
320 ['mips_arch_variant=="rx"', {
321 'cflags!': ['-mfp64'],
322 'cflags': ['-mips32', '-Wa,-mips32'],
323 }],
324 ],
325 }],
326 ],
327 }],
328 [ 'v8_can_use_fpu_instructions=="true"', {
329 'defines': [
330 'CAN_USE_FPU_INSTRUCTIONS',
331 ],
332 }],
333 [ 'v8_use_mips_abi_hardfloat=="true"', {
334 'defines': [
335 '__mips_hard_float=1',
336 'CAN_USE_FPU_INSTRUCTIONS',
337 ],
338 }, {
339 'defines': [
340 '__mips_soft_float=1'
341 ],
342 }],
343 ['mips_arch_variant=="rx"', {
344 'defines': [
345 '_MIPS_ARCH_MIPS32RX',
346 'FPU_MODE_FPXX',
347 ],
348 }],
349 ['mips_arch_variant=="r6"', {
350 'defines': [
351 '_MIPS_ARCH_MIPS32R6',
352 'FPU_MODE_FP64',
353 ],
354 }],
355 ['mips_arch_variant=="r2"', {
356 'defines': ['_MIPS_ARCH_MIPS32R2',],
357 'conditions': [
358 ['mips_fpu_mode=="fp64"', {
359 'defines': ['FPU_MODE_FP64',],
360 }],
361 ['mips_fpu_mode=="fpxx"', {
362 'defines': ['FPU_MODE_FPXX',],
363 }],
364 ['mips_fpu_mode=="fp32"', {
365 'defines': ['FPU_MODE_FP32',],
366 }],
367 ],
368 }],
369 ['mips_arch_variant=="r1"', {
370 'defines': ['FPU_MODE_FP32',],
371 }],
372 ],
373 }], # v8_target_arch=="mips"
374 ['v8_target_arch=="mipsel"', {
375 'defines': [
376 'V8_TARGET_ARCH_MIPS',
377 ],
378 'conditions': [
379 ['v8_target_arch==target_arch and android_webview_build==0', {
380 # Target built with a Mips CXX compiler.
381 'target_conditions': [
382 ['_toolset=="target"', {
383 'cflags': ['-EL'],
384 'ldflags': ['-EL'],
385 'conditions': [
386 [ 'v8_use_mips_abi_hardfloat=="true"', {
387 'cflags': ['-mhard-float'],
388 'ldflags': ['-mhard-float'],
389 }, {
390 'cflags': ['-msoft-float'],
391 'ldflags': ['-msoft-float'],
392 }],
393 ['mips_fpu_mode=="fp64"', {
394 'cflags': ['-mfp64'],
395 }],
396 ['mips_fpu_mode=="fpxx"', {
397 'cflags': ['-mfpxx'],
398 }],
399 ['mips_fpu_mode=="fp32"', {
400 'cflags': ['-mfp32'],
401 }],
402 ['mips_arch_variant=="r6"', {
403 'cflags!': ['-mfp32'],
404 'cflags': ['-mips32r6', '-Wa,-mips32r6'],
405 'ldflags': [
406 '-mips32r6',
407 '-Wl,--dynamic-linker=$(LDSO_PATH)',
408 '-Wl,--rpath=$(LD_R_PATH)',
409 ],
410 }],
411 ['mips_arch_variant=="r2"', {
412 'cflags': ['-mips32r2', '-Wa,-mips32r2'],
413 }],
414 ['mips_arch_variant=="r1"', {
415 'cflags!': ['-mfp64'],
416 'cflags': ['-mips32', '-Wa,-mips32'],
417 }],
418 ['mips_arch_variant=="rx"', {
419 'cflags!': ['-mfp64'],
420 'cflags': ['-mips32', '-Wa,-mips32'],
421 }],
422 ['mips_arch_variant=="loongson"', {
423 'cflags!': ['-mfp64'],
424 'cflags': ['-mips3', '-Wa,-mips3'],
425 }],
426 ],
427 }],
428 ],
429 }],
430 [ 'v8_can_use_fpu_instructions=="true"', {
431 'defines': [
432 'CAN_USE_FPU_INSTRUCTIONS',
433 ],
434 }],
435 [ 'v8_use_mips_abi_hardfloat=="true"', {
436 'defines': [
437 '__mips_hard_float=1',
438 'CAN_USE_FPU_INSTRUCTIONS',
439 ],
440 }, {
441 'defines': [
442 '__mips_soft_float=1'
443 ],
444 }],
445 ['mips_arch_variant=="rx"', {
446 'defines': [
447 '_MIPS_ARCH_MIPS32RX',
448 'FPU_MODE_FPXX',
449 ],
450 }],
451 ['mips_arch_variant=="r6"', {
452 'defines': [
453 '_MIPS_ARCH_MIPS32R6',
454 'FPU_MODE_FP64',
455 ],
456 }],
457 ['mips_arch_variant=="r2"', {
458 'defines': ['_MIPS_ARCH_MIPS32R2',],
459 'conditions': [
460 ['mips_fpu_mode=="fp64"', {
461 'defines': ['FPU_MODE_FP64',],
462 }],
463 ['mips_fpu_mode=="fpxx"', {
464 'defines': ['FPU_MODE_FPXX',],
465 }],
466 ['mips_fpu_mode=="fp32"', {
467 'defines': ['FPU_MODE_FP32',],
468 }],
469 ],
470 }],
471 ['mips_arch_variant=="r1"', {
472 'defines': ['FPU_MODE_FP32',],
473 }],
474 ['mips_arch_variant=="loongson"', {
475 'defines': [
476 '_MIPS_ARCH_LOONGSON',
477 'FPU_MODE_FP32',
478 ],
479 }],
480 ],
481 }], # v8_target_arch=="mipsel"
482 ['v8_target_arch=="mips64el"', {
483 'defines': [
484 'V8_TARGET_ARCH_MIPS64',
485 ],
486 'conditions': [
487 ['v8_target_arch==target_arch and android_webview_build==0', {
488 # Target built with a Mips CXX compiler.
489 'target_conditions': [
490 ['_toolset=="target"', {
491 'cflags': ['-EL'],
492 'ldflags': ['-EL'],
493 'conditions': [
494 [ 'v8_use_mips_abi_hardfloat=="true"', {
495 'cflags': ['-mhard-float'],
496 'ldflags': ['-mhard-float'],
497 }, {
498 'cflags': ['-msoft-float'],
499 'ldflags': ['-msoft-float'],
500 }],
501 ['mips_arch_variant=="r6"', {
502 'cflags': ['-mips64r6', '-mabi=64', '-Wa,-mips64r6'],
503 'ldflags': [
504 '-mips64r6', '-mabi=64',
505 '-Wl,--dynamic-linker=$(LDSO_PATH)',
506 '-Wl,--rpath=$(LD_R_PATH)',
507 ],
508 }],
509 ['mips_arch_variant=="r2"', {
510 'cflags': ['-mips64r2', '-mabi=64', '-Wa,-mips64r2'],
511 'ldflags': [
512 '-mips64r2', '-mabi=64',
513 '-Wl,--dynamic-linker=$(LDSO_PATH)',
514 '-Wl,--rpath=$(LD_R_PATH)',
515 ],
516 }],
517 ],
518 }],
519 ],
520 }],
521 [ 'v8_can_use_fpu_instructions=="true"', {
522 'defines': [
523 'CAN_USE_FPU_INSTRUCTIONS',
524 ],
525 }],
526 [ 'v8_use_mips_abi_hardfloat=="true"', {
527 'defines': [
528 '__mips_hard_float=1',
529 'CAN_USE_FPU_INSTRUCTIONS',
530 ],
531 }, {
532 'defines': [
533 '__mips_soft_float=1'
534 ],
535 }],
536 ['mips_arch_variant=="r6"', {
537 'defines': ['_MIPS_ARCH_MIPS64R6',],
538 }],
539 ['mips_arch_variant=="r2"', {
540 'defines': ['_MIPS_ARCH_MIPS64R2',],
541 }],
542 ],
543 }], # v8_target_arch=="mips64el"
544 ['v8_target_arch=="x64"', {
545 'defines': [
546 'V8_TARGET_ARCH_X64',
547 ],
548 'xcode_settings': {
549 'ARCHS': [ 'x86_64' ],
550 },
551 'msvs_settings': {
552 'VCLinkerTool': {
553 'StackReserveSize': '2097152',
554 },
555 },
556 'msvs_configuration_platform': 'x64',
557 }], # v8_target_arch=="x64"
558 ['v8_target_arch=="x32"', {
559 'defines': [
560 # x32 port shares the source code with x64 port.
561 'V8_TARGET_ARCH_X64',
562 'V8_TARGET_ARCH_32_BIT',
563 ],
564 'cflags': [
565 '-mx32',
566 # Inhibit warning if long long type is used.
567 '-Wno-long-long',
568 ],
569 'ldflags': [
570 '-mx32',
571 ],
572 }], # v8_target_arch=="x32"
573 ['OS=="win"', {
574 'defines': [
575 'WIN32',
576 ],
577 # 4351: VS 2005 and later are warning us that they've fixed a bug
578 # present in VS 2003 and earlier.
579 'msvs_disabled_warnings': [4351],
580 'msvs_configuration_attributes': {
581 'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)',
582 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
583 'CharacterSet': '1',
584 },
585 }],
586 ['OS=="win" and v8_target_arch=="ia32"', {
587 'msvs_settings': {
588 'VCCLCompilerTool': {
589 # Ensure no surprising artifacts from 80bit double math with x86.
590 'AdditionalOptions': ['/arch:SSE2'],
591 },
592 },
593 }],
594 ['OS=="win" and v8_enable_prof==1', {
595 'msvs_settings': {
596 'VCLinkerTool': {
597 'GenerateMapFile': 'true',
598 },
599 },
600 }],
601 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
602 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \
603 (v8_target_arch=="arm" or v8_target_arch=="ia32" or \
604 v8_target_arch=="x87" or v8_target_arch=="mips" or \
605 v8_target_arch=="mipsel")', {
606 'target_conditions': [
607 ['_toolset=="host"', {
608 'conditions': [
609 ['host_cxx_is_biarch==1', {
610 'cflags': [ '-m32' ],
611 'ldflags': [ '-m32' ]
612 }],
613 ],
614 'xcode_settings': {
615 'ARCHS': [ 'i386' ],
616 },
617 }],
618 ['_toolset=="target"', {
619 'conditions': [
620 ['target_cxx_is_biarch==1 and nacl_target_arch!="nacl_x64"', {
621 'cflags': [ '-m32' ],
622 'ldflags': [ '-m32' ],
623 }],
624 # Enable feedback-directed optimisation when building in android.
625 [ 'android_webview_build == 1', {
626 'aosp_build_settings': {
627 'LOCAL_FDO_SUPPORT': 'true',
628 },
629 }],
630 ],
631 'xcode_settings': {
632 'ARCHS': [ 'i386' ],
633 },
634 }],
635 ],
636 }],
637 ['(OS=="linux" or OS=="android") and \
638 (v8_target_arch=="x64" or v8_target_arch=="arm64")', {
639 'target_conditions': [
640 ['_toolset=="host"', {
641 'conditions': [
642 ['host_cxx_is_biarch==1', {
643 'cflags': [ '-m64' ],
644 'ldflags': [ '-m64' ]
645 }],
646 ],
647 }],
648 ['_toolset=="target"', {
649 'conditions': [
650 ['target_cxx_is_biarch==1', {
651 'cflags': [ '-m64' ],
652 'ldflags': [ '-m64' ],
653 }],
654 # Enable feedback-directed optimisation when building in android.
655 [ 'android_webview_build == 1', {
656 'aosp_build_settings': {
657 'LOCAL_FDO_SUPPORT': 'true',
658 },
659 }],
660 ]
661 }],
662 ],
663 }],
664 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
665 or OS=="netbsd" or OS=="qnx"', {
666 'conditions': [
667 [ 'v8_no_strict_aliasing==1', {
668 'cflags': [ '-fno-strict-aliasing' ],
669 }],
670 ], # conditions
671 }],
672 ['OS=="solaris"', {
673 'defines': [ '__C99FEATURES__=1' ], # isinf() etc.
674 }],
675 ['OS=="freebsd" or OS=="openbsd"', {
676 'cflags': [ '-I/usr/local/include' ],
677 }],
678 ['OS=="netbsd"', {
679 'cflags': [ '-I/usr/pkg/include' ],
680 }],
681 ], # conditions
682 'configurations': {
683 # Abstract configuration for v8_optimized_debug == 0.
684 'DebugBase0': {
685 'abstract': 1,
686 'msvs_settings': {
687 'VCCLCompilerTool': {
688 'Optimization': '0',
689 'conditions': [
690 ['component=="shared_library"', {
691 'RuntimeLibrary': '3', # /MDd
692 }, {
693 'RuntimeLibrary': '1', # /MTd
694 }],
695 ],
696 },
697 'VCLinkerTool': {
698 'LinkIncremental': '2',
699 },
700 },
701 'conditions': [
702 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
703 OS=="qnx"', {
704 'cflags!': [
705 '-O0',
706 '-O3',
707 '-O2',
708 '-O1',
709 '-Os',
710 ],
711 'cflags': [
712 '-fdata-sections',
713 '-ffunction-sections',
714 ],
715 }],
716 ['OS=="mac"', {
717 'xcode_settings': {
718 'GCC_OPTIMIZATION_LEVEL': '0', # -O0
719 },
720 }],
721 ],
722 }, # DebugBase0
723 # Abstract configuration for v8_optimized_debug == 1.
724 'DebugBase1': {
725 'abstract': 1,
726 'msvs_settings': {
727 'VCCLCompilerTool': {
728 'Optimization': '1',
729 'InlineFunctionExpansion': '2',
730 'EnableIntrinsicFunctions': 'true',
731 'FavorSizeOrSpeed': '0',
732 'StringPooling': 'true',
733 'BasicRuntimeChecks': '0',
734 'conditions': [
735 ['component=="shared_library"', {
736 'RuntimeLibrary': '3', # /MDd
737 }, {
738 'RuntimeLibrary': '1', # /MTd
739 }],
740 ],
741 },
742 'VCLinkerTool': {
743 'LinkIncremental': '2',
744 },
745 },
746 'conditions': [
747 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
748 OS=="qnx"', {
749 'cflags!': [
750 '-O0',
751 '-O3', # TODO(2807) should be -O1.
752 '-O2',
753 '-Os',
754 ],
755 'cflags': [
756 '-fdata-sections',
757 '-ffunction-sections',
758 '-O1', # TODO(2807) should be -O3.
759 ],
760 'conditions': [
761 ['gcc_version==44 and clang==0', {
762 'cflags': [
763 # Avoid crashes with gcc 4.4 in the v8 test suite.
764 '-fno-tree-vrp',
765 ],
766 }],
767 ],
768 }],
769 ['OS=="mac"', {
770 'xcode_settings': {
771 'GCC_OPTIMIZATION_LEVEL': '3', # -O3
772 'GCC_STRICT_ALIASING': 'YES',
773 },
774 }],
775 ],
776 }, # DebugBase1
777 # Abstract configuration for v8_optimized_debug == 2.
778 'DebugBase2': {
779 'abstract': 1,
780 'msvs_settings': {
781 'VCCLCompilerTool': {
782 'Optimization': '2',
783 'InlineFunctionExpansion': '2',
784 'EnableIntrinsicFunctions': 'true',
785 'FavorSizeOrSpeed': '0',
786 'StringPooling': 'true',
787 'BasicRuntimeChecks': '0',
788 'conditions': [
789 ['component=="shared_library"', {
790 'RuntimeLibrary': '3', #/MDd
791 }, {
792 'RuntimeLibrary': '1', #/MTd
793 }],
794 ['v8_target_arch=="x64"', {
795 # TODO(2207): remove this option once the bug is fixed.
796 'WholeProgramOptimization': 'true',
797 }],
798 ],
799 },
800 'VCLinkerTool': {
801 'LinkIncremental': '1',
802 'OptimizeReferences': '2',
803 'EnableCOMDATFolding': '2',
804 },
805 },
806 'conditions': [
807 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
808 OS=="qnx"', {
809 'cflags!': [
810 '-O0',
811 '-O1',
812 '-Os',
813 ],
814 'cflags': [
815 '-fdata-sections',
816 '-ffunction-sections',
817 ],
818 'defines': [
819 'OPTIMIZED_DEBUG'
820 ],
821 'conditions': [
822 # TODO(crbug.com/272548): Avoid -O3 in NaCl
823 ['nacl_target_arch=="none"', {
824 'cflags': ['-O3'],
825 'cflags!': ['-O2'],
826 }, {
827 'cflags': ['-O2'],
828 'cflags!': ['-O3'],
829 }],
830 ['gcc_version==44 and clang==0', {
831 'cflags': [
832 # Avoid crashes with gcc 4.4 in the v8 test suite.
833 '-fno-tree-vrp',
834 ],
835 }],
836 ],
837 }],
838 ['OS=="mac"', {
839 'xcode_settings': {
840 'GCC_OPTIMIZATION_LEVEL': '3', # -O3
841 'GCC_STRICT_ALIASING': 'YES',
842 },
843 }],
844 ],
845 }, # DebugBase2
846 # Common settings for the Debug configuration.
847 'DebugBaseCommon': {
848 'abstract': 1,
849 'defines': [
850 'ENABLE_DISASSEMBLER',
851 'V8_ENABLE_CHECKS',
852 'OBJECT_PRINT',
853 'VERIFY_HEAP',
854 'DEBUG'
855 ],
856 'conditions': [
857 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
858 OS=="qnx"', {
859 'cflags': [ '-Woverloaded-virtual', '<(wno_array_bounds)', ],
860 }],
861 ['OS=="linux" and v8_enable_backtrace==1', {
862 # Support for backtrace_symbols.
863 'ldflags': [ '-rdynamic' ],
864 }],
865 ['OS=="android"', {
866 'variables': {
867 'android_full_debug%': 1,
868 },
869 'conditions': [
870 ['android_full_debug==0', {
871 # Disable full debug if we want a faster v8 in a debug build.
872 # TODO(2304): pass DISABLE_DEBUG_ASSERT instead of hiding DEBUG.
873 'defines!': [
874 'DEBUG',
875 ],
876 }],
877 ],
878 }],
879 ],
880 }, # DebugBaseCommon
881 'Debug': {
882 'inherit_from': ['DebugBaseCommon'],
883 'conditions': [
884 ['v8_optimized_debug==0', {
885 'inherit_from': ['DebugBase0'],
886 }],
887 ['v8_optimized_debug==1', {
888 'inherit_from': ['DebugBase1'],
889 }],
890 ['v8_optimized_debug==2', {
891 'inherit_from': ['DebugBase2'],
892 }],
893 ],
894 }, # Debug
895 'Release': {
896 'conditions': [
897 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', {
898 'cflags!': [
899 '-Os',
900 ],
901 'cflags': [
902 '-fdata-sections',
903 '-ffunction-sections',
904 '<(wno_array_bounds)',
905 ],
906 'conditions': [
907 [ 'gcc_version==44 and clang==0', {
908 'cflags': [
909 # Avoid crashes with gcc 4.4 in the v8 test suite.
910 '-fno-tree-vrp',
911 ],
912 }],
913 # TODO(crbug.com/272548): Avoid -O3 in NaCl
914 ['nacl_target_arch=="none"', {
915 'cflags': ['-O3'],
916 'cflags!': ['-O2'],
917 }, {
918 'cflags': ['-O2'],
919 'cflags!': ['-O3'],
920 }],
921 ],
922 }],
923 ['OS=="android"', {
924 'cflags!': [
925 '-O3',
926 '-Os',
927 ],
928 'cflags': [
929 '-fdata-sections',
930 '-ffunction-sections',
931 '-O2',
932 ],
933 'conditions': [
934 [ 'gcc_version==44 and clang==0', {
935 'cflags': [
936 # Avoid crashes with gcc 4.4 in the v8 test suite.
937 '-fno-tree-vrp',
938 ],
939 }],
940 ],
941 }],
942 ['OS=="mac"', {
943 'xcode_settings': {
944 'GCC_OPTIMIZATION_LEVEL': '3', # -O3
945
946 # -fstrict-aliasing. Mainline gcc
947 # enables this at -O2 and above,
948 # but Apple gcc does not unless it
949 # is specified explicitly.
950 'GCC_STRICT_ALIASING': 'YES',
951 },
952 }], # OS=="mac"
953 ['OS=="win"', {
954 'msvs_settings': {
955 'VCCLCompilerTool': {
956 'Optimization': '2',
957 'InlineFunctionExpansion': '2',
958 'EnableIntrinsicFunctions': 'true',
959 'FavorSizeOrSpeed': '0',
960 'StringPooling': 'true',
961 'conditions': [
962 ['component=="shared_library"', {
963 'RuntimeLibrary': '2', #/MD
964 }, {
965 'RuntimeLibrary': '0', #/MT
966 }],
967 ['v8_target_arch=="x64"', {
968 # TODO(2207): remove this option once the bug is fixed.
969 'WholeProgramOptimization': 'true',
970 }],
971 ],
972 },
973 'VCLinkerTool': {
974 'LinkIncremental': '1',
975 'OptimizeReferences': '2',
976 'EnableCOMDATFolding': '2',
977 },
978 },
979 }], # OS=="win"
980 ], # conditions
981 }, # Release
982 }, # configurations
983 }, # target_defaults
984}