The data contained in this repository can be downloaded to your computer using one of several clients.
Please see the documentation of your version control software client for more information.

Please select the desired protocol below to get the URL.

This URL has Read-Only access.

Statistics
| Branch: | Revision:

main_repo / deps / v8 / build / toolchain.gypi @ f230a1cf

History | View | Annotate | Download (23.8 KB)

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
    'gcc_version%': 'unknown',
34
    'CXX%': '${CXX:-$(which g++)}',  # Used to assemble a shell command.
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%': '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%': 'mips32r2',
60

    
61
    'v8_enable_backtrace%': 0,
62

    
63
    # Enable profiling support. Only required on Windows.
64
    'v8_enable_prof%': 0,
65

    
66
    # Some versions of GCC 4.5 seem to need -fno-strict-aliasing.
67
    'v8_no_strict_aliasing%': 0,
68

    
69
    # Chrome needs this definition unconditionally. For standalone V8 builds,
70
    # it's handled in build/standalone.gypi.
71
    'want_separate_host_toolset%': 1,
72

    
73
    'host_os%': '<(OS)',
74
    'werror%': '-Werror',
75
    # For a shared library build, results in "libv8-<(soname_version).so".
76
    'soname_version%': '',
77

    
78
    # Allow to suppress the array bounds warning (default is no suppression).
79
    'wno_array_bounds%': '',
80
  },
