blob: 38c9aee99def930edaa0121ca39fe33eddee3661 [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
Ben Murdochb8a8cc12014-11-26 15:28:44 +000058 'v8_enable_backtrace%': 0,
59
60 # Enable profiling support. Only required on Windows.
61 'v8_enable_prof%': 0,
62
63 # Some versions of GCC 4.5 seem to need -fno-strict-aliasing.
64 'v8_no_strict_aliasing%': 0,
65
66 # Chrome needs this definition unconditionally. For standalone V8 builds,
67 # it's handled in build/standalone.gypi.
68 'want_separate_host_toolset%': 1,
69
70 # Toolset the d8 binary should be compiled for. Possible values are 'host'
71 # and 'target'. If you want to run v8 tests, it needs to be set to 'target'.
72 # The setting is ignored if want_separate_host_toolset is 0.
73 'v8_toolset_for_d8%': 'target',
74
75 'host_os%': '<(OS)',
76 'werror%': '-Werror',
77 # For a shared library build, results in "libv8-<(soname_version).so".
78 'soname_version%': '',
79
80 # Allow to suppress the array bounds warning (default is no suppression).
81 'wno_array_bounds%': '',
82
83 # Link-Time Optimizations
84 'use_lto%': 0,
85
86 'variables': {
87 # This is set when building the Android WebView inside the Android build
88 # system, using the 'android' gyp backend.
89 'android_webview_build%': 0,
90 },
91 # Copy it out one scope.
92 'android_webview_build%': '<(android_webview_build)',
93 },
94 'conditions': [
95 ['host_arch=="ia32" or host_arch=="x64" or clang==1', {
96 'variables': {
97 'host_cxx_is_biarch%': 1,
98 },
99 }, {
100 'variables': {
101 'host_cxx_is_biarch%': 0,
102 },
103 }],
104 ['target_arch=="ia32" or target_arch=="x64" or target_arch=="x87" or \
105 clang==1', {
106 'variables': {
107 'target_cxx_is_biarch%': 1,
108 },
109 }, {
110 'variables': {
111 'target_cxx_is_biarch%': 0,
112 },
113 }],
114 ],
115 'target_defaults': {
116 'conditions': [
117 ['v8_target_arch=="arm"', {
118 'defines': [
119 'V8_TARGET_ARCH_ARM',
120 ],
121 'conditions': [
122 [ 'arm_version==7 or arm_version=="default"', {
123 'defines': [
124 'CAN_USE_ARMV7_INSTRUCTIONS',
125 ],
126 }],
127 [ 'arm_fpu=="vfpv3-d16" or arm_fpu=="default"', {
128 'defines': [
129 'CAN_USE_VFP3_INSTRUCTIONS',
130 ],
131 }],
132 [ 'arm_fpu=="vfpv3"', {
133 'defines': [
134 'CAN_USE_VFP3_INSTRUCTIONS',
135 'CAN_USE_VFP32DREGS',
136 ],
137 }],
138 [ 'arm_fpu=="neon"', {
139 'defines': [
140 'CAN_USE_VFP3_INSTRUCTIONS',
141 'CAN_USE_VFP32DREGS',
142 'CAN_USE_NEON',
143 ],
144 }],
145 [ 'arm_test_noprobe=="on"', {
146 'defines': [
147 'ARM_TEST_NO_FEATURE_PROBE',
148 ],
149 }],
150 ],
151 'target_conditions': [
152 ['_toolset=="host"', {
153 'conditions': [
154 ['v8_target_arch==host_arch and android_webview_build==0', {
155 # Host built with an Arm CXX compiler.
156 'conditions': [
157 [ 'arm_version==7', {
158 'cflags': ['-march=armv7-a',],
159 }],
160 [ 'arm_version==7 or arm_version=="default"', {
161 'conditions': [
162 [ 'arm_fpu!="default"', {
163 'cflags': ['-mfpu=<(arm_fpu)',],
164 }],
165 ],
166 }],
167 [ 'arm_float_abi!="default"', {
168 'cflags': ['-mfloat-abi=<(arm_float_abi)',],
169 }],
170 [ 'arm_thumb==1', {
171 'cflags': ['-mthumb',],
172 }],
173 [ 'arm_thumb==0', {
174 'cflags': ['-marm',],
175 }],
176 ],
177 }, {
178 # 'v8_target_arch!=host_arch'
179 # Host not built with an Arm CXX compiler (simulator build).
180 'conditions': [
181 [ 'arm_float_abi=="hard"', {
182 'defines': [
183 'USE_EABI_HARDFLOAT=1',
184 ],
185 }],
186 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
187 'defines': [
188 'USE_EABI_HARDFLOAT=0',
189 ],
190 }],
191 ],
192 }],
193 ],
194 }], # _toolset=="host"
195 ['_toolset=="target"', {
196 'conditions': [
197 ['v8_target_arch==target_arch and android_webview_build==0', {
198 # Target built with an Arm CXX compiler.
199 'conditions': [
200 [ 'arm_version==7', {
201 'cflags': ['-march=armv7-a',],
202 }],
203 [ 'arm_version==7 or arm_version=="default"', {
204 'conditions': [
205 [ 'arm_fpu!="default"', {
206 'cflags': ['-mfpu=<(arm_fpu)',],
207 }],
208 ],
209 }],
210 [ 'arm_float_abi!="default"', {
211 'cflags': ['-mfloat-abi=<(arm_float_abi)',],
212 }],
213 [ 'arm_thumb==1', {
214 'cflags': ['-mthumb',],
215 }],
216 [ 'arm_thumb==0', {
217 'cflags': ['-marm',],
218 }],
219 ],
220 }, {
221 # 'v8_target_arch!=target_arch'
222 # Target not built with an Arm CXX compiler (simulator build).
223 'conditions': [
224 [ 'arm_float_abi=="hard"', {
225 'defines': [
226 'USE_EABI_HARDFLOAT=1',
227 ],
228 }],
229 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
230 'defines': [
231 'USE_EABI_HARDFLOAT=0',
232 ],
233 }],
234 ],
235 }],
236 # Disable LTO for v8
237 # v8 is optimized for speed, which takes precedence over
238 # size optimization in LTO.
239 ['use_lto==1', {
240 'cflags!': [
241 '-flto',
242 '-ffat-lto-objects',
243 ],
244 }],
245 ],
246 }], # _toolset=="target"
247 ],
248 }], # v8_target_arch=="arm"
249 ['v8_target_arch=="arm64"', {
250 'defines': [
251 'V8_TARGET_ARCH_ARM64',
252 ],
253 }],
254 ['v8_target_arch=="ia32"', {
255 'defines': [
256 'V8_TARGET_ARCH_IA32',
257 ],
258 }], # v8_target_arch=="ia32"
259 ['v8_target_arch=="x87"', {
260 'defines': [
261 'V8_TARGET_ARCH_X87',
262 ],
263 'cflags': ['-march=i586'],
264 }], # v8_target_arch=="x87"
265 ['v8_target_arch=="mips"', {
266 'defines': [
267 'V8_TARGET_ARCH_MIPS',
268 ],
269 'conditions': [
Paul Lind18a7ebb2014-12-17 22:29:32 -0800270 [ 'v8_can_use_fpu_instructions=="true"', {
271 'defines': [
272 'CAN_USE_FPU_INSTRUCTIONS',
273 ],
274 }],
275 [ 'v8_use_mips_abi_hardfloat=="true"', {
276 'defines': [
277 '__mips_hard_float=1',
278 'CAN_USE_FPU_INSTRUCTIONS',
279 ],
280 }, {
281 'defines': [
282 '__mips_soft_float=1'
283 ]
284 }],
285 ],
286 'target_conditions': [
287 ['_toolset=="target"', {
288 'conditions': [
289 ['v8_target_arch==target_arch and android_webview_build==0', {
290 # Target built with a Mips CXX compiler.
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000291 'cflags': ['-EB'],
292 'ldflags': ['-EB'],
293 'conditions': [
294 [ 'v8_use_mips_abi_hardfloat=="true"', {
295 'cflags': ['-mhard-float'],
296 'ldflags': ['-mhard-float'],
297 }, {
298 'cflags': ['-msoft-float'],
299 'ldflags': ['-msoft-float'],
300 }],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000301 ['mips_arch_variant=="r6"', {
Paul Lind18a7ebb2014-12-17 22:29:32 -0800302 'defines': [
303 '_MIPS_ARCH_MIPS32R6',
304 'FPU_MODE_FP64',
305 ],
306 'cflags!': ['-mfp32', '-mfpxx'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000307 'cflags': ['-mips32r6', '-Wa,-mips32r6'],
308 'ldflags': [
309 '-mips32r6',
310 '-Wl,--dynamic-linker=$(LDSO_PATH)',
311 '-Wl,--rpath=$(LD_R_PATH)',
312 ],
313 }],
314 ['mips_arch_variant=="r2"', {
Paul Lind18a7ebb2014-12-17 22:29:32 -0800315 'conditions': [
316 [ 'mips_fpu_mode=="fp64"', {
317 'defines': [
318 '_MIPS_ARCH_MIPS32R2',
319 'FPU_MODE_FP64',
320 ],
321 'cflags': ['-mfp64'],
322 }],
323 ['mips_fpu_mode=="fpxx"', {
324 'defines': [
325 '_MIPS_ARCH_MIPS32R2',
326 'FPU_MODE_FPXX',
327 ],
328 'cflags': ['-mfpxx'],
329 }],
330 ['mips_fpu_mode=="fp32"', {
331 'defines': [
332 '_MIPS_ARCH_MIPS32R2',
333 'FPU_MODE_FP32',
334 ],
335 'cflags': ['-mfp32'],
336 }],
337 ],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000338 'cflags': ['-mips32r2', '-Wa,-mips32r2'],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800339 'ldflags': ['-mips32r2'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000340 }],
341 ['mips_arch_variant=="r1"', {
Paul Lind18a7ebb2014-12-17 22:29:32 -0800342 'defines': [
343 'FPU_MODE_FP32',
344 ],
345 'cflags!': ['-mfp64', '-mfpxx'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000346 'cflags': ['-mips32', '-Wa,-mips32'],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800347 'ldflags': ['-mips32'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000348 }],
349 ['mips_arch_variant=="rx"', {
Paul Lind18a7ebb2014-12-17 22:29:32 -0800350 'defines': [
351 '_MIPS_ARCH_MIPS32RX',
352 'FPU_MODE_FPXX',
353 ],
354 'cflags!': ['-mfp64', '-mfp32'],
355 'cflags': ['-mips32', '-Wa,-mips32', '-mfpxx'],
356 'ldflags': ['-mips32'],
357 }],
358 ],
359 }, {
360 # 'v8_target_arch!=target_arch'
361 # Target not built with an MIPS CXX compiler (simulator build).
362 'conditions': [
363 ['mips_arch_variant=="r6"', {
364 'defines': [
365 '_MIPS_ARCH_MIPS32R6',
366 'FPU_MODE_FP64',
367 ],
368 }],
369 ['mips_arch_variant=="r2"', {
370 'conditions': [
371 [ 'mips_fpu_mode=="fp64"', {
372 'defines': [
373 '_MIPS_ARCH_MIPS32R2',
374 'FPU_MODE_FP64',
375 ],
376 }],
377 ['mips_fpu_mode=="fpxx"', {
378 'defines': [
379 '_MIPS_ARCH_MIPS32R2',
380 'FPU_MODE_FPXX',
381 ],
382 }],
383 ['mips_fpu_mode=="fp32"', {
384 'defines': [
385 '_MIPS_ARCH_MIPS32R2',
386 'FPU_MODE_FP32',
387 ],
388 }],
389 ],
390 }],
391 ['mips_arch_variant=="r1"', {
392 'defines': [
393 'FPU_MODE_FP32',
394 ],
395 }],
396 ['mips_arch_variant=="rx"', {
397 'defines': [
398 '_MIPS_ARCH_MIPS32RX',
399 'FPU_MODE_FPXX',
400 ],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000401 }],
402 ],
403 }],
404 ],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800405 }], #_toolset=="target"
406 ['_toolset=="host"', {
407 'conditions': [
408 ['mips_arch_variant=="rx"', {
409 'defines': [
410 '_MIPS_ARCH_MIPS32RX',
411 'FPU_MODE_FPXX',
412 ],
413 }],
414 ['mips_arch_variant=="r6"', {
415 'defines': [
416 '_MIPS_ARCH_MIPS32R6',
417 'FPU_MODE_FP64',
418 ],
419 }],
420 ['mips_arch_variant=="r2"', {
421 'conditions': [
422 ['mips_fpu_mode=="fp64"', {
423 'defines': [
424 '_MIPS_ARCH_MIPS32R2',
425 'FPU_MODE_FP64',
426 ],
427 }],
428 ['mips_fpu_mode=="fpxx"', {
429 'defines': [
430 '_MIPS_ARCH_MIPS32R2',
431 'FPU_MODE_FPXX',
432 ],
433 }],
434 ['mips_fpu_mode=="fp32"', {
435 'defines': [
436 '_MIPS_ARCH_MIPS32R2',
437 'FPU_MODE_FP32'
438 ],
439 }],
440 ],
441 }],
442 ['mips_arch_variant=="r1"', {
443 'defines': ['FPU_MODE_FP32',],
444 }],
445 ]
446 }], #_toolset=="host"
447 ],
448 }], # v8_target_arch=="mips"
449 ['v8_target_arch=="mipsel"', {
450 'defines': [
451 'V8_TARGET_ARCH_MIPS',
452 ],
453 'conditions': [
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000454 [ 'v8_can_use_fpu_instructions=="true"', {
455 'defines': [
456 'CAN_USE_FPU_INSTRUCTIONS',
457 ],
458 }],
459 [ 'v8_use_mips_abi_hardfloat=="true"', {
460 'defines': [
461 '__mips_hard_float=1',
462 'CAN_USE_FPU_INSTRUCTIONS',
463 ],
464 }, {
465 'defines': [
466 '__mips_soft_float=1'
467 ],
468 }],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800469 ],
470 'target_conditions': [
471 ['_toolset=="target"', {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000472 'conditions': [
Paul Lind18a7ebb2014-12-17 22:29:32 -0800473 ['v8_target_arch==target_arch and android_webview_build==0', {
474 # Target built with a Mips CXX compiler.
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000475 'cflags': ['-EL'],
476 'ldflags': ['-EL'],
477 'conditions': [
478 [ 'v8_use_mips_abi_hardfloat=="true"', {
479 'cflags': ['-mhard-float'],
480 'ldflags': ['-mhard-float'],
481 }, {
482 'cflags': ['-msoft-float'],
483 'ldflags': ['-msoft-float'],
484 }],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000485 ['mips_arch_variant=="r6"', {
Paul Lind18a7ebb2014-12-17 22:29:32 -0800486 'defines': [
487 '_MIPS_ARCH_MIPS32R6',
488 'FPU_MODE_FP64',
489 ],
490 'cflags!': ['-mfp32', '-mfpxx'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000491 'cflags': ['-mips32r6', '-Wa,-mips32r6'],
492 'ldflags': [
493 '-mips32r6',
494 '-Wl,--dynamic-linker=$(LDSO_PATH)',
495 '-Wl,--rpath=$(LD_R_PATH)',
496 ],
497 }],
498 ['mips_arch_variant=="r2"', {
Paul Lind18a7ebb2014-12-17 22:29:32 -0800499 'conditions': [
500 [ 'mips_fpu_mode=="fp64"', {
501 'defines': [
502 '_MIPS_ARCH_MIPS32R2',
503 'FPU_MODE_FP64',
504 ],
505 'cflags': ['-mfp64'],
506 }],
507 ['mips_fpu_mode=="fpxx"', {
508 'defines': [
509 '_MIPS_ARCH_MIPS32R2',
510 'FPU_MODE_FPXX',
511 ],
512 'cflags': ['-mfpxx'],
513 }],
514 ['mips_fpu_mode=="fp32"', {
515 'defines': [
516 '_MIPS_ARCH_MIPS32R2',
517 'FPU_MODE_FP32',
518 ],
519 'cflags': ['-mfp32'],
520 }],
521 ],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000522 'cflags': ['-mips32r2', '-Wa,-mips32r2'],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800523 'ldflags': ['-mips32r2'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000524 }],
525 ['mips_arch_variant=="r1"', {
Paul Lind18a7ebb2014-12-17 22:29:32 -0800526 'cflags!': ['-mfp64', '-mfpxx'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000527 'cflags': ['-mips32', '-Wa,-mips32'],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800528 'ldflags': ['-mips32'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000529 }],
530 ['mips_arch_variant=="rx"', {
Paul Lind18a7ebb2014-12-17 22:29:32 -0800531 'defines': [
532 '_MIPS_ARCH_MIPS32RX',
533 'FPU_MODE_FPXX',
534 ],
535 'cflags!': ['-mfp64', '-mfp32'],
536 'cflags': ['-mips32', '-Wa,-mips32', '-mfpxx'],
537 'ldflags': ['-mips32'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000538 }],
539 ['mips_arch_variant=="loongson"', {
Paul Lind18a7ebb2014-12-17 22:29:32 -0800540 'defines': [
541 '_MIPS_ARCH_LOONGSON',
542 'FPU_MODE_FP32',
543 ],
544 'cflags!': ['-mfp64', '-mfp32', '-mfpxx'],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000545 'cflags': ['-mips3', '-Wa,-mips3'],
546 }],
547 ],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800548 }, {
549 # 'v8_target_arch!=target_arch'
550 # Target not built with an MIPS CXX compiler (simulator build).
551 'conditions': [
552 ['mips_arch_variant=="r6"', {
553 'defines': [
554 '_MIPS_ARCH_MIPS32R6',
555 'FPU_MODE_FP64',
556 ],
557 }],
558 ['mips_arch_variant=="r2"', {
559 'conditions': [
560 [ 'mips_fpu_mode=="fp64"', {
561 'defines': [
562 '_MIPS_ARCH_MIPS32R2',
563 'FPU_MODE_FP64',
564 ],
565 }],
566 ['mips_fpu_mode=="fpxx"', {
567 'defines': [
568 '_MIPS_ARCH_MIPS32R2',
569 'FPU_MODE_FPXX',
570 ],
571 }],
572 ['mips_fpu_mode=="fp32"', {
573 'defines': [
574 '_MIPS_ARCH_MIPS32R2',
575 'FPU_MODE_FP32',
576 ],
577 }],
578 ],
579 }],
580 ['mips_arch_variant=="r1"', {
581 'defines': [
582 'FPU_MODE_FP32',
583 ],
584 }],
585 ['mips_arch_variant=="rx"', {
586 'defines': [
587 '_MIPS_ARCH_MIPS32RX',
588 'FPU_MODE_FPXX',
589 ],
590 }],
591 ['mips_arch_variant=="loongson"', {
592 'defines': [
593 '_MIPS_ARCH_LOONGSON',
594 'FPU_MODE_FP32',
595 ],
596 }],
597 ],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000598 }],
599 ],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800600 }], #_toolset=="target
601 ['_toolset=="host"', {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000602 'conditions': [
Paul Lind18a7ebb2014-12-17 22:29:32 -0800603 ['mips_arch_variant=="rx"', {
604 'defines': [
605 '_MIPS_ARCH_MIPS32RX',
606 'FPU_MODE_FPXX',
607 ],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000608 }],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800609 ['mips_arch_variant=="r6"', {
610 'defines': [
611 '_MIPS_ARCH_MIPS32R6',
612 'FPU_MODE_FP64',
613 ],
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000614 }],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800615 ['mips_arch_variant=="r2"', {
616 'conditions': [
617 ['mips_fpu_mode=="fp64"', {
618 'defines': [
619 '_MIPS_ARCH_MIPS32R2',
620 'FPU_MODE_FP64',
621 ],
622 }],
623 ['mips_fpu_mode=="fpxx"', {
624 'defines': [
625 '_MIPS_ARCH_MIPS32R2',
626 'FPU_MODE_FPXX',
627 ],
628 }],
629 ['mips_fpu_mode=="fp32"', {
630 'defines': [
631 '_MIPS_ARCH_MIPS32R2',
632 'FPU_MODE_FP32'
633 ],
634 }],
635 ],
636 }],
637 ['mips_arch_variant=="r1"', {
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000638 'defines': ['FPU_MODE_FP32',],
639 }],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800640 ['mips_arch_variant=="loongson"', {
641 'defines': [
642 '_MIPS_ARCH_LOONGSON',
643 'FPU_MODE_FP32',
644 ],
645 }],
646 ]
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000647 }],
648 ],
649 }], # v8_target_arch=="mipsel"
650 ['v8_target_arch=="mips64el"', {
651 'defines': [
652 'V8_TARGET_ARCH_MIPS64',
653 ],
654 'conditions': [
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000655 [ 'v8_can_use_fpu_instructions=="true"', {
656 'defines': [
657 'CAN_USE_FPU_INSTRUCTIONS',
658 ],
659 }],
660 [ 'v8_use_mips_abi_hardfloat=="true"', {
661 'defines': [
662 '__mips_hard_float=1',
663 'CAN_USE_FPU_INSTRUCTIONS',
664 ],
665 }, {
666 'defines': [
667 '__mips_soft_float=1'
668 ],
669 }],
Paul Lind18a7ebb2014-12-17 22:29:32 -0800670 ],
671 'target_conditions': [
672 ['_toolset=="target"', {
673 'conditions': [
674 ['v8_target_arch==target_arch and android_webview_build==0', {
675 'cflags': ['-EL'],
676 'ldflags': ['-EL'],
677 'conditions': [
678 [ 'v8_use_mips_abi_hardfloat=="true"', {
679 'cflags': ['-mhard-float'],
680 'ldflags': ['-mhard-float'],
681 }, {
682 'cflags': ['-msoft-float'],
683 'ldflags': ['-msoft-float'],
684 }],
685 ['mips_arch_variant=="r6"', {
686 'defines': ['_MIPS_ARCH_MIPS64R6',],
687 'cflags': ['-mips64r6', '-mabi=64', '-Wa,-mips64r6'],
688 'ldflags': [
689 '-mips64r6', '-mabi=64',
690 '-Wl,--dynamic-linker=$(LDSO_PATH)',
691 '-Wl,--rpath=$(LD_R_PATH)',
692 ],
693 }],
694 ['mips_arch_variant=="r2"', {
695 'defines': ['_MIPS_ARCH_MIPS64R2',],
696 'cflags': ['-mips64r2', '-mabi=64', '-Wa,-mips64r2'],
697 'ldflags': [
698 '-mips64r2', '-mabi=64',
699 '-Wl,--dynamic-linker=$(LDSO_PATH)',
700 '-Wl,--rpath=$(LD_R_PATH)',
701 ],
702 }],
703 ],
704 }, {
705 # 'v8_target_arch!=target_arch'
706 # Target not built with an MIPS CXX compiler (simulator build).
707 'conditions': [
708 ['mips_arch_variant=="r6"', {
709 'defines': ['_MIPS_ARCH_MIPS64R6',],
710 }],
711 ['mips_arch_variant=="r2"', {
712 'defines': ['_MIPS_ARCH_MIPS64R2',],
713 }],
714 ],
715 }],
716 ],
717 }], #'_toolset=="target"
718 ['_toolset=="host"', {
719 'conditions': [
720 ['mips_arch_variant=="r6"', {
721 'defines': ['_MIPS_ARCH_MIPS64R6',],
722 }],
723 ['mips_arch_variant=="r2"', {
724 'defines': ['_MIPS_ARCH_MIPS64R2',],
725 }],
726 ],
727 }], #'_toolset=="host"
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000728 ],
729 }], # v8_target_arch=="mips64el"
730 ['v8_target_arch=="x64"', {
731 'defines': [
732 'V8_TARGET_ARCH_X64',
733 ],
734 'xcode_settings': {
735 'ARCHS': [ 'x86_64' ],
736 },
737 'msvs_settings': {
738 'VCLinkerTool': {
739 'StackReserveSize': '2097152',
740 },
741 },
742 'msvs_configuration_platform': 'x64',
743 }], # v8_target_arch=="x64"
744 ['v8_target_arch=="x32"', {
745 'defines': [
746 # x32 port shares the source code with x64 port.
747 'V8_TARGET_ARCH_X64',
748 'V8_TARGET_ARCH_32_BIT',
749 ],
750 'cflags': [
751 '-mx32',
752 # Inhibit warning if long long type is used.
753 '-Wno-long-long',
754 ],
755 'ldflags': [
756 '-mx32',
757 ],
758 }], # v8_target_arch=="x32"
759 ['OS=="win"', {
760 'defines': [
761 'WIN32',
762 ],
763 # 4351: VS 2005 and later are warning us that they've fixed a bug
764 # present in VS 2003 and earlier.
765 'msvs_disabled_warnings': [4351],
766 'msvs_configuration_attributes': {
767 'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)',
768 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
769 'CharacterSet': '1',
770 },
771 }],
772 ['OS=="win" and v8_target_arch=="ia32"', {
773 'msvs_settings': {
774 'VCCLCompilerTool': {
775 # Ensure no surprising artifacts from 80bit double math with x86.
776 'AdditionalOptions': ['/arch:SSE2'],
777 },
778 },
779 }],
780 ['OS=="win" and v8_enable_prof==1', {
781 'msvs_settings': {
782 'VCLinkerTool': {
783 'GenerateMapFile': 'true',
784 },
785 },
786 }],
787 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
788 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \
789 (v8_target_arch=="arm" or v8_target_arch=="ia32" or \
790 v8_target_arch=="x87" or v8_target_arch=="mips" or \
791 v8_target_arch=="mipsel")', {
792 'target_conditions': [
793 ['_toolset=="host"', {
794 'conditions': [
795 ['host_cxx_is_biarch==1', {
796 'cflags': [ '-m32' ],
797 'ldflags': [ '-m32' ]
798 }],
799 ],
800 'xcode_settings': {
801 'ARCHS': [ 'i386' ],
802 },
803 }],
804 ['_toolset=="target"', {
805 'conditions': [
806 ['target_cxx_is_biarch==1 and nacl_target_arch!="nacl_x64"', {
807 'cflags': [ '-m32' ],
808 'ldflags': [ '-m32' ],
809 }],
810 # Enable feedback-directed optimisation when building in android.
811 [ 'android_webview_build == 1', {
812 'aosp_build_settings': {
813 'LOCAL_FDO_SUPPORT': 'true',
814 },
815 }],
816 ],
817 'xcode_settings': {
818 'ARCHS': [ 'i386' ],
819 },
820 }],
821 ],
822 }],
823 ['(OS=="linux" or OS=="android") and \
824 (v8_target_arch=="x64" or v8_target_arch=="arm64")', {
825 'target_conditions': [
826 ['_toolset=="host"', {
827 'conditions': [
828 ['host_cxx_is_biarch==1', {
829 'cflags': [ '-m64' ],
830 'ldflags': [ '-m64' ]
831 }],
832 ],
833 }],
834 ['_toolset=="target"', {
835 'conditions': [
836 ['target_cxx_is_biarch==1', {
837 'cflags': [ '-m64' ],
838 'ldflags': [ '-m64' ],
839 }],
840 # Enable feedback-directed optimisation when building in android.
841 [ 'android_webview_build == 1', {
842 'aosp_build_settings': {
843 'LOCAL_FDO_SUPPORT': 'true',
844 },
845 }],
846 ]
847 }],
848 ],
849 }],
850 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
851 or OS=="netbsd" or OS=="qnx"', {
852 'conditions': [
853 [ 'v8_no_strict_aliasing==1', {
854 'cflags': [ '-fno-strict-aliasing' ],
855 }],
856 ], # conditions
857 }],
858 ['OS=="solaris"', {
859 'defines': [ '__C99FEATURES__=1' ], # isinf() etc.
860 }],
861 ['OS=="freebsd" or OS=="openbsd"', {
862 'cflags': [ '-I/usr/local/include' ],
863 }],
864 ['OS=="netbsd"', {
865 'cflags': [ '-I/usr/pkg/include' ],
866 }],
867 ], # conditions
868 'configurations': {
869 # Abstract configuration for v8_optimized_debug == 0.
870 'DebugBase0': {
871 'abstract': 1,
872 'msvs_settings': {
873 'VCCLCompilerTool': {
874 'Optimization': '0',
875 'conditions': [
876 ['component=="shared_library"', {
877 'RuntimeLibrary': '3', # /MDd
878 }, {
879 'RuntimeLibrary': '1', # /MTd
880 }],
881 ],
882 },
883 'VCLinkerTool': {
884 'LinkIncremental': '2',
885 },
886 },
887 'conditions': [
888 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
889 OS=="qnx"', {
890 'cflags!': [
891 '-O0',
892 '-O3',
893 '-O2',
894 '-O1',
895 '-Os',
896 ],
897 'cflags': [
898 '-fdata-sections',
899 '-ffunction-sections',
900 ],
901 }],
902 ['OS=="mac"', {
903 'xcode_settings': {
904 'GCC_OPTIMIZATION_LEVEL': '0', # -O0
905 },
906 }],
907 ],
908 }, # DebugBase0
909 # Abstract configuration for v8_optimized_debug == 1.
910 'DebugBase1': {
911 'abstract': 1,
912 'msvs_settings': {
913 'VCCLCompilerTool': {
914 'Optimization': '1',
915 'InlineFunctionExpansion': '2',
916 'EnableIntrinsicFunctions': 'true',
917 'FavorSizeOrSpeed': '0',
918 'StringPooling': 'true',
919 'BasicRuntimeChecks': '0',
920 'conditions': [
921 ['component=="shared_library"', {
922 'RuntimeLibrary': '3', # /MDd
923 }, {
924 'RuntimeLibrary': '1', # /MTd
925 }],
926 ],
927 },
928 'VCLinkerTool': {
929 'LinkIncremental': '2',
930 },
931 },
932 'conditions': [
933 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
934 OS=="qnx"', {
935 'cflags!': [
936 '-O0',
937 '-O3', # TODO(2807) should be -O1.
938 '-O2',
939 '-Os',
940 ],
941 'cflags': [
942 '-fdata-sections',
943 '-ffunction-sections',
944 '-O1', # TODO(2807) should be -O3.
945 ],
946 'conditions': [
947 ['gcc_version==44 and clang==0', {
948 'cflags': [
949 # Avoid crashes with gcc 4.4 in the v8 test suite.
950 '-fno-tree-vrp',
951 ],
952 }],
953 ],
954 }],
955 ['OS=="mac"', {
956 'xcode_settings': {
957 'GCC_OPTIMIZATION_LEVEL': '3', # -O3
958 'GCC_STRICT_ALIASING': 'YES',
959 },
960 }],
961 ],
962 }, # DebugBase1
963 # Abstract configuration for v8_optimized_debug == 2.
964 'DebugBase2': {
965 'abstract': 1,
966 'msvs_settings': {
967 'VCCLCompilerTool': {
968 'Optimization': '2',
969 'InlineFunctionExpansion': '2',
970 'EnableIntrinsicFunctions': 'true',
971 'FavorSizeOrSpeed': '0',
972 'StringPooling': 'true',
973 'BasicRuntimeChecks': '0',
974 'conditions': [
975 ['component=="shared_library"', {
976 'RuntimeLibrary': '3', #/MDd
977 }, {
978 'RuntimeLibrary': '1', #/MTd
979 }],
980 ['v8_target_arch=="x64"', {
981 # TODO(2207): remove this option once the bug is fixed.
982 'WholeProgramOptimization': 'true',
983 }],
984 ],
985 },
986 'VCLinkerTool': {
987 'LinkIncremental': '1',
988 'OptimizeReferences': '2',
989 'EnableCOMDATFolding': '2',
990 },
991 },
992 'conditions': [
993 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
994 OS=="qnx"', {
995 'cflags!': [
996 '-O0',
997 '-O1',
998 '-Os',
999 ],
1000 'cflags': [
1001 '-fdata-sections',
1002 '-ffunction-sections',
1003 ],
1004 'defines': [
1005 'OPTIMIZED_DEBUG'
1006 ],
1007 'conditions': [
1008 # TODO(crbug.com/272548): Avoid -O3 in NaCl
1009 ['nacl_target_arch=="none"', {
1010 'cflags': ['-O3'],
1011 'cflags!': ['-O2'],
1012 }, {
1013 'cflags': ['-O2'],
1014 'cflags!': ['-O3'],
1015 }],
1016 ['gcc_version==44 and clang==0', {
1017 'cflags': [
1018 # Avoid crashes with gcc 4.4 in the v8 test suite.
1019 '-fno-tree-vrp',
1020 ],
1021 }],
1022 ],
1023 }],
1024 ['OS=="mac"', {
1025 'xcode_settings': {
1026 'GCC_OPTIMIZATION_LEVEL': '3', # -O3
1027 'GCC_STRICT_ALIASING': 'YES',
1028 },
1029 }],
1030 ],
1031 }, # DebugBase2
1032 # Common settings for the Debug configuration.
1033 'DebugBaseCommon': {
1034 'abstract': 1,
1035 'defines': [
1036 'ENABLE_DISASSEMBLER',
1037 'V8_ENABLE_CHECKS',
1038 'OBJECT_PRINT',
1039 'VERIFY_HEAP',
1040 'DEBUG'
1041 ],
1042 'conditions': [
1043 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
1044 OS=="qnx"', {
1045 'cflags': [ '-Woverloaded-virtual', '<(wno_array_bounds)', ],
1046 }],
1047 ['OS=="linux" and v8_enable_backtrace==1', {
1048 # Support for backtrace_symbols.
1049 'ldflags': [ '-rdynamic' ],
1050 }],
1051 ['OS=="android"', {
1052 'variables': {
1053 'android_full_debug%': 1,
1054 },
1055 'conditions': [
1056 ['android_full_debug==0', {
1057 # Disable full debug if we want a faster v8 in a debug build.
1058 # TODO(2304): pass DISABLE_DEBUG_ASSERT instead of hiding DEBUG.
1059 'defines!': [
1060 'DEBUG',
1061 ],
1062 }],
1063 ],
1064 }],
1065 ],
1066 }, # DebugBaseCommon
1067 'Debug': {
1068 'inherit_from': ['DebugBaseCommon'],
1069 'conditions': [
1070 ['v8_optimized_debug==0', {
1071 'inherit_from': ['DebugBase0'],
1072 }],
1073 ['v8_optimized_debug==1', {
1074 'inherit_from': ['DebugBase1'],
1075 }],
1076 ['v8_optimized_debug==2', {
1077 'inherit_from': ['DebugBase2'],
1078 }],
1079 ],
1080 }, # Debug
1081 'Release': {
1082 'conditions': [
1083 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', {
1084 'cflags!': [
1085 '-Os',
1086 ],
1087 'cflags': [
1088 '-fdata-sections',
1089 '-ffunction-sections',
1090 '<(wno_array_bounds)',
1091 ],
1092 'conditions': [
1093 [ 'gcc_version==44 and clang==0', {
1094 'cflags': [
1095 # Avoid crashes with gcc 4.4 in the v8 test suite.
1096 '-fno-tree-vrp',
1097 ],
1098 }],
1099 # TODO(crbug.com/272548): Avoid -O3 in NaCl
1100 ['nacl_target_arch=="none"', {
1101 'cflags': ['-O3'],
1102 'cflags!': ['-O2'],
1103 }, {
1104 'cflags': ['-O2'],
1105 'cflags!': ['-O3'],
1106 }],
1107 ],
1108 }],
1109 ['OS=="android"', {
1110 'cflags!': [
1111 '-O3',
1112 '-Os',
1113 ],
1114 'cflags': [
1115 '-fdata-sections',
1116 '-ffunction-sections',
1117 '-O2',
1118 ],
1119 'conditions': [
1120 [ 'gcc_version==44 and clang==0', {
1121 'cflags': [
1122 # Avoid crashes with gcc 4.4 in the v8 test suite.
1123 '-fno-tree-vrp',
1124 ],
1125 }],
1126 ],
1127 }],
1128 ['OS=="mac"', {
1129 'xcode_settings': {
1130 'GCC_OPTIMIZATION_LEVEL': '3', # -O3
1131
1132 # -fstrict-aliasing. Mainline gcc
1133 # enables this at -O2 and above,
1134 # but Apple gcc does not unless it
1135 # is specified explicitly.
1136 'GCC_STRICT_ALIASING': 'YES',
1137 },
1138 }], # OS=="mac"
1139 ['OS=="win"', {
1140 'msvs_settings': {
1141 'VCCLCompilerTool': {
1142 'Optimization': '2',
1143 'InlineFunctionExpansion': '2',
1144 'EnableIntrinsicFunctions': 'true',
1145 'FavorSizeOrSpeed': '0',
1146 'StringPooling': 'true',
1147 'conditions': [
1148 ['component=="shared_library"', {
1149 'RuntimeLibrary': '2', #/MD
1150 }, {
1151 'RuntimeLibrary': '0', #/MT
1152 }],
1153 ['v8_target_arch=="x64"', {
1154 # TODO(2207): remove this option once the bug is fixed.
1155 'WholeProgramOptimization': 'true',
1156 }],
1157 ],
1158 },
1159 'VCLinkerTool': {
1160 'LinkIncremental': '1',
1161 'OptimizeReferences': '2',
1162 'EnableCOMDATFolding': '2',
1163 },
1164 },
1165 }], # OS=="win"
1166 ], # conditions
1167 }, # Release
1168 }, # configurations
1169 }, # target_defaults
1170}