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    'cfi_vptr%': 0,
36    'lsan%': 0,
37    'msan%': 0,
38    'tsan%': 0,
39    'ubsan%': 0,
40    'ubsan_vptr%': 0,
41    'has_valgrind%': 0,
42    'coverage%': 0,
43    'v8_target_arch%': '<(target_arch)',
44    'v8_host_byteorder%': '<!(python -c "import sys; print(sys.byteorder)")',
45    'force_dynamic_crt%': 0,
46
47    # Setting 'v8_can_use_vfp32dregs' to 'true' will cause V8 to use the VFP
48    # registers d16-d31 in the generated code, both in the snapshot and for the
49    # ARM target. Leaving the default value of 'false' will avoid the use of
50    # these registers in the snapshot and use CPU feature probing when running
51    # on the target.
52    'v8_can_use_vfp32dregs%': 'false',
53    'arm_test_noprobe%': 'off',
54
55    # Similar to vfp but on MIPS.
56    'v8_can_use_fpu_instructions%': 'true',
57
58    # Similar to the ARM hard float ABI but on MIPS.
59    'v8_use_mips_abi_hardfloat%': 'true',
60
61    # MIPS MSA support
62    'mips_use_msa%': 0,
63
64    # Print to stdout on Android.
65    'v8_android_log_stdout%': 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 gypfiles/standalone.gypi.
77    'want_separate_host_toolset%': 1,
78
79    # Toolset the shell binary should be compiled for. Possible values are
80    # 'host' and 'target'.
81    # The setting is ignored if want_separate_host_toolset is 0.
82    'v8_toolset_for_shell%': '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    # Override where to find binutils
90    'binutils_dir%': '',
91
92    'conditions': [
93      ['OS=="linux" and host_arch=="x64"', {
94        'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin',
95      }],
96      ['OS=="linux" and host_arch=="ia32"', {
97        'binutils_dir%': 'third_party/binutils/Linux_ia32/Release/bin',
98      }],
99    ],
100
101    # Indicates if gcmole tools are downloaded by a hook.
102    'gcmole%': 0,
103  },
104
105  # [GYP] this needs to be outside of the top level 'variables'
106  'conditions': [
107    ['host_arch=="ia32" or host_arch=="x64" or \
108      host_arch=="ppc" or host_arch=="ppc64" or \
109      host_arch=="s390x" or \
110      clang==1', {
111      'variables': {
112        'host_cxx_is_biarch%': 1,
113       },
114     }, {
115      'variables': {
116        'host_cxx_is_biarch%': 0,
117      },
118    }],
119    ['target_arch=="ia32" or target_arch=="x64" or \
120      target_arch=="ppc" or target_arch=="ppc64" or \
121      target_arch=="s390x" or clang==1', {
122      'variables': {
123        'target_cxx_is_biarch%': 1,
124       },
125     }, {
126      'variables': {
127        'target_cxx_is_biarch%': 0,
128      },
129    }],
130  ],
131  'target_defaults': {
132    'include_dirs': [
133      '<(V8_ROOT)',
134      '<(V8_ROOT)/include',
135    ],
136    'conditions': [
137      ['clang', {
138        'cflags': [ '-Werror', '-Wno-unknown-pragmas' ],
139      },{
140        'cflags!': [ '-Wall', '-Wextra' ],
141        'cflags': [ '-Wno-return-type' ],
142      }],
143      ['v8_target_arch=="arm"', {
144        'defines': [
145          'V8_TARGET_ARCH_ARM',
146        ],
147        'conditions': [
148          [ 'arm_version==7 or arm_version=="default"', {
149            'defines': [
150              'CAN_USE_ARMV7_INSTRUCTIONS',
151            ],
152          }],
153          [ 'arm_fpu=="vfpv3-d16" or arm_fpu=="default"', {
154            'defines': [
155              'CAN_USE_VFP3_INSTRUCTIONS',
156            ],
157          }],
158          [ 'arm_fpu=="vfpv3"', {
159            'defines': [
160              'CAN_USE_VFP3_INSTRUCTIONS',
161              'CAN_USE_VFP32DREGS',
162            ],
163          }],
164          [ 'arm_fpu=="neon"', {
165            'defines': [
166              'CAN_USE_VFP3_INSTRUCTIONS',
167              'CAN_USE_VFP32DREGS',
168              'CAN_USE_NEON',
169            ],
170          }],
171          [ 'arm_test_noprobe=="on"', {
172            'defines': [
173              'ARM_TEST_NO_FEATURE_PROBE',
174            ],
175          }],
176        ],
177        'target_conditions': [
178          ['_toolset=="host"', {
179            'conditions': [
180              ['v8_target_arch==host_arch', {
181                # Host built with an Arm CXX compiler.
182                'conditions': [
183                  [ 'arm_version==7', {
184                    'cflags': ['-march=armv7-a',],
185                  }],
186                  [ 'arm_version==7 or arm_version=="default"', {
187                    'conditions': [
188                      [ 'arm_fpu!="default"', {
189                        'cflags': ['-mfpu=<(arm_fpu)',],
190                      }],
191                    ],
192                  }],
193                  [ 'arm_float_abi!="default"', {
194                    'cflags': ['-mfloat-abi=<(arm_float_abi)',],
195                  }],
196                  [ 'arm_thumb==1', {
197                    'cflags': ['-mthumb',],
198                  }],
199                  [ 'arm_thumb==0', {
200                    'cflags': ['-marm',],
201                  }],
202                ],
203              }, {
204                # 'v8_target_arch!=host_arch'
205                # Host not built with an Arm CXX compiler (simulator build).
206                'conditions': [
207                  [ 'arm_float_abi=="hard"', {
208                    'defines': [
209                      'USE_EABI_HARDFLOAT=1',
210                    ],
211                  }],
212                  [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
213                    'defines': [
214                      'USE_EABI_HARDFLOAT=0',
215                    ],
216                  }],
217                ],
218              }],
219            ],
220          }],  # _toolset=="host"
221          ['_toolset=="target"', {
222            'conditions': [
223              ['v8_target_arch==target_arch', {
224                # Target built with an Arm CXX compiler.
225                'conditions': [
226                  [ 'arm_version==7', {
227                    'cflags': ['-march=armv7-a',],
228                  }],
229                  [ 'arm_version==7 or arm_version=="default"', {
230                    'conditions': [
231                      [ 'arm_fpu!="default"', {
232                        'cflags': ['-mfpu=<(arm_fpu)',],
233                      }],
234                    ],
235                  }],
236                  [ 'arm_float_abi!="default"', {
237                    'cflags': ['-mfloat-abi=<(arm_float_abi)',],
238                  }],
239                  [ 'arm_thumb==1', {
240                    'cflags': ['-mthumb',],
241                  }],
242                  [ 'arm_thumb==0', {
243                    'cflags': ['-marm',],
244                  }],
245                ],
246              }, {
247                # 'v8_target_arch!=target_arch'
248                # Target not built with an Arm CXX compiler (simulator build).
249                'conditions': [
250                  [ 'arm_float_abi=="hard"', {
251                    'defines': [
252                      'USE_EABI_HARDFLOAT=1',
253                    ],
254                  }],
255                  [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
256                    'defines': [
257                      'USE_EABI_HARDFLOAT=0',
258                    ],
259                  }],
260                ],
261              }],
262            ],
263          }],  # _toolset=="target"
264        ],
265      }],  # v8_target_arch=="arm"
266      ['v8_target_arch=="arm64"', {
267        'defines': [
268          'V8_TARGET_ARCH_ARM64',
269        ],
270        'conditions': [
271          ['v8_control_flow_integrity==1', {
272            'cflags': [ '-mbranch-protection=pac-ret+b-key+bti' ],
273          }],
274        ],
275       'target_conditions': [
276          ['_toolset == "target"', {
277            'cflags': [ '-fvisibility-inlines-hidden', '-fvisibility=hidden' ],
278          }],
279        ],
280      }],
281      ['v8_target_arch=="riscv64"', {
282        'defines': [
283          'V8_TARGET_ARCH_RISCV64',
284          '__riscv_xlen=64',
285          'CAN_USE_FPU_INSTRUCTIONS'
286        ],
287      }],
288      ['v8_target_arch=="loong64"', {
289        'defines': [
290          'V8_TARGET_ARCH_LOONG64',
291        ],
292      }],
293      ['v8_target_arch=="s390x"', {
294        'defines': [
295          'V8_TARGET_ARCH_S390',
296        ],
297        'cflags': [ '-ffp-contract=off' ],
298        'conditions': [
299          ['v8_target_arch=="s390x"', {
300            'defines': [
301              'V8_TARGET_ARCH_S390X',
302            ],
303          }],
304          ['v8_host_byteorder=="little"', {
305            'defines': [
306              'V8_TARGET_ARCH_S390_LE_SIM',
307            ],
308          }, {
309            'cflags': [ '-march=z196' ],
310          }],
311          ],
312      }],  # s390x
313      ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', {
314        'conditions': [
315          ['v8_target_arch=="ppc"', {
316            'defines': [
317              'V8_TARGET_ARCH_PPC',
318            ],
319          }],
320          ['v8_target_arch=="ppc64"', {
321            'defines': [
322              'V8_TARGET_ARCH_PPC64',
323            ],
324            'cflags': [
325              '-ffp-contract=off',
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" or OS=="os400"', {
339                # Work around AIX ceil, trunc and round oddities.
340                'cflags': [ '-mcpu=power5+ -mfprnd' ],
341              }],
342              ['OS=="aix" or OS=="os400"', {
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=="mips" or v8_target_arch=="mipsel" \
356        or v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
357        'target_conditions': [
358          ['_toolset=="target"', {
359            'conditions': [
360              ['v8_target_arch==target_arch', {
361                # Target built with a Mips CXX compiler.
362                'variables': {
363                  'ldso_path%': '<!(/bin/echo -n $LDSO_PATH)',
364                  'ld_r_path%': '<!(/bin/echo -n $LD_R_PATH)',
365                },
366                'conditions': [
367                  ['ldso_path!=""', {
368                    'ldflags': ['-Wl,--dynamic-linker=<(ldso_path)'],
369                  }],
370                  ['ld_r_path!=""', {
371                    'ldflags': ['-Wl,--rpath=<(ld_r_path)'],
372                  }],
373                  [ 'clang==1', {
374                    'cflags': ['-integrated-as'],
375                  }],
376                  ['OS!="mac"', {
377                    'defines': ['_MIPS_TARGET_HW',],
378                  }, {
379                    'defines': ['_MIPS_TARGET_SIMULATOR',],
380                  }],
381                ],
382              }, {
383                'defines': ['_MIPS_TARGET_SIMULATOR',],
384              }],
385            ],
386          }],  #'_toolset=="target"
387          ['_toolset=="host"', {
388            'conditions': [
389              ['v8_target_arch==target_arch and OS!="mac"', {
390                'defines': ['_MIPS_TARGET_HW',],
391              }, {
392                'defines': ['_MIPS_TARGET_SIMULATOR',],
393              }],
394            ],
395          }],  #'_toolset=="host"
396        ],
397      }],
398      ['v8_target_arch=="mips"', {
399        'defines': [
400          'V8_TARGET_ARCH_MIPS',
401        ],
402        'conditions': [
403          [ 'v8_can_use_fpu_instructions=="true"', {
404            'defines': [
405              'CAN_USE_FPU_INSTRUCTIONS',
406            ],
407          }],
408          [ 'v8_use_mips_abi_hardfloat=="true"', {
409            'defines': [
410              '__mips_hard_float=1',
411              'CAN_USE_FPU_INSTRUCTIONS',
412            ],
413          }, {
414            'defines': [
415              '__mips_soft_float=1'
416            ]
417          }],
418        ],
419        'target_conditions': [
420          ['_toolset=="target"', {
421            'conditions': [
422              ['v8_target_arch==target_arch', {
423                # Target built with a Mips CXX compiler.
424                'cflags': [
425                  '-EB',
426                  '-Wno-error=array-bounds',  # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
427                ],
428                'ldflags': ['-EB'],
429                'conditions': [
430                  [ 'v8_use_mips_abi_hardfloat=="true"', {
431                    'cflags': ['-mhard-float'],
432                    'ldflags': ['-mhard-float'],
433                  }, {
434                    'cflags': ['-msoft-float'],
435                    'ldflags': ['-msoft-float'],
436                  }],
437                  ['mips_arch_variant=="r6"', {
438                    'defines': [
439                      '_MIPS_ARCH_MIPS32R6',
440                      'FPU_MODE_FP64',
441                    ],
442                    'cflags!': ['-mfp32', '-mfpxx'],
443                    'conditions': [
444                      [ 'clang==0', {
445                        'cflags': ['-Wa,-mips32r6'],
446                      }],
447                    ],
448                    'cflags': ['-mips32r6'],
449                    'ldflags': ['-mips32r6'],
450                  }],
451                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
452                    'defines': [ '_MIPS_MSA' ],
453                  }],
454                  ['mips_arch_variant=="r2"', {
455                    'conditions': [
456                      [ 'mips_fpu_mode=="fp64"', {
457                        'defines': [
458                          '_MIPS_ARCH_MIPS32R2',
459                          'FPU_MODE_FP64',
460                        ],
461                        'cflags': ['-mfp64'],
462                      }],
463                      ['mips_fpu_mode=="fpxx"', {
464                        'defines': [
465                          '_MIPS_ARCH_MIPS32R2',
466                          'FPU_MODE_FPXX',
467                        ],
468                        'cflags': ['-mfpxx'],
469                      }],
470                      ['mips_fpu_mode=="fp32"', {
471                        'defines': [
472                          '_MIPS_ARCH_MIPS32R2',
473                          'FPU_MODE_FP32',
474                        ],
475                        'cflags': ['-mfp32'],
476                      }],
477                      [ 'clang==0', {
478                        'cflags': ['-Wa,-mips32r2'],
479                      }],
480                    ],
481                    'cflags': ['-mips32r2'],
482                    'ldflags': ['-mips32r2'],
483                  }],
484                  ['mips_arch_variant=="r1"', {
485                    'defines': [
486                      'FPU_MODE_FP32',
487                    ],
488                    'cflags!': ['-mfp64', '-mfpxx'],
489                    'conditions': [
490                      [ 'clang==0', {
491                        'cflags': ['-Wa,-mips32'],
492                      }],
493                    ],
494                    'cflags': ['-mips32'],
495                    'ldflags': ['-mips32'],
496                  }],
497                  ['mips_arch_variant=="rx"', {
498                    'defines': [
499                      '_MIPS_ARCH_MIPS32RX',
500                      'FPU_MODE_FPXX',
501                    ],
502                    'cflags!': ['-mfp64', '-mfp32'],
503                    'conditions': [
504                      [ 'clang==0', {
505                        'cflags': ['-Wa,-mips32'],
506                      }],
507                    ],
508                    'cflags': ['-mips32', '-mfpxx'],
509                    'ldflags': ['-mips32'],
510                  }],
511                ],
512              }, {
513                # 'v8_target_arch!=target_arch'
514                # Target not built with an MIPS CXX compiler (simulator build).
515                'conditions': [
516                  ['mips_arch_variant=="r6"', {
517                    'defines': [
518                      '_MIPS_ARCH_MIPS32R6',
519                      'FPU_MODE_FP64',
520                    ],
521                  }],
522                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
523                    'defines': [ '_MIPS_MSA' ],
524                  }],
525                  ['mips_arch_variant=="r2"', {
526                    'conditions': [
527                      [ 'mips_fpu_mode=="fp64"', {
528                        'defines': [
529                          '_MIPS_ARCH_MIPS32R2',
530                          'FPU_MODE_FP64',
531                        ],
532                      }],
533                      ['mips_fpu_mode=="fpxx"', {
534                        'defines': [
535                          '_MIPS_ARCH_MIPS32R2',
536                          'FPU_MODE_FPXX',
537                        ],
538                      }],
539                      ['mips_fpu_mode=="fp32"', {
540                        'defines': [
541                          '_MIPS_ARCH_MIPS32R2',
542                          'FPU_MODE_FP32',
543                        ],
544                      }],
545                    ],
546                  }],
547                  ['mips_arch_variant=="r1"', {
548                    'defines': [
549                      'FPU_MODE_FP32',
550                    ],
551                  }],
552                  ['mips_arch_variant=="rx"', {
553                    'defines': [
554                      '_MIPS_ARCH_MIPS32RX',
555                      'FPU_MODE_FPXX',
556                    ],
557                  }],
558                ],
559              }],
560            ],
561          }],  #_toolset=="target"
562          ['_toolset=="host"', {
563            'conditions': [
564              ['mips_arch_variant=="rx"', {
565                'defines': [
566                  '_MIPS_ARCH_MIPS32RX',
567                  'FPU_MODE_FPXX',
568                ],
569              }],
570              ['mips_arch_variant=="r6"', {
571                'defines': [
572                  '_MIPS_ARCH_MIPS32R6',
573                  'FPU_MODE_FP64',
574                ],
575              }],
576              ['mips_arch_variant=="r6" and mips_use_msa==1', {
577                'defines': [ '_MIPS_MSA' ],
578              }],
579              ['mips_arch_variant=="r2"', {
580                'conditions': [
581                  ['mips_fpu_mode=="fp64"', {
582                    'defines': [
583                      '_MIPS_ARCH_MIPS32R2',
584                      'FPU_MODE_FP64',
585                    ],
586                  }],
587                  ['mips_fpu_mode=="fpxx"', {
588                    'defines': [
589                      '_MIPS_ARCH_MIPS32R2',
590                      'FPU_MODE_FPXX',
591                    ],
592                  }],
593                  ['mips_fpu_mode=="fp32"', {
594                    'defines': [
595                      '_MIPS_ARCH_MIPS32R2',
596                      'FPU_MODE_FP32'
597                    ],
598                  }],
599                ],
600              }],
601              ['mips_arch_variant=="r1"', {
602                'defines': ['FPU_MODE_FP32',],
603              }],
604            ]
605          }],  #_toolset=="host"
606        ],
607      }],  # v8_target_arch=="mips"
608      ['v8_target_arch=="mipsel"', {
609        'defines': [
610          'V8_TARGET_ARCH_MIPS',
611        ],
612        'conditions': [
613          [ 'v8_can_use_fpu_instructions=="true"', {
614            'defines': [
615              'CAN_USE_FPU_INSTRUCTIONS',
616            ],
617          }],
618          [ 'v8_use_mips_abi_hardfloat=="true"', {
619            'defines': [
620              '__mips_hard_float=1',
621              'CAN_USE_FPU_INSTRUCTIONS',
622            ],
623          }, {
624            'defines': [
625              '__mips_soft_float=1'
626            ],
627          }],
628        ],
629        'target_conditions': [
630          ['_toolset=="target"', {
631            'conditions': [
632              ['v8_target_arch==target_arch', {
633                # Target built with a Mips CXX compiler.
634                'cflags': [
635                  '-EL',
636                  '-Wno-error=array-bounds',  # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
637                ],
638                'ldflags': ['-EL'],
639                'conditions': [
640                  [ 'v8_use_mips_abi_hardfloat=="true"', {
641                    'cflags': ['-mhard-float'],
642                    'ldflags': ['-mhard-float'],
643                  }, {
644                    'cflags': ['-msoft-float'],
645                    'ldflags': ['-msoft-float'],
646                  }],
647                  ['mips_arch_variant=="r6"', {
648                    'defines': [
649                      '_MIPS_ARCH_MIPS32R6',
650                      'FPU_MODE_FP64',
651                    ],
652                    'cflags!': ['-mfp32', '-mfpxx'],
653                    'conditions': [
654                      [ 'clang==0', {
655                        'cflags': ['-Wa,-mips32r6'],
656                      }],
657                    ],
658                    'cflags': ['-mips32r6'],
659                    'ldflags': ['-mips32r6'],
660                  }],
661                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
662                    'defines': [ '_MIPS_MSA' ],
663                  }],
664                  ['mips_arch_variant=="r2"', {
665                    'conditions': [
666                      [ 'mips_fpu_mode=="fp64"', {
667                        'defines': [
668                          '_MIPS_ARCH_MIPS32R2',
669                          'FPU_MODE_FP64',
670                        ],
671                        'cflags': ['-mfp64'],
672                      }],
673                      ['mips_fpu_mode=="fpxx"', {
674                        'defines': [
675                          '_MIPS_ARCH_MIPS32R2',
676                          'FPU_MODE_FPXX',
677                        ],
678                        'cflags': ['-mfpxx'],
679                      }],
680                      ['mips_fpu_mode=="fp32"', {
681                        'defines': [
682                          '_MIPS_ARCH_MIPS32R2',
683                          'FPU_MODE_FP32',
684                        ],
685                        'cflags': ['-mfp32'],
686                      }],
687                      [ 'clang==0', {
688                        'cflags': ['-Wa,-mips32r2'],
689                      }],
690                    ],
691                    'cflags': ['-mips32r2'],
692                    'ldflags': ['-mips32r2'],
693                  }],
694                  ['mips_arch_variant=="r1"', {
695                    'defines': [
696                      'FPU_MODE_FP32',
697                    ],
698                    'cflags!': ['-mfp64', '-mfpxx'],
699                    'conditions': [
700                      [ 'clang==0', {
701                        'cflags': ['-Wa,-mips32'],
702                      }],
703                    ],
704                    'cflags': ['-mips32'],
705                    'ldflags': ['-mips32'],
706                  }],
707                  ['mips_arch_variant=="rx"', {
708                    'defines': [
709                      '_MIPS_ARCH_MIPS32RX',
710                      'FPU_MODE_FPXX',
711                    ],
712                    'cflags!': ['-mfp64', '-mfp32'],
713                    'conditions': [
714                      [ 'clang==0', {
715                        'cflags': ['-Wa,-mips32'],
716                      }],
717                    ],
718                    'cflags': ['-mips32', '-mfpxx'],
719                    'ldflags': ['-mips32'],
720                  }],
721                  ['mips_arch_variant=="loongson"', {
722                    'defines': [
723                      '_MIPS_ARCH_LOONGSON',
724                      'FPU_MODE_FP32',
725                    ],
726                    'cflags!': ['-mfp64', '-mfpxx'],
727                    'conditions': [
728                      [ 'clang==0', {
729                        'cflags': ['-Wa,-mips3'],
730                      }],
731                    ],
732                    'cflags': ['-mips3', '-mfp32'],
733                  }],
734                ],
735              }, {
736                # 'v8_target_arch!=target_arch'
737                # Target not built with an MIPS CXX compiler (simulator build).
738                'conditions': [
739                  ['mips_arch_variant=="r6"', {
740                    'defines': [
741                      '_MIPS_ARCH_MIPS32R6',
742                      'FPU_MODE_FP64',
743                    ],
744                  }],
745                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
746                    'defines': [ '_MIPS_MSA' ],
747                  }],
748                  ['mips_arch_variant=="r2"', {
749                    'conditions': [
750                      [ 'mips_fpu_mode=="fp64"', {
751                        'defines': [
752                          '_MIPS_ARCH_MIPS32R2',
753                          'FPU_MODE_FP64',
754                        ],
755                      }],
756                      ['mips_fpu_mode=="fpxx"', {
757                        'defines': [
758                          '_MIPS_ARCH_MIPS32R2',
759                          'FPU_MODE_FPXX',
760                        ],
761                      }],
762                      ['mips_fpu_mode=="fp32"', {
763                        'defines': [
764                          '_MIPS_ARCH_MIPS32R2',
765                          'FPU_MODE_FP32',
766                        ],
767                      }],
768                    ],
769                  }],
770                  ['mips_arch_variant=="r1"', {
771                    'defines': [
772                      'FPU_MODE_FP32',
773                    ],
774                  }],
775                  ['mips_arch_variant=="rx"', {
776                    'defines': [
777                      '_MIPS_ARCH_MIPS32RX',
778                      'FPU_MODE_FPXX',
779                    ],
780                  }],
781                  ['mips_arch_variant=="loongson"', {
782                    'defines': [
783                      '_MIPS_ARCH_LOONGSON',
784                      'FPU_MODE_FP32',
785                    ],
786                  }],
787                ],
788              }],
789            ],
790          }], #_toolset=="target
791          ['_toolset=="host"', {
792            'conditions': [
793              ['mips_arch_variant=="rx"', {
794                'defines': [
795                  '_MIPS_ARCH_MIPS32RX',
796                  'FPU_MODE_FPXX',
797                ],
798              }],
799              ['mips_arch_variant=="r6"', {
800                'defines': [
801                  '_MIPS_ARCH_MIPS32R6',
802                  'FPU_MODE_FP64',
803                ],
804              }],
805              ['mips_arch_variant=="r6" and mips_use_msa==1', {
806                'defines': [ '_MIPS_MSA' ],
807              }],
808              ['mips_arch_variant=="r2"', {
809                'conditions': [
810                  ['mips_fpu_mode=="fp64"', {
811                    'defines': [
812                      '_MIPS_ARCH_MIPS32R2',
813                      'FPU_MODE_FP64',
814                    ],
815                  }],
816                  ['mips_fpu_mode=="fpxx"', {
817                    'defines': [
818                      '_MIPS_ARCH_MIPS32R2',
819                      'FPU_MODE_FPXX',
820                    ],
821                  }],
822                  ['mips_fpu_mode=="fp32"', {
823                    'defines': [
824                      '_MIPS_ARCH_MIPS32R2',
825                      'FPU_MODE_FP32'
826                    ],
827                  }],
828                ],
829              }],
830              ['mips_arch_variant=="r1"', {
831                'defines': ['FPU_MODE_FP32',],
832              }],
833              ['mips_arch_variant=="loongson"', {
834                'defines': [
835                  '_MIPS_ARCH_LOONGSON',
836                  'FPU_MODE_FP32',
837                ],
838              }],
839            ]
840          }],
841        ],
842      }],  # v8_target_arch=="mipsel"
843      ['v8_target_arch=="mips64el" or v8_target_arch=="mips64"', {
844        'defines': [
845          'V8_TARGET_ARCH_MIPS64',
846        ],
847        'conditions': [
848          [ 'v8_can_use_fpu_instructions=="true"', {
849            'defines': [
850              'CAN_USE_FPU_INSTRUCTIONS',
851            ],
852          }],
853          [ 'v8_host_byteorder=="little"', {
854            'defines': [
855              'V8_TARGET_ARCH_MIPS64_LE',
856            ],
857          }],
858          [ 'v8_host_byteorder=="big"', {
859            'defines': [
860              'V8_TARGET_ARCH_MIPS64_BE',
861            ],
862          }],
863          [ 'v8_use_mips_abi_hardfloat=="true"', {
864            'defines': [
865              '__mips_hard_float=1',
866              'CAN_USE_FPU_INSTRUCTIONS',
867            ],
868          }, {
869            'defines': [
870              '__mips_soft_float=1'
871            ],
872          }],
873         ],
874        'target_conditions': [
875          ['_toolset=="target"', {
876            'conditions': [
877              ['v8_target_arch==target_arch', {
878                'cflags': [
879                  '-Wno-error=array-bounds',  # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
880                ],
881                'conditions': [
882                  ['v8_target_arch=="mips64el"', {
883                    'cflags': ['-EL'],
884                    'ldflags': ['-EL'],
885                  }],
886                  ['v8_target_arch=="mips64"', {
887                    'cflags': ['-EB'],
888                    'ldflags': ['-EB'],
889                  }],
890                  [ 'v8_use_mips_abi_hardfloat=="true"', {
891                    'cflags': ['-mhard-float'],
892                    'ldflags': ['-mhard-float'],
893                  }, {
894                    'cflags': ['-msoft-float'],
895                    'ldflags': ['-msoft-float'],
896                  }],
897                  ['mips_arch_variant=="r6"', {
898                    'defines': ['_MIPS_ARCH_MIPS64R6',],
899                    'conditions': [
900                      [ 'clang==0', {
901                        'cflags': ['-Wa,-mips64r6'],
902                      }],
903                    ],
904                    'cflags': ['-mips64r6', '-mabi=64'],
905                    'ldflags': ['-mips64r6', '-mabi=64'],
906                  }],
907                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
908                    'defines': [ '_MIPS_MSA' ],
909                  }],
910                  ['mips_arch_variant=="r2"', {
911                    'defines': ['_MIPS_ARCH_MIPS64R2',],
912                    'conditions': [
913                      [ 'clang==0', {
914                        'cflags': ['-Wa,-mips64r2'],
915                      }],
916                    ],
917                    'cflags': ['-mips64r2', '-mabi=64'],
918                    'ldflags': ['-mips64r2', '-mabi=64'],
919                  }],
920                ],
921              }, {
922                # 'v8_target_arch!=target_arch'
923                # Target not built with an MIPS CXX compiler (simulator build).
924                'conditions': [
925                  ['mips_arch_variant=="r6"', {
926                    'defines': ['_MIPS_ARCH_MIPS64R6',],
927                  }],
928                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
929                    'defines': [ '_MIPS_MSA' ],
930                  }],
931                  ['mips_arch_variant=="r2"', {
932                    'defines': ['_MIPS_ARCH_MIPS64R2',],
933                  }],
934                ],
935              }],
936            ],
937          }],  #'_toolset=="target"
938          ['_toolset=="host"', {
939            'conditions': [
940              ['mips_arch_variant=="r6"', {
941                'defines': ['_MIPS_ARCH_MIPS64R6',],
942              }],
943              ['mips_arch_variant=="r6" and mips_use_msa==1', {
944                'defines': [ '_MIPS_MSA' ],
945              }],
946              ['mips_arch_variant=="r2"', {
947                'defines': ['_MIPS_ARCH_MIPS64R2',],
948              }],
949            ],
950          }],  #'_toolset=="host"
951        ],
952      }],  # v8_target_arch=="mips64el"
953      ['v8_target_arch=="x64"', {
954        'defines': [
955          'V8_TARGET_ARCH_X64',
956        ],
957        'xcode_settings': {
958          'ARCHS': [ 'x86_64' ],
959        },
960        'msvs_settings': {
961          'VCLinkerTool': {
962            'StackReserveSize': '2097152',
963          },
964        },
965        'msvs_configuration_platform': 'x64',
966      }],  # v8_target_arch=="x64"
967      ['OS=="win"', {
968        'defines': [
969          'WIN32',
970          'NOMINMAX',  # Refs: https://chromium-review.googlesource.com/c/v8/v8/+/1456620
971          '_WIN32_WINNT=0x0602',  # Windows 8
972        ],
973        # 4351: VS 2005 and later are warning us that they've fixed a bug
974        #       present in VS 2003 and earlier.
975        'msvs_disabled_warnings': [4351],
976        'msvs_configuration_attributes': {
977          'CharacterSet': '1',
978        },
979      }],
980      ['OS=="win" and v8_target_arch=="ia32"', {
981        'msvs_settings': {
982          'VCCLCompilerTool': {
983            # Ensure no surprising artifacts from 80bit double math with x86.
984            'AdditionalOptions': ['/arch:SSE2'],
985          },
986        },
987      }],
988      ['OS=="win" and v8_enable_prof==1', {
989        'msvs_settings': {
990          'VCLinkerTool': {
991            'GenerateMapFile': 'true',
992          },
993        },
994      }],
995      ['OS=="android"', {
996        'defines': [
997          'V8_HAVE_TARGET_OS',
998          'V8_TARGET_OS_ANDROID',
999        ]
1000      }],
1001      ['OS=="ios"', {
1002        'defines': [
1003          'V8_HAVE_TARGET_OS',
1004          'V8_TARGET_OS_IOS',
1005        ]
1006      }],
1007      ['OS=="linux"', {
1008        'defines': [
1009          'V8_HAVE_TARGET_OS',
1010          'V8_TARGET_OS_LINUX',
1011        ]
1012      }],
1013      ['OS=="mac"', {
1014        'defines': [
1015          'V8_HAVE_TARGET_OS',
1016          'V8_TARGET_OS_MACOS',
1017        ]
1018      }],
1019      ['OS=="win"', {
1020        'defines': [
1021          'V8_HAVE_TARGET_OS',
1022          'V8_TARGET_OS_WIN',
1023        ]
1024      }],
1025      ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
1026         or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \
1027        v8_target_arch=="ia32"', {
1028        'cflags': [
1029          '-msse2',
1030          '-mfpmath=sse',
1031          '-mmmx',  # Allows mmintrin.h for MMX intrinsics.
1032        ],
1033      }],
1034      ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
1035         or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \
1036        (v8_target_arch=="arm" or v8_target_arch=="ia32" or \
1037         v8_target_arch=="mips" or v8_target_arch=="mipsel" or \
1038         v8_target_arch=="ppc")', {
1039        'target_conditions': [
1040          ['_toolset=="host"', {
1041            'conditions': [
1042              ['host_cxx_is_biarch==1', {
1043                'conditions': [
1044                  ['host_arch=="s390x"', {
1045                    'cflags': [ '-m31' ],
1046                    'ldflags': [ '-m31' ]
1047                  },{
1048                   'cflags': [ '-m32' ],
1049                   'ldflags': [ '-m32' ]
1050                  }],
1051                ],
1052              }],
1053            ],
1054            'xcode_settings': {
1055              'ARCHS': [ 'i386' ],
1056            },
1057          }],
1058          ['_toolset=="target"', {
1059            'conditions': [
1060              ['target_cxx_is_biarch==1', {
1061                'conditions': [
1062                  ['host_arch=="s390x"', {
1063                    'cflags': [ '-m31' ],
1064                    'ldflags': [ '-m31' ]
1065                  },{
1066                   'cflags': [ '-m32' ],
1067                   'ldflags': [ '-m32' ],
1068                  }],
1069                ],
1070              }],
1071            ],
1072            'xcode_settings': {
1073              'ARCHS': [ 'i386' ],
1074            },
1075          }],
1076        ],
1077      }],
1078      ['(OS=="linux" or OS=="android") and \
1079        (v8_target_arch=="x64" or v8_target_arch=="arm64" or \
1080         v8_target_arch=="ppc64" or v8_target_arch=="s390x")', {
1081        'target_conditions': [
1082          ['_toolset=="host"', {
1083            'conditions': [
1084              ['host_cxx_is_biarch==1', {
1085                'cflags': [ '-m64' ],
1086                'ldflags': [ '-m64' ]
1087              }],
1088             ],
1089           }],
1090          ['_toolset=="target"', {
1091             'conditions': [
1092               ['target_cxx_is_biarch==1', {
1093                 'cflags': [ '-m64' ],
1094                 'ldflags': [ '-m64' ],
1095               }],
1096             ]
1097           }],
1098         ],
1099      }],
1100      ['OS=="android" and v8_android_log_stdout==1', {
1101        'defines': [
1102          'V8_ANDROID_LOG_STDOUT',
1103        ],
1104      }],
1105      ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
1106         or OS=="netbsd" or OS=="qnx" or OS=="aix" or OS=="os400"', {
1107        'conditions': [
1108          [ 'v8_no_strict_aliasing==1', {
1109            'cflags': [ '-fno-strict-aliasing' ],
1110          }],
1111        ],  # conditions
1112      }],
1113      ['OS=="solaris"', {
1114        'defines': [ '__C99FEATURES__=1' ],  # isinf() etc.
1115      }],
1116      ['OS=="freebsd" or OS=="openbsd"', {
1117        'cflags': [ '-I/usr/local/include' ],
1118      }],
1119      ['OS=="netbsd"', {
1120        'cflags': [ '-I/usr/pkg/include' ],
1121      }],
1122      ['OS=="aix" or OS=="os400"', {
1123        'defines': [
1124          # Support for malloc(0)
1125          '_LINUX_SOURCE_COMPAT=1',
1126          '__STDC_FORMAT_MACROS',
1127          '_ALL_SOURCE=1'],
1128        'conditions': [
1129          [ 'v8_target_arch=="ppc"', {
1130            'ldflags': [ '-Wl,-bmaxdata:0x60000000/dsa' ],
1131          }],
1132          [ 'v8_target_arch=="ppc64"', {
1133            'cflags': [ '-maix64', '-fdollars-in-identifiers', '-fno-extern-tls-init' ],
1134            'ldflags': [ '-maix64 -Wl,-bbigtoc' ],
1135          }],
1136        ],
1137      }],
1138    ],  # conditions
1139    'configurations': {
1140      'Debug': {
1141        'defines': [
1142          'ENABLE_DISASSEMBLER',
1143          'V8_ENABLE_CHECKS',
1144          'OBJECT_PRINT',
1145          'DEBUG',
1146          'V8_TRACE_MAPS',
1147          'V8_ENABLE_ALLOCATION_TIMEOUT',
1148          'V8_ENABLE_FORCE_SLOW_PATH',
1149        ],
1150        'conditions': [
1151          ['OS=="linux" and v8_enable_backtrace==1', {
1152            # Support for backtrace_symbols.
1153            'ldflags': [ '-rdynamic' ],
1154          }],
1155          ['OS=="aix" or OS=="os400"', {
1156            'ldflags': [ '-Wl,-bbigtoc' ],
1157            'conditions': [
1158              ['v8_target_arch=="ppc64"', {
1159                'cflags': [ '-maix64 -mcmodel=large' ],
1160              }],
1161            ],
1162          }],
1163          ['OS=="android"', {
1164            'variables': {
1165              'android_full_debug%': 1,
1166            },
1167            'conditions': [
1168              ['android_full_debug==0', {
1169                # Disable full debug if we want a faster v8 in a debug build.
1170                # TODO(2304): pass DISABLE_DEBUG_ASSERT instead of hiding DEBUG.
1171                'defines!': [
1172                  'DEBUG',
1173                  'ENABLE_SLOW_DCHECKS',
1174                ],
1175              }],
1176            ],
1177          }],
1178          ['v8_optimized_debug==0', {
1179            'msvs_settings': {
1180              'VCCLCompilerTool': {
1181                'Optimization': '0',
1182                'conditions': [
1183                  ['component=="shared_library" or force_dynamic_crt==1', {
1184                    'RuntimeLibrary': '3',  # /MDd
1185                  }, {
1186                     'RuntimeLibrary': '1',  # /MTd
1187                   }],
1188                ],
1189              },
1190              'VCLinkerTool': {
1191                'LinkIncremental': '2',
1192              },
1193            },
1194            'variables': {
1195              'v8_enable_slow_dchecks%': 1,
1196            },
1197            'conditions': [
1198              ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
1199            OS=="qnx" or OS=="aix" or OS=="os400"', {
1200                'cflags!': [
1201                  '-O3',
1202                  '-O2',
1203                  '-O1',
1204                  '-Os',
1205                ],
1206                'cflags': [
1207                  '-fdata-sections',
1208                  '-ffunction-sections',
1209                ],
1210              }],
1211              ['OS=="mac"', {
1212                'xcode_settings': {
1213                  'GCC_OPTIMIZATION_LEVEL': '0',  # -O0
1214                },
1215              }],
1216              ['v8_enable_slow_dchecks==1', {
1217                'defines': [
1218                  'ENABLE_SLOW_DCHECKS',
1219                ],
1220              }],
1221            ],
1222          }, {
1223            'msvs_settings': {
1224              'VCCLCompilerTool': {
1225                'Optimization': '2',
1226                'InlineFunctionExpansion': '2',
1227                'EnableIntrinsicFunctions': 'true',
1228                'FavorSizeOrSpeed': '0',
1229                'StringPooling': 'true',
1230                'BasicRuntimeChecks': '0',
1231                'conditions': [
1232                  ['component=="shared_library" or force_dynamic_crt==1', {
1233                    'RuntimeLibrary': '3',  #/MDd
1234                  }, {
1235                     'RuntimeLibrary': '1',  #/MTd
1236                   }],
1237                ],
1238              },
1239              'VCLinkerTool': {
1240                'LinkIncremental': '1',
1241                'OptimizeReferences': '2',
1242                'EnableCOMDATFolding': '2',
1243              },
1244            },
1245            'variables': {
1246              'v8_enable_slow_dchecks%': 0,
1247            },
1248            'conditions': [
1249              ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
1250            OS=="qnx" or OS=="aix" or OS=="os400"', {
1251                'cflags!': [
1252                  '-O0',
1253                  '-O1',
1254                  '-Os',
1255                ],
1256                'cflags': [
1257                  '-fdata-sections',
1258                  '-ffunction-sections',
1259                ],
1260                'conditions': [
1261                  # Don't use -O3 with sanitizers.
1262                  ['asan==0 and msan==0 and lsan==0 \
1263                and tsan==0 and ubsan==0 and ubsan_vptr==0', {
1264                    'cflags': ['-O3'],
1265                    'cflags!': ['-O2'],
1266                  }, {
1267                     'cflags': ['-O2'],
1268                     'cflags!': ['-O3'],
1269                   }],
1270                ],
1271              }],
1272              ['OS=="mac"', {
1273                'xcode_settings': {
1274                  'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
1275                  'GCC_STRICT_ALIASING': 'YES',
1276                },
1277              }],
1278              ['v8_enable_slow_dchecks==1', {
1279                'defines': [
1280                  'ENABLE_SLOW_DCHECKS',
1281                ],
1282              }],
1283            ],
1284          }],
1285          # Temporary refs: https://github.com/nodejs/node/pull/23801
1286          ['v8_enable_handle_zapping==1', {
1287            'defines': ['ENABLE_HANDLE_ZAPPING',],
1288          }],
1289        ],
1290
1291      },  # DebugBaseCommon
1292      'Release': {
1293        'variables': {
1294          'v8_enable_slow_dchecks%': 0,
1295        },
1296         # Temporary refs: https://github.com/nodejs/node/pull/23801
1297        'defines!': ['ENABLE_HANDLE_ZAPPING',],
1298        'conditions': [
1299          ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" \
1300            or OS=="aix" or OS=="os400"', {
1301            'cflags!': [
1302              '-Os',
1303            ],
1304            'cflags': [
1305              '-fdata-sections',
1306              '-ffunction-sections',
1307            ],
1308            'conditions': [
1309              # Don't use -O3 with sanitizers.
1310              ['asan==0 and msan==0 and lsan==0 \
1311                and tsan==0 and ubsan==0 and ubsan_vptr==0', {
1312                'cflags': ['-O3'],
1313                'cflags!': ['-O2'],
1314              }, {
1315                'cflags': ['-O2'],
1316                'cflags!': ['-O3'],
1317              }],
1318            ],
1319          }],
1320          ['OS=="android"', {
1321            'cflags!': [
1322              '-O3',
1323              '-Os',
1324            ],
1325            'cflags': [
1326              '-fdata-sections',
1327              '-ffunction-sections',
1328              '-O2',
1329            ],
1330          }],
1331          ['OS=="mac"', {
1332            'xcode_settings': {
1333              'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
1334
1335              # -fstrict-aliasing.  Mainline gcc
1336              # enables this at -O2 and above,
1337              # but Apple gcc does not unless it
1338              # is specified explicitly.
1339              'GCC_STRICT_ALIASING': 'YES',
1340            },
1341          }],  # OS=="mac"
1342          ['OS=="win"', {
1343            'msvs_settings': {
1344              'VCCLCompilerTool': {
1345                'Optimization': '2',
1346                'InlineFunctionExpansion': '2',
1347                'EnableIntrinsicFunctions': 'true',
1348                'FavorSizeOrSpeed': '0',
1349                'StringPooling': 'true',
1350                'conditions': [
1351                  ['component=="shared_library" or force_dynamic_crt==1', {
1352                    'RuntimeLibrary': '2',  #/MD
1353                  }, {
1354                    'RuntimeLibrary': '0',  #/MT
1355                  }],
1356                ],
1357              },
1358              'VCLinkerTool': {
1359                'LinkIncremental': '1',
1360                'OptimizeReferences': '2',
1361                'EnableCOMDATFolding': '2',
1362              },
1363            },
1364          }],  # OS=="win"
1365          ['v8_enable_slow_dchecks==1', {
1366            'defines': [
1367              'ENABLE_SLOW_DCHECKS',
1368            ],
1369          }],
1370        ],  # conditions
1371      },  # Release
1372    },  # configurations
1373    'msvs_disabled_warnings': [
1374      4129,  # unrecognized character escape sequence (torque-generated)
1375      4245,  # Conversion with signed/unsigned mismatch.
1376      4267,  # Conversion with possible loss of data.
1377      4324,  # Padding structure due to alignment.
1378      # 4351, # [refack] Old issue with array init.
1379      4355,  # 'this' used in base member initializer list
1380      4506,  # Benign "no definition for inline function"
1381      4661,  # no suitable definition provided for explicit template instantiation request
1382      4701,  # Potentially uninitialized local variable.
1383      4702,  # Unreachable code.
1384      4703,  # Potentially uninitialized local pointer variable.
1385      4709,  # Comma operator within array index expr (bugged).
1386      4714,  # Function marked forceinline not inlined.
1387      4715,  # Not all control paths return a value. (see https://crbug.com/v8/7658)
1388      4718,  # Recursive call has no side-effect.
1389      4723,  # https://crbug.com/v8/7771
1390      4724,  # https://crbug.com/v8/7771
1391      4800,  # Forcing value to bool.
1392    ],
1393    # Relevant only for x86.
1394    # Refs: https://github.com/nodejs/node/pull/25852
1395    # Refs: https://docs.microsoft.com/en-us/cpp/build/reference/safeseh-image-has-safe-exception-handlers
1396    'msvs_settings': {
1397      'VCLinkerTool': {
1398        'ImageHasSafeExceptionHandlers': 'false',
1399      },
1400    },
1401  },  # target_defaults
1402}
1403