81
  'target_defaults': {
82
    'conditions': [
83
      ['v8_target_arch=="arm"', {
84
        'defines': [
85
          'V8_TARGET_ARCH_ARM',
86
        ],
87
        'target_conditions': [
88
          ['_toolset=="host"', {
89
            'variables': {
90
              'armcompiler': '<!($(echo ${CXX_host:-$(which g++)}) -v 2>&1 | grep -q "^Target: arm" && echo "yes" || echo "no")',
91
            },
92
            'conditions': [
93
              ['armcompiler=="yes"', {
94
                'conditions': [
95
                  [ 'armv7==1', {
96
                    'cflags': ['-march=armv7-a',],
97
                  }],
98
                  [ 'armv7==1 or armv7=="default"', {
99
                    'conditions': [
100
                      [ 'arm_neon==1', {
101
                        'cflags': ['-mfpu=neon',],
102
                      },
103
                      {
104
                        'conditions': [
105
                          [ 'arm_fpu!="default"', {
106
                            'cflags': ['-mfpu=<(arm_fpu)',],
107
                          }],
108
                        ],
109
                      }],
110
                    ],
111
                  }],
112
                  [ 'arm_float_abi!="default"', {
113
                    'cflags': ['-mfloat-abi=<(arm_float_abi)',],
114
                  }],
115
                  [ 'arm_thumb==1', {
116
                    'cflags': ['-mthumb',],
117
                  }],
118
                  [ 'arm_thumb==0', {
119
                    'cflags': ['-marm',],
120
                  }],
121
                  [ 'arm_test=="on"', {
122
                    'defines': [
123
                      'ARM_TEST',
124
                    ],
125
                  }],
126
                ],
127
              }, {
128
                # armcompiler=="no"
129
                'conditions': [
130
                  [ 'armv7==1 or armv7=="default"', {
131
                    'defines': [
132
                      'CAN_USE_ARMV7_INSTRUCTIONS=1',
133
                    ],
134
                    'conditions': [
135
                      [ 'arm_fpu=="default"', {
136
                        'defines': [
137
                          'CAN_USE_VFP3_INSTRUCTIONS',
138
                        ],
139
                      }],
140
                      [ 'arm_fpu=="vfpv3-d16"', {
141
                        'defines': [
142
                          'CAN_USE_VFP3_INSTRUCTIONS',
143
                        ],
144
                      }],
145
                      [ 'arm_fpu=="vfpv3"', {
146
                        'defines': [
147
                          'CAN_USE_VFP3_INSTRUCTIONS',
148
                          'CAN_USE_VFP32DREGS',
149
                        ],
150
                      }],
151
                      [ 'arm_fpu=="neon" or arm_neon==1', {
152
                        'defines': [
153
                          'CAN_USE_VFP3_INSTRUCTIONS',
154
                          'CAN_USE_VFP32DREGS',
155
                        ],
156
                      }],
157
                    ],
158
                  }],
159
                  [ 'arm_float_abi=="hard"', {
160
                    'defines': [
161
                      'USE_EABI_HARDFLOAT=1',
162
                    ],
163
                  }],
164
                  [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
165
                    'defines': [
166
                      'USE_EABI_HARDFLOAT=0',
167
                    ],
168
                  }],
169
                ],
170
                'defines': [
171
                  'ARM_TEST',
172
                ],
173
              }],
174
            ],
175
          }],  # _toolset=="host"
176
          ['_toolset=="target"', {
177
            'variables': {
178
              'armcompiler': '<!($(echo ${CXX_target:-<(CXX)}) -v 2>&1 | grep -q "^Target: arm" && echo "yes" || echo "no")',
179
            },
180
            'conditions': [
181
              ['armcompiler=="yes"', {
182
                'conditions': [
183
                  [ 'armv7==1', {
184
                    'cflags': ['-march=armv7-a',],
185
                  }],
186
                  [ 'armv7==1 or armv7=="default"', {
187
                    'conditions': [
188
                      [ 'arm_neon==1', {
189
                        'cflags': ['-mfpu=neon',],
190
                      },
191
                      {
192
                        'conditions': [
193
                          [ 'arm_fpu!="default"', {
194
                            'cflags': ['-mfpu=<(arm_fpu)',],
195
                          }],
196
                        ],
197
                      }],
198
                    ],
199
                  }],
200
                  [ 'arm_float_abi!="default"', {
201
                    'cflags': ['-mfloat-abi=<(arm_float_abi)',],
202
                  }],
203
                  [ 'arm_thumb==1', {
204
                    'cflags': ['-mthumb',],
205
                  }],
206
                  [ 'arm_thumb==0', {
207
                    'cflags': ['-marm',],
208
                  }],
209
                  [ 'arm_test=="on"', {
210
                    'defines': [
211
                      'ARM_TEST',
212
                    ],
213
                  }],
214
                ],
215
              }, {
216
                # armcompiler=="no"
217
                'conditions': [
218
                  [ 'armv7==1 or armv7=="default"', {
219
                    'defines': [
220
                      'CAN_USE_ARMV7_INSTRUCTIONS=1',
221
                    ],
222
                    'conditions': [
223
                      [ 'arm_fpu=="default"', {
224
                        'defines': [
225
                          'CAN_USE_VFP3_INSTRUCTIONS',
226
                        ],
227
                      }],
228
                      [ 'arm_fpu=="vfpv3-d16"', {
229
                        'defines': [
230
                          'CAN_USE_VFP3_INSTRUCTIONS',
231
                        ],
232
                      }],
233
                      [ 'arm_fpu=="vfpv3"', {
234
                        'defines': [
235
                          'CAN_USE_VFP3_INSTRUCTIONS',
236
                          'CAN_USE_VFP32DREGS',
237
                        ],
238
                      }],
239
                      [ 'arm_fpu=="neon" or arm_neon==1', {
240
                        'defines': [
241
                          'CAN_USE_VFP3_INSTRUCTIONS',
242
                          'CAN_USE_VFP32DREGS',
243
                        ],
244
                      }],
245
                    ],
246
                  }],
247
                  [ 'arm_float_abi=="hard"', {
248
                    'defines': [
249
                      'USE_EABI_HARDFLOAT=1',
250
                    ],
251
                  }],
252
                  [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
253
                    'defines': [
254
                      'USE_EABI_HARDFLOAT=0',
255
                    ],
256
                  }],
257
                ],
258
                'defines': [
259
                  'ARM_TEST',
260
                ],
261
              }],
262
            ],
263
          }],  # _toolset=="target"
264
        ],
265
      }],  # v8_target_arch=="arm"
266
      ['v8_target_arch=="ia32"', {
267
        'defines': [
268
          'V8_TARGET_ARCH_IA32',
269
        ],
270
      }],  # v8_target_arch=="ia32"
271
      ['v8_target_arch=="mipsel"', {
272
        'defines': [
273
          'V8_TARGET_ARCH_MIPS',
274
        ],
275
        'variables': {
276
          'mipscompiler': '<!($(echo <(CXX)) -v 2>&1 | grep -q "^Target: mips" && echo "yes" || echo "no")',
277
        },
278
        'conditions': [
279
          ['mipscompiler=="yes"', {
280
            'target_conditions': [
281
              ['_toolset=="target"', {
282
                'cflags': ['-EL'],
283
                'ldflags': ['-EL'],
284
                'conditions': [
285
                  [ 'v8_use_mips_abi_hardfloat=="true"', {
286
                    'cflags': ['-mhard-float'],
287
                    'ldflags': ['-mhard-float'],
288
                  }, {
289
                    'cflags': ['-msoft-float'],
290
                    'ldflags': ['-msoft-float'],
291
                  }],
292
                  ['mips_arch_variant=="mips32r2"', {
293
                    'cflags': ['-mips32r2', '-Wa,-mips32r2'],
294
                  }],
295
                  ['mips_arch_variant=="mips32r1"', {
296
                    'cflags': ['-mips32', '-Wa,-mips32'],
297
                 }],
298
                  ['mips_arch_variant=="loongson"', {
299
                    'cflags': ['-mips3', '-Wa,-mips3'],
300
                  }],
301
                ],
302
              }],
303
            ],
304
          }],
305
          [ 'v8_can_use_fpu_instructions=="true"', {
306
            'defines': [
307
              'CAN_USE_FPU_INSTRUCTIONS',
308
            ],
309
          }],
310
          [ 'v8_use_mips_abi_hardfloat=="true"', {
311
            'defines': [
312
              '__mips_hard_float=1',
313
              'CAN_USE_FPU_INSTRUCTIONS',
314
            ],
315
          }, {
316
            'defines': [
317
              '__mips_soft_float=1'
318
            ],
319
          }],
320
          ['mips_arch_variant=="mips32r2"', {
321
            'defines': ['_MIPS_ARCH_MIPS32R2',],
322
          }],
323
          ['mips_arch_variant=="loongson"', {
324
            'defines': ['_MIPS_ARCH_LOONGSON',],
325
          }],
326
        ],
327
      }],  # v8_target_arch=="mipsel"
328
      ['v8_target_arch=="x64"', {
329
        'defines': [
330
          'V8_TARGET_ARCH_X64',
331
        ],
332
        'xcode_settings': {
333
          'ARCHS': [ 'x86_64' ],
334
        },
335
        'msvs_settings': {
336
          'VCLinkerTool': {
337
            'StackReserveSize': '2097152',
338
          },
339
        },
340
        'msvs_configuration_platform': 'x64',
341
      }],  # v8_target_arch=="x64"
342
      ['OS=="win"', {
343
        'defines': [
344
          'WIN32',
345
        ],
346
        'msvs_configuration_attributes': {
347
          'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)',
348
          'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
349
          'CharacterSet': '1',
350
        },
351
      }],
352
      ['OS=="win" and v8_enable_prof==1', {
353
        'msvs_settings': {
354
          'VCLinkerTool': {
355
            'GenerateMapFile': 'true',
356
          },
357
        },
358
      }],
359
      ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
360
         or OS=="netbsd"', {
361
        'conditions': [
362
          [ 'v8_no_strict_aliasing==1', {
363
            'cflags': [ '-fno-strict-aliasing' ],
364
          }],
365
        ],  # conditions
366
      }],
367
      ['OS=="solaris"', {
368
        'defines': [ '__C99FEATURES__=1' ],  # isinf() etc.
369
      }],
370
      ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
371
         or OS=="netbsd" or OS=="mac" or OS=="android") and \
372
        (v8_target_arch=="arm" or v8_target_arch=="ia32" or \
373
         v8_target_arch=="mipsel")', {
374
        # Check whether the host compiler and target compiler support the
375
        # '-m32' option and set it if so.
376
        'target_conditions': [
377
          ['_toolset=="host"', {
378
            'variables': {
379
              'm32flag': '<!((echo | $(echo ${CXX_host:-$(which g++)}) -m32 -E - > /dev/null 2>&1) && echo "-m32" || true)',
380
            },
381
            'cflags': [ '<(m32flag)' ],
382
            'ldflags': [ '<(m32flag)' ],
383
            'xcode_settings': {
384
              'ARCHS': [ 'i386' ],
385
            },
386
          }],
387
          ['_toolset=="target"', {
388
            'variables': {
389
              'm32flag': '<!((echo | $(echo ${CXX_target:-<(CXX)}) -m32 -E - > /dev/null 2>&1) && echo "-m32" || true)',
390
              'clang%': 0,
391
            },
392
            'conditions': [
393
              ['(OS!="android" or clang==1) and \
394
                nacl_target_arch!="nacl_x64"', {
395
                'cflags': [ '<(m32flag)' ],
396
                'ldflags': [ '<(m32flag)' ],
397
              }],
398
            ],
399
            'xcode_settings': {
400
              'ARCHS': [ 'i386' ],
401
            },
402
          }],
403
        ],
404
      }],
405
      ['(OS=="linux") and (v8_target_arch=="x64")', {
406
        # Check whether the host compiler and target compiler support the
407
        # '-m64' option and set it if so.
408
        'target_conditions': [
409
          ['_toolset=="host"', {
410
            'variables': {
411
              'm64flag': '<!((echo | $(echo ${CXX_host:-$(which g++)}) -m64 -E - > /dev/null 2>&1) && echo "-m64" || true)',
412
            },
413
            'cflags': [ '<(m64flag)' ],
414
            'ldflags': [ '<(m64flag)' ],
415
          }],
416
          ['_toolset=="target"', {
417
            'variables': {
418
              'm64flag': '<!((echo | $(echo ${CXX_target:-<(CXX)}) -m64 -E - > /dev/null 2>&1) && echo "-m64" || true)',
419
            },
420
            'cflags': [ '<(m64flag)' ],
421
            'ldflags': [ '<(m64flag)' ],
422
          }]
423
        ],
424
      }],
425
      ['OS=="freebsd" or OS=="openbsd"', {
426
        'cflags': [ '-I/usr/local/include' ],
427
      }],
428
      ['OS=="netbsd"', {
429
        'cflags': [ '-I/usr/pkg/include' ],
430
      }],
431
    ],  # conditions
432
    'configurations': {
433
      'Debug': {
434
        'defines': [
435
          'ENABLE_DISASSEMBLER',
436
          'V8_ENABLE_CHECKS',
437
          'OBJECT_PRINT',
438
          'VERIFY_HEAP',
439
          'DEBUG'
440
        ],
441
        'msvs_settings': {
442
          'VCCLCompilerTool': {
443
            'conditions': [
444
              ['v8_optimized_debug==0', {
445
                'Optimization': '0',
446
                'conditions': [
447
                  ['component=="shared_library"', {
448
                    'RuntimeLibrary': '3',  # /MDd
449
                  }, {
450
                    'RuntimeLibrary': '1',  # /MTd
451
                  }],
452
                ],
453
              }],
454
              ['v8_optimized_debug==1', {
455
                'Optimization': '1',
456
                'InlineFunctionExpansion': '2',
457
                'EnableIntrinsicFunctions': 'true',
458
                'FavorSizeOrSpeed': '0',
459
                'StringPooling': 'true',
460
                'BasicRuntimeChecks': '0',
461
                'conditions': [
462
                  ['component=="shared_library"', {
463
                    'RuntimeLibrary': '3',  # /MDd
464
                  }, {
465
                    'RuntimeLibrary': '1',  # /MTd
466
                  }],
467
                ],
468
              }],
469
              ['v8_optimized_debug==2', {
470
                'Optimization': '2',
471
                'InlineFunctionExpansion': '2',
472
                'EnableIntrinsicFunctions': 'true',
473
                'FavorSizeOrSpeed': '0',
474
                'StringPooling': 'true',
475
                'BasicRuntimeChecks': '0',
476
                'conditions': [
477
                  ['component=="shared_library"', {
478
                    'RuntimeLibrary': '3',  #/MDd
479
                  }, {
480
                    'RuntimeLibrary': '1',  #/MTd
481
                  }],
482
                  ['v8_target_arch=="x64"', {
483
                    # TODO(2207): remove this option once the bug is fixed.
484
                    'WholeProgramOptimization': 'true',
485
                  }],
486
                ],
487
              }],
488
            ],
489
          },
490
          'VCLinkerTool': {
491
            'conditions': [
492
              ['v8_optimized_debug==0', {
493
                'LinkIncremental': '2',
494
              }],
495
              ['v8_optimized_debug==1', {
496
                'LinkIncremental': '2',
497
              }],
498
              ['v8_optimized_debug==2', {
499
                'LinkIncremental': '1',
500
                'OptimizeReferences': '2',
501
                'EnableCOMDATFolding': '2',
502
              }],
503
            ],
504
          },
505
        },
506
        'conditions': [
507
          ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', {
508
            'cflags': [ '-Wall', '<(werror)', '-W', '-Wno-unused-parameter',
509
                        '-Wnon-virtual-dtor', '-Woverloaded-virtual',
510
                        '<(wno_array_bounds)' ],
511
            'conditions': [
512
              ['v8_optimized_debug==0', {
513
                'cflags!': [
514
                  '-O0',
515
                  '-O3',
516
                  '-O2',
517
                  '-O1',
518
                  '-Os',
519
                ],
520
                'cflags': [
521
                  '-fdata-sections',
522
                  '-ffunction-sections',
523
                ],
524
              }],
525
              ['v8_optimized_debug==1', {
526
                'cflags!': [
527
                  '-O0',
528
                  '-O3', # TODO(2807) should be -O1.
529
                  '-O2',
530
                  '-Os',
531
                ],
532
                'cflags': [
533
                  '-fdata-sections',
534
                  '-ffunction-sections',
535
                  '-O1', # TODO(2807) should be -O3.
536
                ],
537
              }],
538
              ['v8_optimized_debug==2', {
539
                'cflags!': [
540
                  '-O0',
541
                  '-O1',
542
                  '-Os',
543
                ],
544
                'cflags': [
545
                  '-fdata-sections',
546
                  '-ffunction-sections',
547
                ],
548
                'defines': [
549
                  'OPTIMIZED_DEBUG'
550
                ],
551
                'conditions': [
552
                  # TODO(crbug.com/272548): Avoid -O3 in NaCl
553
                  ['nacl_target_arch=="none"', {
554
                    'cflags': ['-O3'],
555
                    'cflags!': ['-O2'],
556
                    }, {
557
                    'cflags': ['-O2'],
558
                    'cflags!': ['-O3'],
559
                  }],
560
                ],
561
              }],
562
              ['v8_optimized_debug!=0 and gcc_version==44 and clang==0', {
563
                'cflags': [
564
                  # Avoid crashes with gcc 4.4 in the v8 test suite.
565
                  '-fno-tree-vrp',
566
                ],
567
              }],
568
            ],
569
          }],
570
          ['OS=="linux" and v8_enable_backtrace==1', {
571
            # Support for backtrace_symbols.
572
            'ldflags': [ '-rdynamic' ],
573
          }],
574
          ['OS=="android"', {
575
            'variables': {
576
              'android_full_debug%': 1,
577
            },
578
            'conditions': [
579
              ['android_full_debug==0', {
580
                # Disable full debug if we want a faster v8 in a debug build.
581
                # TODO(2304): pass DISABLE_DEBUG_ASSERT instead of hiding DEBUG.
582
                'defines!': [
583
                  'DEBUG',
584
                ],
585
              }],
586
            ],
587
          }],
588
          ['OS=="mac"', {
589
            'xcode_settings': {
590
              'conditions': [
591
                 ['v8_optimized_debug==0', {
592
                   'GCC_OPTIMIZATION_LEVEL': '0',  # -O0
593
                 }, {
594
                   'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
595
                   'GCC_STRICT_ALIASING': 'YES',
596
                 }],
597
               ],
598
            },
599
          }],
600
        ],
601
      },  # Debug
602
      'Release': {
603
        'conditions': [
604
          ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', {
605
            'cflags!': [
606
              '-Os',
607
            ],
608
            'cflags': [
609
              '-fdata-sections',
610
              '-ffunction-sections',
611
              '<(wno_array_bounds)',
612
            ],
613
            'conditions': [
614
              [ 'gcc_version==44 and clang==0', {
615
                'cflags': [
616
                  # Avoid crashes with gcc 4.4 in the v8 test suite.
617
                  '-fno-tree-vrp',
618
                ],
619
              }],
620
              # TODO(crbug.com/272548): Avoid -O3 in NaCl
621
              ['nacl_target_arch=="none"', {
622
                'cflags': ['-O3'],
623
                'cflags!': ['-O2'],
624
              }, {
625
                'cflags': ['-O2'],
626
                'cflags!': ['-O3'],
627
              }],
628
            ],
629
          }],
630
          ['OS=="android"', {
631
            'cflags!': [
632
              '-O3',
633
              '-Os',
634
            ],
635
            'cflags': [
636
              '-fdata-sections',
637
              '-ffunction-sections',
638
              '-O2',
639
            ],
640
            'conditions': [
641
              [ 'gcc_version==44 and clang==0', {
642
                'cflags': [
643
                  # Avoid crashes with gcc 4.4 in the v8 test suite.
644
                  '-fno-tree-vrp',
645
                ],
646
              }],
647
            ],
648
          }],
649
          ['OS=="mac"', {
650
            'xcode_settings': {
651
              'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
652

    
653
              # -fstrict-aliasing.  Mainline gcc
654
              # enables this at -O2 and above,
655
              # but Apple gcc does not unless it
656
              # is specified explicitly.
657
              'GCC_STRICT_ALIASING': 'YES',
658
            },
659
          }],  # OS=="mac"
660
          ['OS=="win"', {
661
            'msvs_settings': {
662
              'VCCLCompilerTool': {
663
                'Optimization': '2',
664
                'InlineFunctionExpansion': '2',
665
                'EnableIntrinsicFunctions': 'true',
666
                'FavorSizeOrSpeed': '0',
667
                'StringPooling': 'true',
668
                'conditions': [
669
                  ['component=="shared_library"', {
670
                    'RuntimeLibrary': '2',  #/MD
671
                  }, {
672
                    'RuntimeLibrary': '0',  #/MT
673
                  }],
674
                  ['v8_target_arch=="x64"', {
675
                    # TODO(2207): remove this option once the bug is fixed.
676
                    'WholeProgramOptimization': 'true',
677
                  }],
678
                ],
679
              },
680
              'VCLinkerTool': {
681
                'LinkIncremental': '1',
682
                'OptimizeReferences': '2',
683
                'EnableCOMDATFolding': '2',
684
              },
685
            },
686
          }],  # OS=="win"
687
        ],  # conditions
688
      },  # Release
689
    },  # configurations
690
  },  # target_defaults
691
}