11cb0ef41Sopenharmony_ci# Copyright 2013 the V8 project authors. All rights reserved.
21cb0ef41Sopenharmony_ci# Redistribution and use in source and binary forms, with or without
31cb0ef41Sopenharmony_ci# modification, are permitted provided that the following conditions are
41cb0ef41Sopenharmony_ci# met:
51cb0ef41Sopenharmony_ci#
61cb0ef41Sopenharmony_ci#     * Redistributions of source code must retain the above copyright
71cb0ef41Sopenharmony_ci#       notice, this list of conditions and the following disclaimer.
81cb0ef41Sopenharmony_ci#     * Redistributions in binary form must reproduce the above
91cb0ef41Sopenharmony_ci#       copyright notice, this list of conditions and the following
101cb0ef41Sopenharmony_ci#       disclaimer in the documentation and/or other materials provided
111cb0ef41Sopenharmony_ci#       with the distribution.
121cb0ef41Sopenharmony_ci#     * Neither the name of Google Inc. nor the names of its
131cb0ef41Sopenharmony_ci#       contributors may be used to endorse or promote products derived
141cb0ef41Sopenharmony_ci#       from this software without specific prior written permission.
151cb0ef41Sopenharmony_ci#
161cb0ef41Sopenharmony_ci# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
171cb0ef41Sopenharmony_ci# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
181cb0ef41Sopenharmony_ci# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
191cb0ef41Sopenharmony_ci# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
201cb0ef41Sopenharmony_ci# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
211cb0ef41Sopenharmony_ci# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
221cb0ef41Sopenharmony_ci# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
231cb0ef41Sopenharmony_ci# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
241cb0ef41Sopenharmony_ci# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
251cb0ef41Sopenharmony_ci# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
261cb0ef41Sopenharmony_ci# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
271cb0ef41Sopenharmony_ci
281cb0ef41Sopenharmony_ci# Shared definitions for all V8-related targets.
291cb0ef41Sopenharmony_ci
301cb0ef41Sopenharmony_ci{
311cb0ef41Sopenharmony_ci  'variables': {
321cb0ef41Sopenharmony_ci    'msvs_use_common_release': 0,
331cb0ef41Sopenharmony_ci    'clang%': 0,
341cb0ef41Sopenharmony_ci    'asan%': 0,
351cb0ef41Sopenharmony_ci    'cfi_vptr%': 0,
361cb0ef41Sopenharmony_ci    'lsan%': 0,
371cb0ef41Sopenharmony_ci    'msan%': 0,
381cb0ef41Sopenharmony_ci    'tsan%': 0,
391cb0ef41Sopenharmony_ci    'ubsan%': 0,
401cb0ef41Sopenharmony_ci    'ubsan_vptr%': 0,
411cb0ef41Sopenharmony_ci    'has_valgrind%': 0,
421cb0ef41Sopenharmony_ci    'coverage%': 0,
431cb0ef41Sopenharmony_ci    'v8_target_arch%': '<(target_arch)',
441cb0ef41Sopenharmony_ci    'v8_host_byteorder%': '<!(python -c "import sys; print(sys.byteorder)")',
451cb0ef41Sopenharmony_ci    'force_dynamic_crt%': 0,
461cb0ef41Sopenharmony_ci
471cb0ef41Sopenharmony_ci    # Setting 'v8_can_use_vfp32dregs' to 'true' will cause V8 to use the VFP
481cb0ef41Sopenharmony_ci    # registers d16-d31 in the generated code, both in the snapshot and for the
491cb0ef41Sopenharmony_ci    # ARM target. Leaving the default value of 'false' will avoid the use of
501cb0ef41Sopenharmony_ci    # these registers in the snapshot and use CPU feature probing when running
511cb0ef41Sopenharmony_ci    # on the target.
521cb0ef41Sopenharmony_ci    'v8_can_use_vfp32dregs%': 'false',
531cb0ef41Sopenharmony_ci    'arm_test_noprobe%': 'off',
541cb0ef41Sopenharmony_ci
551cb0ef41Sopenharmony_ci    # Similar to vfp but on MIPS.
561cb0ef41Sopenharmony_ci    'v8_can_use_fpu_instructions%': 'true',
571cb0ef41Sopenharmony_ci
581cb0ef41Sopenharmony_ci    # Similar to the ARM hard float ABI but on MIPS.
591cb0ef41Sopenharmony_ci    'v8_use_mips_abi_hardfloat%': 'true',
601cb0ef41Sopenharmony_ci
611cb0ef41Sopenharmony_ci    # MIPS MSA support
621cb0ef41Sopenharmony_ci    'mips_use_msa%': 0,
631cb0ef41Sopenharmony_ci
641cb0ef41Sopenharmony_ci    # Print to stdout on Android.
651cb0ef41Sopenharmony_ci    'v8_android_log_stdout%': 0,
661cb0ef41Sopenharmony_ci
671cb0ef41Sopenharmony_ci    'v8_enable_backtrace%': 0,
681cb0ef41Sopenharmony_ci
691cb0ef41Sopenharmony_ci    # Enable profiling support. Only required on Windows.
701cb0ef41Sopenharmony_ci    'v8_enable_prof%': 0,
711cb0ef41Sopenharmony_ci
721cb0ef41Sopenharmony_ci    # Some versions of GCC 4.5 seem to need -fno-strict-aliasing.
731cb0ef41Sopenharmony_ci    'v8_no_strict_aliasing%': 0,
741cb0ef41Sopenharmony_ci
751cb0ef41Sopenharmony_ci    # Chrome needs this definition unconditionally. For standalone V8 builds,
761cb0ef41Sopenharmony_ci    # it's handled in gypfiles/standalone.gypi.
771cb0ef41Sopenharmony_ci    'want_separate_host_toolset%': 1,
781cb0ef41Sopenharmony_ci
791cb0ef41Sopenharmony_ci    # Toolset the shell binary should be compiled for. Possible values are
801cb0ef41Sopenharmony_ci    # 'host' and 'target'.
811cb0ef41Sopenharmony_ci    # The setting is ignored if want_separate_host_toolset is 0.
821cb0ef41Sopenharmony_ci    'v8_toolset_for_shell%': 'target',
831cb0ef41Sopenharmony_ci
841cb0ef41Sopenharmony_ci    'host_os%': '<(OS)',
851cb0ef41Sopenharmony_ci    'werror%': '-Werror',
861cb0ef41Sopenharmony_ci    # For a shared library build, results in "libv8-<(soname_version).so".
871cb0ef41Sopenharmony_ci    'soname_version%': '',
881cb0ef41Sopenharmony_ci
891cb0ef41Sopenharmony_ci    # Override where to find binutils
901cb0ef41Sopenharmony_ci    'binutils_dir%': '',
911cb0ef41Sopenharmony_ci
921cb0ef41Sopenharmony_ci    'conditions': [
931cb0ef41Sopenharmony_ci      ['OS=="linux" and host_arch=="x64"', {
941cb0ef41Sopenharmony_ci        'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin',
951cb0ef41Sopenharmony_ci      }],
961cb0ef41Sopenharmony_ci      ['OS=="linux" and host_arch=="ia32"', {
971cb0ef41Sopenharmony_ci        'binutils_dir%': 'third_party/binutils/Linux_ia32/Release/bin',
981cb0ef41Sopenharmony_ci      }],
991cb0ef41Sopenharmony_ci    ],
1001cb0ef41Sopenharmony_ci
1011cb0ef41Sopenharmony_ci    # Indicates if gcmole tools are downloaded by a hook.
1021cb0ef41Sopenharmony_ci    'gcmole%': 0,
1031cb0ef41Sopenharmony_ci  },
1041cb0ef41Sopenharmony_ci
1051cb0ef41Sopenharmony_ci  # [GYP] this needs to be outside of the top level 'variables'
1061cb0ef41Sopenharmony_ci  'conditions': [
1071cb0ef41Sopenharmony_ci    ['host_arch=="ia32" or host_arch=="x64" or \
1081cb0ef41Sopenharmony_ci      host_arch=="ppc" or host_arch=="ppc64" or \
1091cb0ef41Sopenharmony_ci      host_arch=="s390x" or \
1101cb0ef41Sopenharmony_ci      clang==1', {
1111cb0ef41Sopenharmony_ci      'variables': {
1121cb0ef41Sopenharmony_ci        'host_cxx_is_biarch%': 1,
1131cb0ef41Sopenharmony_ci       },
1141cb0ef41Sopenharmony_ci     }, {
1151cb0ef41Sopenharmony_ci      'variables': {
1161cb0ef41Sopenharmony_ci        'host_cxx_is_biarch%': 0,
1171cb0ef41Sopenharmony_ci      },
1181cb0ef41Sopenharmony_ci    }],
1191cb0ef41Sopenharmony_ci    ['target_arch=="ia32" or target_arch=="x64" or \
1201cb0ef41Sopenharmony_ci      target_arch=="ppc" or target_arch=="ppc64" or \
1211cb0ef41Sopenharmony_ci      target_arch=="s390x" or clang==1', {
1221cb0ef41Sopenharmony_ci      'variables': {
1231cb0ef41Sopenharmony_ci        'target_cxx_is_biarch%': 1,
1241cb0ef41Sopenharmony_ci       },
1251cb0ef41Sopenharmony_ci     }, {
1261cb0ef41Sopenharmony_ci      'variables': {
1271cb0ef41Sopenharmony_ci        'target_cxx_is_biarch%': 0,
1281cb0ef41Sopenharmony_ci      },
1291cb0ef41Sopenharmony_ci    }],
1301cb0ef41Sopenharmony_ci  ],
1311cb0ef41Sopenharmony_ci  'target_defaults': {
1321cb0ef41Sopenharmony_ci    'include_dirs': [
1331cb0ef41Sopenharmony_ci      '<(V8_ROOT)',
1341cb0ef41Sopenharmony_ci      '<(V8_ROOT)/include',
1351cb0ef41Sopenharmony_ci    ],
1361cb0ef41Sopenharmony_ci    'conditions': [
1371cb0ef41Sopenharmony_ci      ['clang', {
1381cb0ef41Sopenharmony_ci        'cflags': [ '-Werror', '-Wno-unknown-pragmas' ],
1391cb0ef41Sopenharmony_ci      },{
1401cb0ef41Sopenharmony_ci        'cflags!': [ '-Wall', '-Wextra' ],
1411cb0ef41Sopenharmony_ci        'cflags': [ '-Wno-return-type' ],
1421cb0ef41Sopenharmony_ci      }],
1431cb0ef41Sopenharmony_ci      ['v8_target_arch=="arm"', {
1441cb0ef41Sopenharmony_ci        'defines': [
1451cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_ARM',
1461cb0ef41Sopenharmony_ci        ],
1471cb0ef41Sopenharmony_ci        'conditions': [
1481cb0ef41Sopenharmony_ci          [ 'arm_version==7 or arm_version=="default"', {
1491cb0ef41Sopenharmony_ci            'defines': [
1501cb0ef41Sopenharmony_ci              'CAN_USE_ARMV7_INSTRUCTIONS',
1511cb0ef41Sopenharmony_ci            ],
1521cb0ef41Sopenharmony_ci          }],
1531cb0ef41Sopenharmony_ci          [ 'arm_fpu=="vfpv3-d16" or arm_fpu=="default"', {
1541cb0ef41Sopenharmony_ci            'defines': [
1551cb0ef41Sopenharmony_ci              'CAN_USE_VFP3_INSTRUCTIONS',
1561cb0ef41Sopenharmony_ci            ],
1571cb0ef41Sopenharmony_ci          }],
1581cb0ef41Sopenharmony_ci          [ 'arm_fpu=="vfpv3"', {
1591cb0ef41Sopenharmony_ci            'defines': [
1601cb0ef41Sopenharmony_ci              'CAN_USE_VFP3_INSTRUCTIONS',
1611cb0ef41Sopenharmony_ci              'CAN_USE_VFP32DREGS',
1621cb0ef41Sopenharmony_ci            ],
1631cb0ef41Sopenharmony_ci          }],
1641cb0ef41Sopenharmony_ci          [ 'arm_fpu=="neon"', {
1651cb0ef41Sopenharmony_ci            'defines': [
1661cb0ef41Sopenharmony_ci              'CAN_USE_VFP3_INSTRUCTIONS',
1671cb0ef41Sopenharmony_ci              'CAN_USE_VFP32DREGS',
1681cb0ef41Sopenharmony_ci              'CAN_USE_NEON',
1691cb0ef41Sopenharmony_ci            ],
1701cb0ef41Sopenharmony_ci          }],
1711cb0ef41Sopenharmony_ci          [ 'arm_test_noprobe=="on"', {
1721cb0ef41Sopenharmony_ci            'defines': [
1731cb0ef41Sopenharmony_ci              'ARM_TEST_NO_FEATURE_PROBE',
1741cb0ef41Sopenharmony_ci            ],
1751cb0ef41Sopenharmony_ci          }],
1761cb0ef41Sopenharmony_ci        ],
1771cb0ef41Sopenharmony_ci        'target_conditions': [
1781cb0ef41Sopenharmony_ci          ['_toolset=="host"', {
1791cb0ef41Sopenharmony_ci            'conditions': [
1801cb0ef41Sopenharmony_ci              ['v8_target_arch==host_arch', {
1811cb0ef41Sopenharmony_ci                # Host built with an Arm CXX compiler.
1821cb0ef41Sopenharmony_ci                'conditions': [
1831cb0ef41Sopenharmony_ci                  [ 'arm_version==7', {
1841cb0ef41Sopenharmony_ci                    'cflags': ['-march=armv7-a',],
1851cb0ef41Sopenharmony_ci                  }],
1861cb0ef41Sopenharmony_ci                  [ 'arm_version==7 or arm_version=="default"', {
1871cb0ef41Sopenharmony_ci                    'conditions': [
1881cb0ef41Sopenharmony_ci                      [ 'arm_fpu!="default"', {
1891cb0ef41Sopenharmony_ci                        'cflags': ['-mfpu=<(arm_fpu)',],
1901cb0ef41Sopenharmony_ci                      }],
1911cb0ef41Sopenharmony_ci                    ],
1921cb0ef41Sopenharmony_ci                  }],
1931cb0ef41Sopenharmony_ci                  [ 'arm_float_abi!="default"', {
1941cb0ef41Sopenharmony_ci                    'cflags': ['-mfloat-abi=<(arm_float_abi)',],
1951cb0ef41Sopenharmony_ci                  }],
1961cb0ef41Sopenharmony_ci                  [ 'arm_thumb==1', {
1971cb0ef41Sopenharmony_ci                    'cflags': ['-mthumb',],
1981cb0ef41Sopenharmony_ci                  }],
1991cb0ef41Sopenharmony_ci                  [ 'arm_thumb==0', {
2001cb0ef41Sopenharmony_ci                    'cflags': ['-marm',],
2011cb0ef41Sopenharmony_ci                  }],
2021cb0ef41Sopenharmony_ci                ],
2031cb0ef41Sopenharmony_ci              }, {
2041cb0ef41Sopenharmony_ci                # 'v8_target_arch!=host_arch'
2051cb0ef41Sopenharmony_ci                # Host not built with an Arm CXX compiler (simulator build).
2061cb0ef41Sopenharmony_ci                'conditions': [
2071cb0ef41Sopenharmony_ci                  [ 'arm_float_abi=="hard"', {
2081cb0ef41Sopenharmony_ci                    'defines': [
2091cb0ef41Sopenharmony_ci                      'USE_EABI_HARDFLOAT=1',
2101cb0ef41Sopenharmony_ci                    ],
2111cb0ef41Sopenharmony_ci                  }],
2121cb0ef41Sopenharmony_ci                  [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
2131cb0ef41Sopenharmony_ci                    'defines': [
2141cb0ef41Sopenharmony_ci                      'USE_EABI_HARDFLOAT=0',
2151cb0ef41Sopenharmony_ci                    ],
2161cb0ef41Sopenharmony_ci                  }],
2171cb0ef41Sopenharmony_ci                ],
2181cb0ef41Sopenharmony_ci              }],
2191cb0ef41Sopenharmony_ci            ],
2201cb0ef41Sopenharmony_ci          }],  # _toolset=="host"
2211cb0ef41Sopenharmony_ci          ['_toolset=="target"', {
2221cb0ef41Sopenharmony_ci            'conditions': [
2231cb0ef41Sopenharmony_ci              ['v8_target_arch==target_arch', {
2241cb0ef41Sopenharmony_ci                # Target built with an Arm CXX compiler.
2251cb0ef41Sopenharmony_ci                'conditions': [
2261cb0ef41Sopenharmony_ci                  [ 'arm_version==7', {
2271cb0ef41Sopenharmony_ci                    'cflags': ['-march=armv7-a',],
2281cb0ef41Sopenharmony_ci                  }],
2291cb0ef41Sopenharmony_ci                  [ 'arm_version==7 or arm_version=="default"', {
2301cb0ef41Sopenharmony_ci                    'conditions': [
2311cb0ef41Sopenharmony_ci                      [ 'arm_fpu!="default"', {
2321cb0ef41Sopenharmony_ci                        'cflags': ['-mfpu=<(arm_fpu)',],
2331cb0ef41Sopenharmony_ci                      }],
2341cb0ef41Sopenharmony_ci                    ],
2351cb0ef41Sopenharmony_ci                  }],
2361cb0ef41Sopenharmony_ci                  [ 'arm_float_abi!="default"', {
2371cb0ef41Sopenharmony_ci                    'cflags': ['-mfloat-abi=<(arm_float_abi)',],
2381cb0ef41Sopenharmony_ci                  }],
2391cb0ef41Sopenharmony_ci                  [ 'arm_thumb==1', {
2401cb0ef41Sopenharmony_ci                    'cflags': ['-mthumb',],
2411cb0ef41Sopenharmony_ci                  }],
2421cb0ef41Sopenharmony_ci                  [ 'arm_thumb==0', {
2431cb0ef41Sopenharmony_ci                    'cflags': ['-marm',],
2441cb0ef41Sopenharmony_ci                  }],
2451cb0ef41Sopenharmony_ci                ],
2461cb0ef41Sopenharmony_ci              }, {
2471cb0ef41Sopenharmony_ci                # 'v8_target_arch!=target_arch'
2481cb0ef41Sopenharmony_ci                # Target not built with an Arm CXX compiler (simulator build).
2491cb0ef41Sopenharmony_ci                'conditions': [
2501cb0ef41Sopenharmony_ci                  [ 'arm_float_abi=="hard"', {
2511cb0ef41Sopenharmony_ci                    'defines': [
2521cb0ef41Sopenharmony_ci                      'USE_EABI_HARDFLOAT=1',
2531cb0ef41Sopenharmony_ci                    ],
2541cb0ef41Sopenharmony_ci                  }],
2551cb0ef41Sopenharmony_ci                  [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
2561cb0ef41Sopenharmony_ci                    'defines': [
2571cb0ef41Sopenharmony_ci                      'USE_EABI_HARDFLOAT=0',
2581cb0ef41Sopenharmony_ci                    ],
2591cb0ef41Sopenharmony_ci                  }],
2601cb0ef41Sopenharmony_ci                ],
2611cb0ef41Sopenharmony_ci              }],
2621cb0ef41Sopenharmony_ci            ],
2631cb0ef41Sopenharmony_ci          }],  # _toolset=="target"
2641cb0ef41Sopenharmony_ci        ],
2651cb0ef41Sopenharmony_ci      }],  # v8_target_arch=="arm"
2661cb0ef41Sopenharmony_ci      ['v8_target_arch=="arm64"', {
2671cb0ef41Sopenharmony_ci        'defines': [
2681cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_ARM64',
2691cb0ef41Sopenharmony_ci        ],
2701cb0ef41Sopenharmony_ci        'conditions': [
2711cb0ef41Sopenharmony_ci          ['v8_control_flow_integrity==1', {
2721cb0ef41Sopenharmony_ci            'cflags': [ '-mbranch-protection=pac-ret+b-key+bti' ],
2731cb0ef41Sopenharmony_ci          }],
2741cb0ef41Sopenharmony_ci        ],
2751cb0ef41Sopenharmony_ci       'target_conditions': [
2761cb0ef41Sopenharmony_ci          ['_toolset == "target"', {
2771cb0ef41Sopenharmony_ci            'cflags': [ '-fvisibility-inlines-hidden', '-fvisibility=hidden' ],
2781cb0ef41Sopenharmony_ci          }],
2791cb0ef41Sopenharmony_ci        ],
2801cb0ef41Sopenharmony_ci      }],
2811cb0ef41Sopenharmony_ci      ['v8_target_arch=="riscv64"', {
2821cb0ef41Sopenharmony_ci        'defines': [
2831cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_RISCV64',
2841cb0ef41Sopenharmony_ci          '__riscv_xlen=64',
2851cb0ef41Sopenharmony_ci          'CAN_USE_FPU_INSTRUCTIONS'
2861cb0ef41Sopenharmony_ci        ],
2871cb0ef41Sopenharmony_ci      }],
2881cb0ef41Sopenharmony_ci      ['v8_target_arch=="loong64"', {
2891cb0ef41Sopenharmony_ci        'defines': [
2901cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_LOONG64',
2911cb0ef41Sopenharmony_ci        ],
2921cb0ef41Sopenharmony_ci      }],
2931cb0ef41Sopenharmony_ci      ['v8_target_arch=="s390x"', {
2941cb0ef41Sopenharmony_ci        'defines': [
2951cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_S390',
2961cb0ef41Sopenharmony_ci        ],
2971cb0ef41Sopenharmony_ci        'cflags': [ '-ffp-contract=off' ],
2981cb0ef41Sopenharmony_ci        'conditions': [
2991cb0ef41Sopenharmony_ci          ['v8_target_arch=="s390x"', {
3001cb0ef41Sopenharmony_ci            'defines': [
3011cb0ef41Sopenharmony_ci              'V8_TARGET_ARCH_S390X',
3021cb0ef41Sopenharmony_ci            ],
3031cb0ef41Sopenharmony_ci          }],
3041cb0ef41Sopenharmony_ci          ['v8_host_byteorder=="little"', {
3051cb0ef41Sopenharmony_ci            'defines': [
3061cb0ef41Sopenharmony_ci              'V8_TARGET_ARCH_S390_LE_SIM',
3071cb0ef41Sopenharmony_ci            ],
3081cb0ef41Sopenharmony_ci          }, {
3091cb0ef41Sopenharmony_ci            'cflags': [ '-march=z196' ],
3101cb0ef41Sopenharmony_ci          }],
3111cb0ef41Sopenharmony_ci          ],
3121cb0ef41Sopenharmony_ci      }],  # s390x
3131cb0ef41Sopenharmony_ci      ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', {
3141cb0ef41Sopenharmony_ci        'conditions': [
3151cb0ef41Sopenharmony_ci          ['v8_target_arch=="ppc"', {
3161cb0ef41Sopenharmony_ci            'defines': [
3171cb0ef41Sopenharmony_ci              'V8_TARGET_ARCH_PPC',
3181cb0ef41Sopenharmony_ci            ],
3191cb0ef41Sopenharmony_ci          }],
3201cb0ef41Sopenharmony_ci          ['v8_target_arch=="ppc64"', {
3211cb0ef41Sopenharmony_ci            'defines': [
3221cb0ef41Sopenharmony_ci              'V8_TARGET_ARCH_PPC64',
3231cb0ef41Sopenharmony_ci            ],
3241cb0ef41Sopenharmony_ci            'cflags': [
3251cb0ef41Sopenharmony_ci              '-ffp-contract=off',
3261cb0ef41Sopenharmony_ci            ],
3271cb0ef41Sopenharmony_ci          }],
3281cb0ef41Sopenharmony_ci          ['v8_host_byteorder=="little"', {
3291cb0ef41Sopenharmony_ci            'defines': [
3301cb0ef41Sopenharmony_ci              'V8_TARGET_ARCH_PPC_LE',
3311cb0ef41Sopenharmony_ci            ],
3321cb0ef41Sopenharmony_ci          }],
3331cb0ef41Sopenharmony_ci          ['v8_host_byteorder=="big"', {
3341cb0ef41Sopenharmony_ci            'defines': [
3351cb0ef41Sopenharmony_ci              'V8_TARGET_ARCH_PPC_BE',
3361cb0ef41Sopenharmony_ci            ],
3371cb0ef41Sopenharmony_ci            'conditions': [
3381cb0ef41Sopenharmony_ci              ['OS=="aix" or OS=="os400"', {
3391cb0ef41Sopenharmony_ci                # Work around AIX ceil, trunc and round oddities.
3401cb0ef41Sopenharmony_ci                'cflags': [ '-mcpu=power5+ -mfprnd' ],
3411cb0ef41Sopenharmony_ci              }],
3421cb0ef41Sopenharmony_ci              ['OS=="aix" or OS=="os400"', {
3431cb0ef41Sopenharmony_ci                # Work around AIX assembler popcntb bug.
3441cb0ef41Sopenharmony_ci                'cflags': [ '-mno-popcntb' ],
3451cb0ef41Sopenharmony_ci              }],
3461cb0ef41Sopenharmony_ci            ],
3471cb0ef41Sopenharmony_ci          }],
3481cb0ef41Sopenharmony_ci        ],
3491cb0ef41Sopenharmony_ci      }],  # ppc
3501cb0ef41Sopenharmony_ci      ['v8_target_arch=="ia32"', {
3511cb0ef41Sopenharmony_ci        'defines': [
3521cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_IA32',
3531cb0ef41Sopenharmony_ci        ],
3541cb0ef41Sopenharmony_ci      }],  # v8_target_arch=="ia32"
3551cb0ef41Sopenharmony_ci      ['v8_target_arch=="mips" or v8_target_arch=="mipsel" \
3561cb0ef41Sopenharmony_ci        or v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
3571cb0ef41Sopenharmony_ci        'target_conditions': [
3581cb0ef41Sopenharmony_ci          ['_toolset=="target"', {
3591cb0ef41Sopenharmony_ci            'conditions': [
3601cb0ef41Sopenharmony_ci              ['v8_target_arch==target_arch', {
3611cb0ef41Sopenharmony_ci                # Target built with a Mips CXX compiler.
3621cb0ef41Sopenharmony_ci                'variables': {
3631cb0ef41Sopenharmony_ci                  'ldso_path%': '<!(/bin/echo -n $LDSO_PATH)',
3641cb0ef41Sopenharmony_ci                  'ld_r_path%': '<!(/bin/echo -n $LD_R_PATH)',
3651cb0ef41Sopenharmony_ci                },
3661cb0ef41Sopenharmony_ci                'conditions': [
3671cb0ef41Sopenharmony_ci                  ['ldso_path!=""', {
3681cb0ef41Sopenharmony_ci                    'ldflags': ['-Wl,--dynamic-linker=<(ldso_path)'],
3691cb0ef41Sopenharmony_ci                  }],
3701cb0ef41Sopenharmony_ci                  ['ld_r_path!=""', {
3711cb0ef41Sopenharmony_ci                    'ldflags': ['-Wl,--rpath=<(ld_r_path)'],
3721cb0ef41Sopenharmony_ci                  }],
3731cb0ef41Sopenharmony_ci                  [ 'clang==1', {
3741cb0ef41Sopenharmony_ci                    'cflags': ['-integrated-as'],
3751cb0ef41Sopenharmony_ci                  }],
3761cb0ef41Sopenharmony_ci                  ['OS!="mac"', {
3771cb0ef41Sopenharmony_ci                    'defines': ['_MIPS_TARGET_HW',],
3781cb0ef41Sopenharmony_ci                  }, {
3791cb0ef41Sopenharmony_ci                    'defines': ['_MIPS_TARGET_SIMULATOR',],
3801cb0ef41Sopenharmony_ci                  }],
3811cb0ef41Sopenharmony_ci                ],
3821cb0ef41Sopenharmony_ci              }, {
3831cb0ef41Sopenharmony_ci                'defines': ['_MIPS_TARGET_SIMULATOR',],
3841cb0ef41Sopenharmony_ci              }],
3851cb0ef41Sopenharmony_ci            ],
3861cb0ef41Sopenharmony_ci          }],  #'_toolset=="target"
3871cb0ef41Sopenharmony_ci          ['_toolset=="host"', {
3881cb0ef41Sopenharmony_ci            'conditions': [
3891cb0ef41Sopenharmony_ci              ['v8_target_arch==target_arch and OS!="mac"', {
3901cb0ef41Sopenharmony_ci                'defines': ['_MIPS_TARGET_HW',],
3911cb0ef41Sopenharmony_ci              }, {
3921cb0ef41Sopenharmony_ci                'defines': ['_MIPS_TARGET_SIMULATOR',],
3931cb0ef41Sopenharmony_ci              }],
3941cb0ef41Sopenharmony_ci            ],
3951cb0ef41Sopenharmony_ci          }],  #'_toolset=="host"
3961cb0ef41Sopenharmony_ci        ],
3971cb0ef41Sopenharmony_ci      }],
3981cb0ef41Sopenharmony_ci      ['v8_target_arch=="mips"', {
3991cb0ef41Sopenharmony_ci        'defines': [
4001cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_MIPS',
4011cb0ef41Sopenharmony_ci        ],
4021cb0ef41Sopenharmony_ci        'conditions': [
4031cb0ef41Sopenharmony_ci          [ 'v8_can_use_fpu_instructions=="true"', {
4041cb0ef41Sopenharmony_ci            'defines': [
4051cb0ef41Sopenharmony_ci              'CAN_USE_FPU_INSTRUCTIONS',
4061cb0ef41Sopenharmony_ci            ],
4071cb0ef41Sopenharmony_ci          }],
4081cb0ef41Sopenharmony_ci          [ 'v8_use_mips_abi_hardfloat=="true"', {
4091cb0ef41Sopenharmony_ci            'defines': [
4101cb0ef41Sopenharmony_ci              '__mips_hard_float=1',
4111cb0ef41Sopenharmony_ci              'CAN_USE_FPU_INSTRUCTIONS',
4121cb0ef41Sopenharmony_ci            ],
4131cb0ef41Sopenharmony_ci          }, {
4141cb0ef41Sopenharmony_ci            'defines': [
4151cb0ef41Sopenharmony_ci              '__mips_soft_float=1'
4161cb0ef41Sopenharmony_ci            ]
4171cb0ef41Sopenharmony_ci          }],
4181cb0ef41Sopenharmony_ci        ],
4191cb0ef41Sopenharmony_ci        'target_conditions': [
4201cb0ef41Sopenharmony_ci          ['_toolset=="target"', {
4211cb0ef41Sopenharmony_ci            'conditions': [
4221cb0ef41Sopenharmony_ci              ['v8_target_arch==target_arch', {
4231cb0ef41Sopenharmony_ci                # Target built with a Mips CXX compiler.
4241cb0ef41Sopenharmony_ci                'cflags': [
4251cb0ef41Sopenharmony_ci                  '-EB',
4261cb0ef41Sopenharmony_ci                  '-Wno-error=array-bounds',  # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
4271cb0ef41Sopenharmony_ci                ],
4281cb0ef41Sopenharmony_ci                'ldflags': ['-EB'],
4291cb0ef41Sopenharmony_ci                'conditions': [
4301cb0ef41Sopenharmony_ci                  [ 'v8_use_mips_abi_hardfloat=="true"', {
4311cb0ef41Sopenharmony_ci                    'cflags': ['-mhard-float'],
4321cb0ef41Sopenharmony_ci                    'ldflags': ['-mhard-float'],
4331cb0ef41Sopenharmony_ci                  }, {
4341cb0ef41Sopenharmony_ci                    'cflags': ['-msoft-float'],
4351cb0ef41Sopenharmony_ci                    'ldflags': ['-msoft-float'],
4361cb0ef41Sopenharmony_ci                  }],
4371cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6"', {
4381cb0ef41Sopenharmony_ci                    'defines': [
4391cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R6',
4401cb0ef41Sopenharmony_ci                      'FPU_MODE_FP64',
4411cb0ef41Sopenharmony_ci                    ],
4421cb0ef41Sopenharmony_ci                    'cflags!': ['-mfp32', '-mfpxx'],
4431cb0ef41Sopenharmony_ci                    'conditions': [
4441cb0ef41Sopenharmony_ci                      [ 'clang==0', {
4451cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips32r6'],
4461cb0ef41Sopenharmony_ci                      }],
4471cb0ef41Sopenharmony_ci                    ],
4481cb0ef41Sopenharmony_ci                    'cflags': ['-mips32r6'],
4491cb0ef41Sopenharmony_ci                    'ldflags': ['-mips32r6'],
4501cb0ef41Sopenharmony_ci                  }],
4511cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
4521cb0ef41Sopenharmony_ci                    'defines': [ '_MIPS_MSA' ],
4531cb0ef41Sopenharmony_ci                  }],
4541cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r2"', {
4551cb0ef41Sopenharmony_ci                    'conditions': [
4561cb0ef41Sopenharmony_ci                      [ 'mips_fpu_mode=="fp64"', {
4571cb0ef41Sopenharmony_ci                        'defines': [
4581cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
4591cb0ef41Sopenharmony_ci                          'FPU_MODE_FP64',
4601cb0ef41Sopenharmony_ci                        ],
4611cb0ef41Sopenharmony_ci                        'cflags': ['-mfp64'],
4621cb0ef41Sopenharmony_ci                      }],
4631cb0ef41Sopenharmony_ci                      ['mips_fpu_mode=="fpxx"', {
4641cb0ef41Sopenharmony_ci                        'defines': [
4651cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
4661cb0ef41Sopenharmony_ci                          'FPU_MODE_FPXX',
4671cb0ef41Sopenharmony_ci                        ],
4681cb0ef41Sopenharmony_ci                        'cflags': ['-mfpxx'],
4691cb0ef41Sopenharmony_ci                      }],
4701cb0ef41Sopenharmony_ci                      ['mips_fpu_mode=="fp32"', {
4711cb0ef41Sopenharmony_ci                        'defines': [
4721cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
4731cb0ef41Sopenharmony_ci                          'FPU_MODE_FP32',
4741cb0ef41Sopenharmony_ci                        ],
4751cb0ef41Sopenharmony_ci                        'cflags': ['-mfp32'],
4761cb0ef41Sopenharmony_ci                      }],
4771cb0ef41Sopenharmony_ci                      [ 'clang==0', {
4781cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips32r2'],
4791cb0ef41Sopenharmony_ci                      }],
4801cb0ef41Sopenharmony_ci                    ],
4811cb0ef41Sopenharmony_ci                    'cflags': ['-mips32r2'],
4821cb0ef41Sopenharmony_ci                    'ldflags': ['-mips32r2'],
4831cb0ef41Sopenharmony_ci                  }],
4841cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r1"', {
4851cb0ef41Sopenharmony_ci                    'defines': [
4861cb0ef41Sopenharmony_ci                      'FPU_MODE_FP32',
4871cb0ef41Sopenharmony_ci                    ],
4881cb0ef41Sopenharmony_ci                    'cflags!': ['-mfp64', '-mfpxx'],
4891cb0ef41Sopenharmony_ci                    'conditions': [
4901cb0ef41Sopenharmony_ci                      [ 'clang==0', {
4911cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips32'],
4921cb0ef41Sopenharmony_ci                      }],
4931cb0ef41Sopenharmony_ci                    ],
4941cb0ef41Sopenharmony_ci                    'cflags': ['-mips32'],
4951cb0ef41Sopenharmony_ci                    'ldflags': ['-mips32'],
4961cb0ef41Sopenharmony_ci                  }],
4971cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="rx"', {
4981cb0ef41Sopenharmony_ci                    'defines': [
4991cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32RX',
5001cb0ef41Sopenharmony_ci                      'FPU_MODE_FPXX',
5011cb0ef41Sopenharmony_ci                    ],
5021cb0ef41Sopenharmony_ci                    'cflags!': ['-mfp64', '-mfp32'],
5031cb0ef41Sopenharmony_ci                    'conditions': [
5041cb0ef41Sopenharmony_ci                      [ 'clang==0', {
5051cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips32'],
5061cb0ef41Sopenharmony_ci                      }],
5071cb0ef41Sopenharmony_ci                    ],
5081cb0ef41Sopenharmony_ci                    'cflags': ['-mips32', '-mfpxx'],
5091cb0ef41Sopenharmony_ci                    'ldflags': ['-mips32'],
5101cb0ef41Sopenharmony_ci                  }],
5111cb0ef41Sopenharmony_ci                ],
5121cb0ef41Sopenharmony_ci              }, {
5131cb0ef41Sopenharmony_ci                # 'v8_target_arch!=target_arch'
5141cb0ef41Sopenharmony_ci                # Target not built with an MIPS CXX compiler (simulator build).
5151cb0ef41Sopenharmony_ci                'conditions': [
5161cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6"', {
5171cb0ef41Sopenharmony_ci                    'defines': [
5181cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R6',
5191cb0ef41Sopenharmony_ci                      'FPU_MODE_FP64',
5201cb0ef41Sopenharmony_ci                    ],
5211cb0ef41Sopenharmony_ci                  }],
5221cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
5231cb0ef41Sopenharmony_ci                    'defines': [ '_MIPS_MSA' ],
5241cb0ef41Sopenharmony_ci                  }],
5251cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r2"', {
5261cb0ef41Sopenharmony_ci                    'conditions': [
5271cb0ef41Sopenharmony_ci                      [ 'mips_fpu_mode=="fp64"', {
5281cb0ef41Sopenharmony_ci                        'defines': [
5291cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
5301cb0ef41Sopenharmony_ci                          'FPU_MODE_FP64',
5311cb0ef41Sopenharmony_ci                        ],
5321cb0ef41Sopenharmony_ci                      }],
5331cb0ef41Sopenharmony_ci                      ['mips_fpu_mode=="fpxx"', {
5341cb0ef41Sopenharmony_ci                        'defines': [
5351cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
5361cb0ef41Sopenharmony_ci                          'FPU_MODE_FPXX',
5371cb0ef41Sopenharmony_ci                        ],
5381cb0ef41Sopenharmony_ci                      }],
5391cb0ef41Sopenharmony_ci                      ['mips_fpu_mode=="fp32"', {
5401cb0ef41Sopenharmony_ci                        'defines': [
5411cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
5421cb0ef41Sopenharmony_ci                          'FPU_MODE_FP32',
5431cb0ef41Sopenharmony_ci                        ],
5441cb0ef41Sopenharmony_ci                      }],
5451cb0ef41Sopenharmony_ci                    ],
5461cb0ef41Sopenharmony_ci                  }],
5471cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r1"', {
5481cb0ef41Sopenharmony_ci                    'defines': [
5491cb0ef41Sopenharmony_ci                      'FPU_MODE_FP32',
5501cb0ef41Sopenharmony_ci                    ],
5511cb0ef41Sopenharmony_ci                  }],
5521cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="rx"', {
5531cb0ef41Sopenharmony_ci                    'defines': [
5541cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32RX',
5551cb0ef41Sopenharmony_ci                      'FPU_MODE_FPXX',
5561cb0ef41Sopenharmony_ci                    ],
5571cb0ef41Sopenharmony_ci                  }],
5581cb0ef41Sopenharmony_ci                ],
5591cb0ef41Sopenharmony_ci              }],
5601cb0ef41Sopenharmony_ci            ],
5611cb0ef41Sopenharmony_ci          }],  #_toolset=="target"
5621cb0ef41Sopenharmony_ci          ['_toolset=="host"', {
5631cb0ef41Sopenharmony_ci            'conditions': [
5641cb0ef41Sopenharmony_ci              ['mips_arch_variant=="rx"', {
5651cb0ef41Sopenharmony_ci                'defines': [
5661cb0ef41Sopenharmony_ci                  '_MIPS_ARCH_MIPS32RX',
5671cb0ef41Sopenharmony_ci                  'FPU_MODE_FPXX',
5681cb0ef41Sopenharmony_ci                ],
5691cb0ef41Sopenharmony_ci              }],
5701cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r6"', {
5711cb0ef41Sopenharmony_ci                'defines': [
5721cb0ef41Sopenharmony_ci                  '_MIPS_ARCH_MIPS32R6',
5731cb0ef41Sopenharmony_ci                  'FPU_MODE_FP64',
5741cb0ef41Sopenharmony_ci                ],
5751cb0ef41Sopenharmony_ci              }],
5761cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r6" and mips_use_msa==1', {
5771cb0ef41Sopenharmony_ci                'defines': [ '_MIPS_MSA' ],
5781cb0ef41Sopenharmony_ci              }],
5791cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r2"', {
5801cb0ef41Sopenharmony_ci                'conditions': [
5811cb0ef41Sopenharmony_ci                  ['mips_fpu_mode=="fp64"', {
5821cb0ef41Sopenharmony_ci                    'defines': [
5831cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R2',
5841cb0ef41Sopenharmony_ci                      'FPU_MODE_FP64',
5851cb0ef41Sopenharmony_ci                    ],
5861cb0ef41Sopenharmony_ci                  }],
5871cb0ef41Sopenharmony_ci                  ['mips_fpu_mode=="fpxx"', {
5881cb0ef41Sopenharmony_ci                    'defines': [
5891cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R2',
5901cb0ef41Sopenharmony_ci                      'FPU_MODE_FPXX',
5911cb0ef41Sopenharmony_ci                    ],
5921cb0ef41Sopenharmony_ci                  }],
5931cb0ef41Sopenharmony_ci                  ['mips_fpu_mode=="fp32"', {
5941cb0ef41Sopenharmony_ci                    'defines': [
5951cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R2',
5961cb0ef41Sopenharmony_ci                      'FPU_MODE_FP32'
5971cb0ef41Sopenharmony_ci                    ],
5981cb0ef41Sopenharmony_ci                  }],
5991cb0ef41Sopenharmony_ci                ],
6001cb0ef41Sopenharmony_ci              }],
6011cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r1"', {
6021cb0ef41Sopenharmony_ci                'defines': ['FPU_MODE_FP32',],
6031cb0ef41Sopenharmony_ci              }],
6041cb0ef41Sopenharmony_ci            ]
6051cb0ef41Sopenharmony_ci          }],  #_toolset=="host"
6061cb0ef41Sopenharmony_ci        ],
6071cb0ef41Sopenharmony_ci      }],  # v8_target_arch=="mips"
6081cb0ef41Sopenharmony_ci      ['v8_target_arch=="mipsel"', {
6091cb0ef41Sopenharmony_ci        'defines': [
6101cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_MIPS',
6111cb0ef41Sopenharmony_ci        ],
6121cb0ef41Sopenharmony_ci        'conditions': [
6131cb0ef41Sopenharmony_ci          [ 'v8_can_use_fpu_instructions=="true"', {
6141cb0ef41Sopenharmony_ci            'defines': [
6151cb0ef41Sopenharmony_ci              'CAN_USE_FPU_INSTRUCTIONS',
6161cb0ef41Sopenharmony_ci            ],
6171cb0ef41Sopenharmony_ci          }],
6181cb0ef41Sopenharmony_ci          [ 'v8_use_mips_abi_hardfloat=="true"', {
6191cb0ef41Sopenharmony_ci            'defines': [
6201cb0ef41Sopenharmony_ci              '__mips_hard_float=1',
6211cb0ef41Sopenharmony_ci              'CAN_USE_FPU_INSTRUCTIONS',
6221cb0ef41Sopenharmony_ci            ],
6231cb0ef41Sopenharmony_ci          }, {
6241cb0ef41Sopenharmony_ci            'defines': [
6251cb0ef41Sopenharmony_ci              '__mips_soft_float=1'
6261cb0ef41Sopenharmony_ci            ],
6271cb0ef41Sopenharmony_ci          }],
6281cb0ef41Sopenharmony_ci        ],
6291cb0ef41Sopenharmony_ci        'target_conditions': [
6301cb0ef41Sopenharmony_ci          ['_toolset=="target"', {
6311cb0ef41Sopenharmony_ci            'conditions': [
6321cb0ef41Sopenharmony_ci              ['v8_target_arch==target_arch', {
6331cb0ef41Sopenharmony_ci                # Target built with a Mips CXX compiler.
6341cb0ef41Sopenharmony_ci                'cflags': [
6351cb0ef41Sopenharmony_ci                  '-EL',
6361cb0ef41Sopenharmony_ci                  '-Wno-error=array-bounds',  # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
6371cb0ef41Sopenharmony_ci                ],
6381cb0ef41Sopenharmony_ci                'ldflags': ['-EL'],
6391cb0ef41Sopenharmony_ci                'conditions': [
6401cb0ef41Sopenharmony_ci                  [ 'v8_use_mips_abi_hardfloat=="true"', {
6411cb0ef41Sopenharmony_ci                    'cflags': ['-mhard-float'],
6421cb0ef41Sopenharmony_ci                    'ldflags': ['-mhard-float'],
6431cb0ef41Sopenharmony_ci                  }, {
6441cb0ef41Sopenharmony_ci                    'cflags': ['-msoft-float'],
6451cb0ef41Sopenharmony_ci                    'ldflags': ['-msoft-float'],
6461cb0ef41Sopenharmony_ci                  }],
6471cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6"', {
6481cb0ef41Sopenharmony_ci                    'defines': [
6491cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R6',
6501cb0ef41Sopenharmony_ci                      'FPU_MODE_FP64',
6511cb0ef41Sopenharmony_ci                    ],
6521cb0ef41Sopenharmony_ci                    'cflags!': ['-mfp32', '-mfpxx'],
6531cb0ef41Sopenharmony_ci                    'conditions': [
6541cb0ef41Sopenharmony_ci                      [ 'clang==0', {
6551cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips32r6'],
6561cb0ef41Sopenharmony_ci                      }],
6571cb0ef41Sopenharmony_ci                    ],
6581cb0ef41Sopenharmony_ci                    'cflags': ['-mips32r6'],
6591cb0ef41Sopenharmony_ci                    'ldflags': ['-mips32r6'],
6601cb0ef41Sopenharmony_ci                  }],
6611cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
6621cb0ef41Sopenharmony_ci                    'defines': [ '_MIPS_MSA' ],
6631cb0ef41Sopenharmony_ci                  }],
6641cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r2"', {
6651cb0ef41Sopenharmony_ci                    'conditions': [
6661cb0ef41Sopenharmony_ci                      [ 'mips_fpu_mode=="fp64"', {
6671cb0ef41Sopenharmony_ci                        'defines': [
6681cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
6691cb0ef41Sopenharmony_ci                          'FPU_MODE_FP64',
6701cb0ef41Sopenharmony_ci                        ],
6711cb0ef41Sopenharmony_ci                        'cflags': ['-mfp64'],
6721cb0ef41Sopenharmony_ci                      }],
6731cb0ef41Sopenharmony_ci                      ['mips_fpu_mode=="fpxx"', {
6741cb0ef41Sopenharmony_ci                        'defines': [
6751cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
6761cb0ef41Sopenharmony_ci                          'FPU_MODE_FPXX',
6771cb0ef41Sopenharmony_ci                        ],
6781cb0ef41Sopenharmony_ci                        'cflags': ['-mfpxx'],
6791cb0ef41Sopenharmony_ci                      }],
6801cb0ef41Sopenharmony_ci                      ['mips_fpu_mode=="fp32"', {
6811cb0ef41Sopenharmony_ci                        'defines': [
6821cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
6831cb0ef41Sopenharmony_ci                          'FPU_MODE_FP32',
6841cb0ef41Sopenharmony_ci                        ],
6851cb0ef41Sopenharmony_ci                        'cflags': ['-mfp32'],
6861cb0ef41Sopenharmony_ci                      }],
6871cb0ef41Sopenharmony_ci                      [ 'clang==0', {
6881cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips32r2'],
6891cb0ef41Sopenharmony_ci                      }],
6901cb0ef41Sopenharmony_ci                    ],
6911cb0ef41Sopenharmony_ci                    'cflags': ['-mips32r2'],
6921cb0ef41Sopenharmony_ci                    'ldflags': ['-mips32r2'],
6931cb0ef41Sopenharmony_ci                  }],
6941cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r1"', {
6951cb0ef41Sopenharmony_ci                    'defines': [
6961cb0ef41Sopenharmony_ci                      'FPU_MODE_FP32',
6971cb0ef41Sopenharmony_ci                    ],
6981cb0ef41Sopenharmony_ci                    'cflags!': ['-mfp64', '-mfpxx'],
6991cb0ef41Sopenharmony_ci                    'conditions': [
7001cb0ef41Sopenharmony_ci                      [ 'clang==0', {
7011cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips32'],
7021cb0ef41Sopenharmony_ci                      }],
7031cb0ef41Sopenharmony_ci                    ],
7041cb0ef41Sopenharmony_ci                    'cflags': ['-mips32'],
7051cb0ef41Sopenharmony_ci                    'ldflags': ['-mips32'],
7061cb0ef41Sopenharmony_ci                  }],
7071cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="rx"', {
7081cb0ef41Sopenharmony_ci                    'defines': [
7091cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32RX',
7101cb0ef41Sopenharmony_ci                      'FPU_MODE_FPXX',
7111cb0ef41Sopenharmony_ci                    ],
7121cb0ef41Sopenharmony_ci                    'cflags!': ['-mfp64', '-mfp32'],
7131cb0ef41Sopenharmony_ci                    'conditions': [
7141cb0ef41Sopenharmony_ci                      [ 'clang==0', {
7151cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips32'],
7161cb0ef41Sopenharmony_ci                      }],
7171cb0ef41Sopenharmony_ci                    ],
7181cb0ef41Sopenharmony_ci                    'cflags': ['-mips32', '-mfpxx'],
7191cb0ef41Sopenharmony_ci                    'ldflags': ['-mips32'],
7201cb0ef41Sopenharmony_ci                  }],
7211cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="loongson"', {
7221cb0ef41Sopenharmony_ci                    'defines': [
7231cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_LOONGSON',
7241cb0ef41Sopenharmony_ci                      'FPU_MODE_FP32',
7251cb0ef41Sopenharmony_ci                    ],
7261cb0ef41Sopenharmony_ci                    'cflags!': ['-mfp64', '-mfpxx'],
7271cb0ef41Sopenharmony_ci                    'conditions': [
7281cb0ef41Sopenharmony_ci                      [ 'clang==0', {
7291cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips3'],
7301cb0ef41Sopenharmony_ci                      }],
7311cb0ef41Sopenharmony_ci                    ],
7321cb0ef41Sopenharmony_ci                    'cflags': ['-mips3', '-mfp32'],
7331cb0ef41Sopenharmony_ci                  }],
7341cb0ef41Sopenharmony_ci                ],
7351cb0ef41Sopenharmony_ci              }, {
7361cb0ef41Sopenharmony_ci                # 'v8_target_arch!=target_arch'
7371cb0ef41Sopenharmony_ci                # Target not built with an MIPS CXX compiler (simulator build).
7381cb0ef41Sopenharmony_ci                'conditions': [
7391cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6"', {
7401cb0ef41Sopenharmony_ci                    'defines': [
7411cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R6',
7421cb0ef41Sopenharmony_ci                      'FPU_MODE_FP64',
7431cb0ef41Sopenharmony_ci                    ],
7441cb0ef41Sopenharmony_ci                  }],
7451cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
7461cb0ef41Sopenharmony_ci                    'defines': [ '_MIPS_MSA' ],
7471cb0ef41Sopenharmony_ci                  }],
7481cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r2"', {
7491cb0ef41Sopenharmony_ci                    'conditions': [
7501cb0ef41Sopenharmony_ci                      [ 'mips_fpu_mode=="fp64"', {
7511cb0ef41Sopenharmony_ci                        'defines': [
7521cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
7531cb0ef41Sopenharmony_ci                          'FPU_MODE_FP64',
7541cb0ef41Sopenharmony_ci                        ],
7551cb0ef41Sopenharmony_ci                      }],
7561cb0ef41Sopenharmony_ci                      ['mips_fpu_mode=="fpxx"', {
7571cb0ef41Sopenharmony_ci                        'defines': [
7581cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
7591cb0ef41Sopenharmony_ci                          'FPU_MODE_FPXX',
7601cb0ef41Sopenharmony_ci                        ],
7611cb0ef41Sopenharmony_ci                      }],
7621cb0ef41Sopenharmony_ci                      ['mips_fpu_mode=="fp32"', {
7631cb0ef41Sopenharmony_ci                        'defines': [
7641cb0ef41Sopenharmony_ci                          '_MIPS_ARCH_MIPS32R2',
7651cb0ef41Sopenharmony_ci                          'FPU_MODE_FP32',
7661cb0ef41Sopenharmony_ci                        ],
7671cb0ef41Sopenharmony_ci                      }],
7681cb0ef41Sopenharmony_ci                    ],
7691cb0ef41Sopenharmony_ci                  }],
7701cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r1"', {
7711cb0ef41Sopenharmony_ci                    'defines': [
7721cb0ef41Sopenharmony_ci                      'FPU_MODE_FP32',
7731cb0ef41Sopenharmony_ci                    ],
7741cb0ef41Sopenharmony_ci                  }],
7751cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="rx"', {
7761cb0ef41Sopenharmony_ci                    'defines': [
7771cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32RX',
7781cb0ef41Sopenharmony_ci                      'FPU_MODE_FPXX',
7791cb0ef41Sopenharmony_ci                    ],
7801cb0ef41Sopenharmony_ci                  }],
7811cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="loongson"', {
7821cb0ef41Sopenharmony_ci                    'defines': [
7831cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_LOONGSON',
7841cb0ef41Sopenharmony_ci                      'FPU_MODE_FP32',
7851cb0ef41Sopenharmony_ci                    ],
7861cb0ef41Sopenharmony_ci                  }],
7871cb0ef41Sopenharmony_ci                ],
7881cb0ef41Sopenharmony_ci              }],
7891cb0ef41Sopenharmony_ci            ],
7901cb0ef41Sopenharmony_ci          }], #_toolset=="target
7911cb0ef41Sopenharmony_ci          ['_toolset=="host"', {
7921cb0ef41Sopenharmony_ci            'conditions': [
7931cb0ef41Sopenharmony_ci              ['mips_arch_variant=="rx"', {
7941cb0ef41Sopenharmony_ci                'defines': [
7951cb0ef41Sopenharmony_ci                  '_MIPS_ARCH_MIPS32RX',
7961cb0ef41Sopenharmony_ci                  'FPU_MODE_FPXX',
7971cb0ef41Sopenharmony_ci                ],
7981cb0ef41Sopenharmony_ci              }],
7991cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r6"', {
8001cb0ef41Sopenharmony_ci                'defines': [
8011cb0ef41Sopenharmony_ci                  '_MIPS_ARCH_MIPS32R6',
8021cb0ef41Sopenharmony_ci                  'FPU_MODE_FP64',
8031cb0ef41Sopenharmony_ci                ],
8041cb0ef41Sopenharmony_ci              }],
8051cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r6" and mips_use_msa==1', {
8061cb0ef41Sopenharmony_ci                'defines': [ '_MIPS_MSA' ],
8071cb0ef41Sopenharmony_ci              }],
8081cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r2"', {
8091cb0ef41Sopenharmony_ci                'conditions': [
8101cb0ef41Sopenharmony_ci                  ['mips_fpu_mode=="fp64"', {
8111cb0ef41Sopenharmony_ci                    'defines': [
8121cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R2',
8131cb0ef41Sopenharmony_ci                      'FPU_MODE_FP64',
8141cb0ef41Sopenharmony_ci                    ],
8151cb0ef41Sopenharmony_ci                  }],
8161cb0ef41Sopenharmony_ci                  ['mips_fpu_mode=="fpxx"', {
8171cb0ef41Sopenharmony_ci                    'defines': [
8181cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R2',
8191cb0ef41Sopenharmony_ci                      'FPU_MODE_FPXX',
8201cb0ef41Sopenharmony_ci                    ],
8211cb0ef41Sopenharmony_ci                  }],
8221cb0ef41Sopenharmony_ci                  ['mips_fpu_mode=="fp32"', {
8231cb0ef41Sopenharmony_ci                    'defines': [
8241cb0ef41Sopenharmony_ci                      '_MIPS_ARCH_MIPS32R2',
8251cb0ef41Sopenharmony_ci                      'FPU_MODE_FP32'
8261cb0ef41Sopenharmony_ci                    ],
8271cb0ef41Sopenharmony_ci                  }],
8281cb0ef41Sopenharmony_ci                ],
8291cb0ef41Sopenharmony_ci              }],
8301cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r1"', {
8311cb0ef41Sopenharmony_ci                'defines': ['FPU_MODE_FP32',],
8321cb0ef41Sopenharmony_ci              }],
8331cb0ef41Sopenharmony_ci              ['mips_arch_variant=="loongson"', {
8341cb0ef41Sopenharmony_ci                'defines': [
8351cb0ef41Sopenharmony_ci                  '_MIPS_ARCH_LOONGSON',
8361cb0ef41Sopenharmony_ci                  'FPU_MODE_FP32',
8371cb0ef41Sopenharmony_ci                ],
8381cb0ef41Sopenharmony_ci              }],
8391cb0ef41Sopenharmony_ci            ]
8401cb0ef41Sopenharmony_ci          }],
8411cb0ef41Sopenharmony_ci        ],
8421cb0ef41Sopenharmony_ci      }],  # v8_target_arch=="mipsel"
8431cb0ef41Sopenharmony_ci      ['v8_target_arch=="mips64el" or v8_target_arch=="mips64"', {
8441cb0ef41Sopenharmony_ci        'defines': [
8451cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_MIPS64',
8461cb0ef41Sopenharmony_ci        ],
8471cb0ef41Sopenharmony_ci        'conditions': [
8481cb0ef41Sopenharmony_ci          [ 'v8_can_use_fpu_instructions=="true"', {
8491cb0ef41Sopenharmony_ci            'defines': [
8501cb0ef41Sopenharmony_ci              'CAN_USE_FPU_INSTRUCTIONS',
8511cb0ef41Sopenharmony_ci            ],
8521cb0ef41Sopenharmony_ci          }],
8531cb0ef41Sopenharmony_ci          [ 'v8_host_byteorder=="little"', {
8541cb0ef41Sopenharmony_ci            'defines': [
8551cb0ef41Sopenharmony_ci              'V8_TARGET_ARCH_MIPS64_LE',
8561cb0ef41Sopenharmony_ci            ],
8571cb0ef41Sopenharmony_ci          }],
8581cb0ef41Sopenharmony_ci          [ 'v8_host_byteorder=="big"', {
8591cb0ef41Sopenharmony_ci            'defines': [
8601cb0ef41Sopenharmony_ci              'V8_TARGET_ARCH_MIPS64_BE',
8611cb0ef41Sopenharmony_ci            ],
8621cb0ef41Sopenharmony_ci          }],
8631cb0ef41Sopenharmony_ci          [ 'v8_use_mips_abi_hardfloat=="true"', {
8641cb0ef41Sopenharmony_ci            'defines': [
8651cb0ef41Sopenharmony_ci              '__mips_hard_float=1',
8661cb0ef41Sopenharmony_ci              'CAN_USE_FPU_INSTRUCTIONS',
8671cb0ef41Sopenharmony_ci            ],
8681cb0ef41Sopenharmony_ci          }, {
8691cb0ef41Sopenharmony_ci            'defines': [
8701cb0ef41Sopenharmony_ci              '__mips_soft_float=1'
8711cb0ef41Sopenharmony_ci            ],
8721cb0ef41Sopenharmony_ci          }],
8731cb0ef41Sopenharmony_ci         ],
8741cb0ef41Sopenharmony_ci        'target_conditions': [
8751cb0ef41Sopenharmony_ci          ['_toolset=="target"', {
8761cb0ef41Sopenharmony_ci            'conditions': [
8771cb0ef41Sopenharmony_ci              ['v8_target_arch==target_arch', {
8781cb0ef41Sopenharmony_ci                'cflags': [
8791cb0ef41Sopenharmony_ci                  '-Wno-error=array-bounds',  # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
8801cb0ef41Sopenharmony_ci                ],
8811cb0ef41Sopenharmony_ci                'conditions': [
8821cb0ef41Sopenharmony_ci                  ['v8_target_arch=="mips64el"', {
8831cb0ef41Sopenharmony_ci                    'cflags': ['-EL'],
8841cb0ef41Sopenharmony_ci                    'ldflags': ['-EL'],
8851cb0ef41Sopenharmony_ci                  }],
8861cb0ef41Sopenharmony_ci                  ['v8_target_arch=="mips64"', {
8871cb0ef41Sopenharmony_ci                    'cflags': ['-EB'],
8881cb0ef41Sopenharmony_ci                    'ldflags': ['-EB'],
8891cb0ef41Sopenharmony_ci                  }],
8901cb0ef41Sopenharmony_ci                  [ 'v8_use_mips_abi_hardfloat=="true"', {
8911cb0ef41Sopenharmony_ci                    'cflags': ['-mhard-float'],
8921cb0ef41Sopenharmony_ci                    'ldflags': ['-mhard-float'],
8931cb0ef41Sopenharmony_ci                  }, {
8941cb0ef41Sopenharmony_ci                    'cflags': ['-msoft-float'],
8951cb0ef41Sopenharmony_ci                    'ldflags': ['-msoft-float'],
8961cb0ef41Sopenharmony_ci                  }],
8971cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6"', {
8981cb0ef41Sopenharmony_ci                    'defines': ['_MIPS_ARCH_MIPS64R6',],
8991cb0ef41Sopenharmony_ci                    'conditions': [
9001cb0ef41Sopenharmony_ci                      [ 'clang==0', {
9011cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips64r6'],
9021cb0ef41Sopenharmony_ci                      }],
9031cb0ef41Sopenharmony_ci                    ],
9041cb0ef41Sopenharmony_ci                    'cflags': ['-mips64r6', '-mabi=64'],
9051cb0ef41Sopenharmony_ci                    'ldflags': ['-mips64r6', '-mabi=64'],
9061cb0ef41Sopenharmony_ci                  }],
9071cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
9081cb0ef41Sopenharmony_ci                    'defines': [ '_MIPS_MSA' ],
9091cb0ef41Sopenharmony_ci                  }],
9101cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r2"', {
9111cb0ef41Sopenharmony_ci                    'defines': ['_MIPS_ARCH_MIPS64R2',],
9121cb0ef41Sopenharmony_ci                    'conditions': [
9131cb0ef41Sopenharmony_ci                      [ 'clang==0', {
9141cb0ef41Sopenharmony_ci                        'cflags': ['-Wa,-mips64r2'],
9151cb0ef41Sopenharmony_ci                      }],
9161cb0ef41Sopenharmony_ci                    ],
9171cb0ef41Sopenharmony_ci                    'cflags': ['-mips64r2', '-mabi=64'],
9181cb0ef41Sopenharmony_ci                    'ldflags': ['-mips64r2', '-mabi=64'],
9191cb0ef41Sopenharmony_ci                  }],
9201cb0ef41Sopenharmony_ci                ],
9211cb0ef41Sopenharmony_ci              }, {
9221cb0ef41Sopenharmony_ci                # 'v8_target_arch!=target_arch'
9231cb0ef41Sopenharmony_ci                # Target not built with an MIPS CXX compiler (simulator build).
9241cb0ef41Sopenharmony_ci                'conditions': [
9251cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6"', {
9261cb0ef41Sopenharmony_ci                    'defines': ['_MIPS_ARCH_MIPS64R6',],
9271cb0ef41Sopenharmony_ci                  }],
9281cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r6" and mips_use_msa==1', {
9291cb0ef41Sopenharmony_ci                    'defines': [ '_MIPS_MSA' ],
9301cb0ef41Sopenharmony_ci                  }],
9311cb0ef41Sopenharmony_ci                  ['mips_arch_variant=="r2"', {
9321cb0ef41Sopenharmony_ci                    'defines': ['_MIPS_ARCH_MIPS64R2',],
9331cb0ef41Sopenharmony_ci                  }],
9341cb0ef41Sopenharmony_ci                ],
9351cb0ef41Sopenharmony_ci              }],
9361cb0ef41Sopenharmony_ci            ],
9371cb0ef41Sopenharmony_ci          }],  #'_toolset=="target"
9381cb0ef41Sopenharmony_ci          ['_toolset=="host"', {
9391cb0ef41Sopenharmony_ci            'conditions': [
9401cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r6"', {
9411cb0ef41Sopenharmony_ci                'defines': ['_MIPS_ARCH_MIPS64R6',],
9421cb0ef41Sopenharmony_ci              }],
9431cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r6" and mips_use_msa==1', {
9441cb0ef41Sopenharmony_ci                'defines': [ '_MIPS_MSA' ],
9451cb0ef41Sopenharmony_ci              }],
9461cb0ef41Sopenharmony_ci              ['mips_arch_variant=="r2"', {
9471cb0ef41Sopenharmony_ci                'defines': ['_MIPS_ARCH_MIPS64R2',],
9481cb0ef41Sopenharmony_ci              }],
9491cb0ef41Sopenharmony_ci            ],
9501cb0ef41Sopenharmony_ci          }],  #'_toolset=="host"
9511cb0ef41Sopenharmony_ci        ],
9521cb0ef41Sopenharmony_ci      }],  # v8_target_arch=="mips64el"
9531cb0ef41Sopenharmony_ci      ['v8_target_arch=="x64"', {
9541cb0ef41Sopenharmony_ci        'defines': [
9551cb0ef41Sopenharmony_ci          'V8_TARGET_ARCH_X64',
9561cb0ef41Sopenharmony_ci        ],
9571cb0ef41Sopenharmony_ci        'xcode_settings': {
9581cb0ef41Sopenharmony_ci          'ARCHS': [ 'x86_64' ],
9591cb0ef41Sopenharmony_ci        },
9601cb0ef41Sopenharmony_ci        'msvs_settings': {
9611cb0ef41Sopenharmony_ci          'VCLinkerTool': {
9621cb0ef41Sopenharmony_ci            'StackReserveSize': '2097152',
9631cb0ef41Sopenharmony_ci          },
9641cb0ef41Sopenharmony_ci        },
9651cb0ef41Sopenharmony_ci        'msvs_configuration_platform': 'x64',
9661cb0ef41Sopenharmony_ci      }],  # v8_target_arch=="x64"
9671cb0ef41Sopenharmony_ci      ['OS=="win"', {
9681cb0ef41Sopenharmony_ci        'defines': [
9691cb0ef41Sopenharmony_ci          'WIN32',
9701cb0ef41Sopenharmony_ci          'NOMINMAX',  # Refs: https://chromium-review.googlesource.com/c/v8/v8/+/1456620
9711cb0ef41Sopenharmony_ci          '_WIN32_WINNT=0x0602',  # Windows 8
9721cb0ef41Sopenharmony_ci        ],
9731cb0ef41Sopenharmony_ci        # 4351: VS 2005 and later are warning us that they've fixed a bug
9741cb0ef41Sopenharmony_ci        #       present in VS 2003 and earlier.
9751cb0ef41Sopenharmony_ci        'msvs_disabled_warnings': [4351],
9761cb0ef41Sopenharmony_ci        'msvs_configuration_attributes': {
9771cb0ef41Sopenharmony_ci          'CharacterSet': '1',
9781cb0ef41Sopenharmony_ci        },
9791cb0ef41Sopenharmony_ci      }],
9801cb0ef41Sopenharmony_ci      ['OS=="win" and v8_target_arch=="ia32"', {
9811cb0ef41Sopenharmony_ci        'msvs_settings': {
9821cb0ef41Sopenharmony_ci          'VCCLCompilerTool': {
9831cb0ef41Sopenharmony_ci            # Ensure no surprising artifacts from 80bit double math with x86.
9841cb0ef41Sopenharmony_ci            'AdditionalOptions': ['/arch:SSE2'],
9851cb0ef41Sopenharmony_ci          },
9861cb0ef41Sopenharmony_ci        },
9871cb0ef41Sopenharmony_ci      }],
9881cb0ef41Sopenharmony_ci      ['OS=="win" and v8_enable_prof==1', {
9891cb0ef41Sopenharmony_ci        'msvs_settings': {
9901cb0ef41Sopenharmony_ci          'VCLinkerTool': {
9911cb0ef41Sopenharmony_ci            'GenerateMapFile': 'true',
9921cb0ef41Sopenharmony_ci          },
9931cb0ef41Sopenharmony_ci        },
9941cb0ef41Sopenharmony_ci      }],
9951cb0ef41Sopenharmony_ci      ['OS=="android"', {
9961cb0ef41Sopenharmony_ci        'defines': [
9971cb0ef41Sopenharmony_ci          'V8_HAVE_TARGET_OS',
9981cb0ef41Sopenharmony_ci          'V8_TARGET_OS_ANDROID',
9991cb0ef41Sopenharmony_ci        ]
10001cb0ef41Sopenharmony_ci      }],
10011cb0ef41Sopenharmony_ci      ['OS=="ios"', {
10021cb0ef41Sopenharmony_ci        'defines': [
10031cb0ef41Sopenharmony_ci          'V8_HAVE_TARGET_OS',
10041cb0ef41Sopenharmony_ci          'V8_TARGET_OS_IOS',
10051cb0ef41Sopenharmony_ci        ]
10061cb0ef41Sopenharmony_ci      }],
10071cb0ef41Sopenharmony_ci      ['OS=="linux"', {
10081cb0ef41Sopenharmony_ci        'defines': [
10091cb0ef41Sopenharmony_ci          'V8_HAVE_TARGET_OS',
10101cb0ef41Sopenharmony_ci          'V8_TARGET_OS_LINUX',
10111cb0ef41Sopenharmony_ci        ]
10121cb0ef41Sopenharmony_ci      }],
10131cb0ef41Sopenharmony_ci      ['OS=="mac"', {
10141cb0ef41Sopenharmony_ci        'defines': [
10151cb0ef41Sopenharmony_ci          'V8_HAVE_TARGET_OS',
10161cb0ef41Sopenharmony_ci          'V8_TARGET_OS_MACOS',
10171cb0ef41Sopenharmony_ci        ]
10181cb0ef41Sopenharmony_ci      }],
10191cb0ef41Sopenharmony_ci      ['OS=="win"', {
10201cb0ef41Sopenharmony_ci        'defines': [
10211cb0ef41Sopenharmony_ci          'V8_HAVE_TARGET_OS',
10221cb0ef41Sopenharmony_ci          'V8_TARGET_OS_WIN',
10231cb0ef41Sopenharmony_ci        ]
10241cb0ef41Sopenharmony_ci      }],
10251cb0ef41Sopenharmony_ci      ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
10261cb0ef41Sopenharmony_ci         or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \
10271cb0ef41Sopenharmony_ci        v8_target_arch=="ia32"', {
10281cb0ef41Sopenharmony_ci        'cflags': [
10291cb0ef41Sopenharmony_ci          '-msse2',
10301cb0ef41Sopenharmony_ci          '-mfpmath=sse',
10311cb0ef41Sopenharmony_ci          '-mmmx',  # Allows mmintrin.h for MMX intrinsics.
10321cb0ef41Sopenharmony_ci        ],
10331cb0ef41Sopenharmony_ci      }],
10341cb0ef41Sopenharmony_ci      ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
10351cb0ef41Sopenharmony_ci         or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \
10361cb0ef41Sopenharmony_ci        (v8_target_arch=="arm" or v8_target_arch=="ia32" or \
10371cb0ef41Sopenharmony_ci         v8_target_arch=="mips" or v8_target_arch=="mipsel" or \
10381cb0ef41Sopenharmony_ci         v8_target_arch=="ppc")', {
10391cb0ef41Sopenharmony_ci        'target_conditions': [
10401cb0ef41Sopenharmony_ci          ['_toolset=="host"', {
10411cb0ef41Sopenharmony_ci            'conditions': [
10421cb0ef41Sopenharmony_ci              ['host_cxx_is_biarch==1', {
10431cb0ef41Sopenharmony_ci                'conditions': [
10441cb0ef41Sopenharmony_ci                  ['host_arch=="s390x"', {
10451cb0ef41Sopenharmony_ci                    'cflags': [ '-m31' ],
10461cb0ef41Sopenharmony_ci                    'ldflags': [ '-m31' ]
10471cb0ef41Sopenharmony_ci                  },{
10481cb0ef41Sopenharmony_ci                   'cflags': [ '-m32' ],
10491cb0ef41Sopenharmony_ci                   'ldflags': [ '-m32' ]
10501cb0ef41Sopenharmony_ci                  }],
10511cb0ef41Sopenharmony_ci                ],
10521cb0ef41Sopenharmony_ci              }],
10531cb0ef41Sopenharmony_ci            ],
10541cb0ef41Sopenharmony_ci            'xcode_settings': {
10551cb0ef41Sopenharmony_ci              'ARCHS': [ 'i386' ],
10561cb0ef41Sopenharmony_ci            },
10571cb0ef41Sopenharmony_ci          }],
10581cb0ef41Sopenharmony_ci          ['_toolset=="target"', {
10591cb0ef41Sopenharmony_ci            'conditions': [
10601cb0ef41Sopenharmony_ci              ['target_cxx_is_biarch==1', {
10611cb0ef41Sopenharmony_ci                'conditions': [
10621cb0ef41Sopenharmony_ci                  ['host_arch=="s390x"', {
10631cb0ef41Sopenharmony_ci                    'cflags': [ '-m31' ],
10641cb0ef41Sopenharmony_ci                    'ldflags': [ '-m31' ]
10651cb0ef41Sopenharmony_ci                  },{
10661cb0ef41Sopenharmony_ci                   'cflags': [ '-m32' ],
10671cb0ef41Sopenharmony_ci                   'ldflags': [ '-m32' ],
10681cb0ef41Sopenharmony_ci                  }],
10691cb0ef41Sopenharmony_ci                ],
10701cb0ef41Sopenharmony_ci              }],
10711cb0ef41Sopenharmony_ci            ],
10721cb0ef41Sopenharmony_ci            'xcode_settings': {
10731cb0ef41Sopenharmony_ci              'ARCHS': [ 'i386' ],
10741cb0ef41Sopenharmony_ci            },
10751cb0ef41Sopenharmony_ci          }],
10761cb0ef41Sopenharmony_ci        ],
10771cb0ef41Sopenharmony_ci      }],
10781cb0ef41Sopenharmony_ci      ['(OS=="linux" or OS=="android") and \
10791cb0ef41Sopenharmony_ci        (v8_target_arch=="x64" or v8_target_arch=="arm64" or \
10801cb0ef41Sopenharmony_ci         v8_target_arch=="ppc64" or v8_target_arch=="s390x")', {
10811cb0ef41Sopenharmony_ci        'target_conditions': [
10821cb0ef41Sopenharmony_ci          ['_toolset=="host"', {
10831cb0ef41Sopenharmony_ci            'conditions': [
10841cb0ef41Sopenharmony_ci              ['host_cxx_is_biarch==1', {
10851cb0ef41Sopenharmony_ci                'cflags': [ '-m64' ],
10861cb0ef41Sopenharmony_ci                'ldflags': [ '-m64' ]
10871cb0ef41Sopenharmony_ci              }],
10881cb0ef41Sopenharmony_ci             ],
10891cb0ef41Sopenharmony_ci           }],
10901cb0ef41Sopenharmony_ci          ['_toolset=="target"', {
10911cb0ef41Sopenharmony_ci             'conditions': [
10921cb0ef41Sopenharmony_ci               ['target_cxx_is_biarch==1', {
10931cb0ef41Sopenharmony_ci                 'cflags': [ '-m64' ],
10941cb0ef41Sopenharmony_ci                 'ldflags': [ '-m64' ],
10951cb0ef41Sopenharmony_ci               }],
10961cb0ef41Sopenharmony_ci             ]
10971cb0ef41Sopenharmony_ci           }],
10981cb0ef41Sopenharmony_ci         ],
10991cb0ef41Sopenharmony_ci      }],
11001cb0ef41Sopenharmony_ci      ['OS=="android" and v8_android_log_stdout==1', {
11011cb0ef41Sopenharmony_ci        'defines': [
11021cb0ef41Sopenharmony_ci          'V8_ANDROID_LOG_STDOUT',
11031cb0ef41Sopenharmony_ci        ],
11041cb0ef41Sopenharmony_ci      }],
11051cb0ef41Sopenharmony_ci      ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
11061cb0ef41Sopenharmony_ci         or OS=="netbsd" or OS=="qnx" or OS=="aix" or OS=="os400"', {
11071cb0ef41Sopenharmony_ci        'conditions': [
11081cb0ef41Sopenharmony_ci          [ 'v8_no_strict_aliasing==1', {
11091cb0ef41Sopenharmony_ci            'cflags': [ '-fno-strict-aliasing' ],
11101cb0ef41Sopenharmony_ci          }],
11111cb0ef41Sopenharmony_ci        ],  # conditions
11121cb0ef41Sopenharmony_ci      }],
11131cb0ef41Sopenharmony_ci      ['OS=="solaris"', {
11141cb0ef41Sopenharmony_ci        'defines': [ '__C99FEATURES__=1' ],  # isinf() etc.
11151cb0ef41Sopenharmony_ci      }],
11161cb0ef41Sopenharmony_ci      ['OS=="freebsd" or OS=="openbsd"', {
11171cb0ef41Sopenharmony_ci        'cflags': [ '-I/usr/local/include' ],
11181cb0ef41Sopenharmony_ci      }],
11191cb0ef41Sopenharmony_ci      ['OS=="netbsd"', {
11201cb0ef41Sopenharmony_ci        'cflags': [ '-I/usr/pkg/include' ],
11211cb0ef41Sopenharmony_ci      }],
11221cb0ef41Sopenharmony_ci      ['OS=="aix" or OS=="os400"', {
11231cb0ef41Sopenharmony_ci        'defines': [
11241cb0ef41Sopenharmony_ci          # Support for malloc(0)
11251cb0ef41Sopenharmony_ci          '_LINUX_SOURCE_COMPAT=1',
11261cb0ef41Sopenharmony_ci          '__STDC_FORMAT_MACROS',
11271cb0ef41Sopenharmony_ci          '_ALL_SOURCE=1'],
11281cb0ef41Sopenharmony_ci        'conditions': [
11291cb0ef41Sopenharmony_ci          [ 'v8_target_arch=="ppc"', {
11301cb0ef41Sopenharmony_ci            'ldflags': [ '-Wl,-bmaxdata:0x60000000/dsa' ],
11311cb0ef41Sopenharmony_ci          }],
11321cb0ef41Sopenharmony_ci          [ 'v8_target_arch=="ppc64"', {
11331cb0ef41Sopenharmony_ci            'cflags': [ '-maix64', '-fdollars-in-identifiers', '-fno-extern-tls-init' ],
11341cb0ef41Sopenharmony_ci            'ldflags': [ '-maix64 -Wl,-bbigtoc' ],
11351cb0ef41Sopenharmony_ci          }],
11361cb0ef41Sopenharmony_ci        ],
11371cb0ef41Sopenharmony_ci      }],
11381cb0ef41Sopenharmony_ci    ],  # conditions
11391cb0ef41Sopenharmony_ci    'configurations': {
11401cb0ef41Sopenharmony_ci      'Debug': {
11411cb0ef41Sopenharmony_ci        'defines': [
11421cb0ef41Sopenharmony_ci          'ENABLE_DISASSEMBLER',
11431cb0ef41Sopenharmony_ci          'V8_ENABLE_CHECKS',
11441cb0ef41Sopenharmony_ci          'OBJECT_PRINT',
11451cb0ef41Sopenharmony_ci          'DEBUG',
11461cb0ef41Sopenharmony_ci          'V8_TRACE_MAPS',
11471cb0ef41Sopenharmony_ci          'V8_ENABLE_ALLOCATION_TIMEOUT',
11481cb0ef41Sopenharmony_ci          'V8_ENABLE_FORCE_SLOW_PATH',
11491cb0ef41Sopenharmony_ci        ],
11501cb0ef41Sopenharmony_ci        'conditions': [
11511cb0ef41Sopenharmony_ci          ['OS=="linux" and v8_enable_backtrace==1', {
11521cb0ef41Sopenharmony_ci            # Support for backtrace_symbols.
11531cb0ef41Sopenharmony_ci            'ldflags': [ '-rdynamic' ],
11541cb0ef41Sopenharmony_ci          }],
11551cb0ef41Sopenharmony_ci          ['OS=="aix" or OS=="os400"', {
11561cb0ef41Sopenharmony_ci            'ldflags': [ '-Wl,-bbigtoc' ],
11571cb0ef41Sopenharmony_ci            'conditions': [
11581cb0ef41Sopenharmony_ci              ['v8_target_arch=="ppc64"', {
11591cb0ef41Sopenharmony_ci                'cflags': [ '-maix64 -mcmodel=large' ],
11601cb0ef41Sopenharmony_ci              }],
11611cb0ef41Sopenharmony_ci            ],
11621cb0ef41Sopenharmony_ci          }],
11631cb0ef41Sopenharmony_ci          ['OS=="android"', {
11641cb0ef41Sopenharmony_ci            'variables': {
11651cb0ef41Sopenharmony_ci              'android_full_debug%': 1,
11661cb0ef41Sopenharmony_ci            },
11671cb0ef41Sopenharmony_ci            'conditions': [
11681cb0ef41Sopenharmony_ci              ['android_full_debug==0', {
11691cb0ef41Sopenharmony_ci                # Disable full debug if we want a faster v8 in a debug build.
11701cb0ef41Sopenharmony_ci                # TODO(2304): pass DISABLE_DEBUG_ASSERT instead of hiding DEBUG.
11711cb0ef41Sopenharmony_ci                'defines!': [
11721cb0ef41Sopenharmony_ci                  'DEBUG',
11731cb0ef41Sopenharmony_ci                  'ENABLE_SLOW_DCHECKS',
11741cb0ef41Sopenharmony_ci                ],
11751cb0ef41Sopenharmony_ci              }],
11761cb0ef41Sopenharmony_ci            ],
11771cb0ef41Sopenharmony_ci          }],
11781cb0ef41Sopenharmony_ci          ['v8_optimized_debug==0', {
11791cb0ef41Sopenharmony_ci            'msvs_settings': {
11801cb0ef41Sopenharmony_ci              'VCCLCompilerTool': {
11811cb0ef41Sopenharmony_ci                'Optimization': '0',
11821cb0ef41Sopenharmony_ci                'conditions': [
11831cb0ef41Sopenharmony_ci                  ['component=="shared_library" or force_dynamic_crt==1', {
11841cb0ef41Sopenharmony_ci                    'RuntimeLibrary': '3',  # /MDd
11851cb0ef41Sopenharmony_ci                  }, {
11861cb0ef41Sopenharmony_ci                     'RuntimeLibrary': '1',  # /MTd
11871cb0ef41Sopenharmony_ci                   }],
11881cb0ef41Sopenharmony_ci                ],
11891cb0ef41Sopenharmony_ci              },
11901cb0ef41Sopenharmony_ci              'VCLinkerTool': {
11911cb0ef41Sopenharmony_ci                'LinkIncremental': '2',
11921cb0ef41Sopenharmony_ci              },
11931cb0ef41Sopenharmony_ci            },
11941cb0ef41Sopenharmony_ci            'variables': {
11951cb0ef41Sopenharmony_ci              'v8_enable_slow_dchecks%': 1,
11961cb0ef41Sopenharmony_ci            },
11971cb0ef41Sopenharmony_ci            'conditions': [
11981cb0ef41Sopenharmony_ci              ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
11991cb0ef41Sopenharmony_ci            OS=="qnx" or OS=="aix" or OS=="os400"', {
12001cb0ef41Sopenharmony_ci                'cflags!': [
12011cb0ef41Sopenharmony_ci                  '-O3',
12021cb0ef41Sopenharmony_ci                  '-O2',
12031cb0ef41Sopenharmony_ci                  '-O1',
12041cb0ef41Sopenharmony_ci                  '-Os',
12051cb0ef41Sopenharmony_ci                ],
12061cb0ef41Sopenharmony_ci                'cflags': [
12071cb0ef41Sopenharmony_ci                  '-fdata-sections',
12081cb0ef41Sopenharmony_ci                  '-ffunction-sections',
12091cb0ef41Sopenharmony_ci                ],
12101cb0ef41Sopenharmony_ci              }],
12111cb0ef41Sopenharmony_ci              ['OS=="mac"', {
12121cb0ef41Sopenharmony_ci                'xcode_settings': {
12131cb0ef41Sopenharmony_ci                  'GCC_OPTIMIZATION_LEVEL': '0',  # -O0
12141cb0ef41Sopenharmony_ci                },
12151cb0ef41Sopenharmony_ci              }],
12161cb0ef41Sopenharmony_ci              ['v8_enable_slow_dchecks==1', {
12171cb0ef41Sopenharmony_ci                'defines': [
12181cb0ef41Sopenharmony_ci                  'ENABLE_SLOW_DCHECKS',
12191cb0ef41Sopenharmony_ci                ],
12201cb0ef41Sopenharmony_ci              }],
12211cb0ef41Sopenharmony_ci            ],
12221cb0ef41Sopenharmony_ci          }, {
12231cb0ef41Sopenharmony_ci            'msvs_settings': {
12241cb0ef41Sopenharmony_ci              'VCCLCompilerTool': {
12251cb0ef41Sopenharmony_ci                'Optimization': '2',
12261cb0ef41Sopenharmony_ci                'InlineFunctionExpansion': '2',
12271cb0ef41Sopenharmony_ci                'EnableIntrinsicFunctions': 'true',
12281cb0ef41Sopenharmony_ci                'FavorSizeOrSpeed': '0',
12291cb0ef41Sopenharmony_ci                'StringPooling': 'true',
12301cb0ef41Sopenharmony_ci                'BasicRuntimeChecks': '0',
12311cb0ef41Sopenharmony_ci                'conditions': [
12321cb0ef41Sopenharmony_ci                  ['component=="shared_library" or force_dynamic_crt==1', {
12331cb0ef41Sopenharmony_ci                    'RuntimeLibrary': '3',  #/MDd
12341cb0ef41Sopenharmony_ci                  }, {
12351cb0ef41Sopenharmony_ci                     'RuntimeLibrary': '1',  #/MTd
12361cb0ef41Sopenharmony_ci                   }],
12371cb0ef41Sopenharmony_ci                ],
12381cb0ef41Sopenharmony_ci              },
12391cb0ef41Sopenharmony_ci              'VCLinkerTool': {
12401cb0ef41Sopenharmony_ci                'LinkIncremental': '1',
12411cb0ef41Sopenharmony_ci                'OptimizeReferences': '2',
12421cb0ef41Sopenharmony_ci                'EnableCOMDATFolding': '2',
12431cb0ef41Sopenharmony_ci              },
12441cb0ef41Sopenharmony_ci            },
12451cb0ef41Sopenharmony_ci            'variables': {
12461cb0ef41Sopenharmony_ci              'v8_enable_slow_dchecks%': 0,
12471cb0ef41Sopenharmony_ci            },
12481cb0ef41Sopenharmony_ci            'conditions': [
12491cb0ef41Sopenharmony_ci              ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
12501cb0ef41Sopenharmony_ci            OS=="qnx" or OS=="aix" or OS=="os400"', {
12511cb0ef41Sopenharmony_ci                'cflags!': [
12521cb0ef41Sopenharmony_ci                  '-O0',
12531cb0ef41Sopenharmony_ci                  '-O1',
12541cb0ef41Sopenharmony_ci                  '-Os',
12551cb0ef41Sopenharmony_ci                ],
12561cb0ef41Sopenharmony_ci                'cflags': [
12571cb0ef41Sopenharmony_ci                  '-fdata-sections',
12581cb0ef41Sopenharmony_ci                  '-ffunction-sections',
12591cb0ef41Sopenharmony_ci                ],
12601cb0ef41Sopenharmony_ci                'conditions': [
12611cb0ef41Sopenharmony_ci                  # Don't use -O3 with sanitizers.
12621cb0ef41Sopenharmony_ci                  ['asan==0 and msan==0 and lsan==0 \
12631cb0ef41Sopenharmony_ci                and tsan==0 and ubsan==0 and ubsan_vptr==0', {
12641cb0ef41Sopenharmony_ci                    'cflags': ['-O3'],
12651cb0ef41Sopenharmony_ci                    'cflags!': ['-O2'],
12661cb0ef41Sopenharmony_ci                  }, {
12671cb0ef41Sopenharmony_ci                     'cflags': ['-O2'],
12681cb0ef41Sopenharmony_ci                     'cflags!': ['-O3'],
12691cb0ef41Sopenharmony_ci                   }],
12701cb0ef41Sopenharmony_ci                ],
12711cb0ef41Sopenharmony_ci              }],
12721cb0ef41Sopenharmony_ci              ['OS=="mac"', {
12731cb0ef41Sopenharmony_ci                'xcode_settings': {
12741cb0ef41Sopenharmony_ci                  'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
12751cb0ef41Sopenharmony_ci                  'GCC_STRICT_ALIASING': 'YES',
12761cb0ef41Sopenharmony_ci                },
12771cb0ef41Sopenharmony_ci              }],
12781cb0ef41Sopenharmony_ci              ['v8_enable_slow_dchecks==1', {
12791cb0ef41Sopenharmony_ci                'defines': [
12801cb0ef41Sopenharmony_ci                  'ENABLE_SLOW_DCHECKS',
12811cb0ef41Sopenharmony_ci                ],
12821cb0ef41Sopenharmony_ci              }],
12831cb0ef41Sopenharmony_ci            ],
12841cb0ef41Sopenharmony_ci          }],
12851cb0ef41Sopenharmony_ci          # Temporary refs: https://github.com/nodejs/node/pull/23801
12861cb0ef41Sopenharmony_ci          ['v8_enable_handle_zapping==1', {
12871cb0ef41Sopenharmony_ci            'defines': ['ENABLE_HANDLE_ZAPPING',],
12881cb0ef41Sopenharmony_ci          }],
12891cb0ef41Sopenharmony_ci        ],
12901cb0ef41Sopenharmony_ci
12911cb0ef41Sopenharmony_ci      },  # DebugBaseCommon
12921cb0ef41Sopenharmony_ci      'Release': {
12931cb0ef41Sopenharmony_ci        'variables': {
12941cb0ef41Sopenharmony_ci          'v8_enable_slow_dchecks%': 0,
12951cb0ef41Sopenharmony_ci        },
12961cb0ef41Sopenharmony_ci         # Temporary refs: https://github.com/nodejs/node/pull/23801
12971cb0ef41Sopenharmony_ci        'defines!': ['ENABLE_HANDLE_ZAPPING',],
12981cb0ef41Sopenharmony_ci        'conditions': [
12991cb0ef41Sopenharmony_ci          ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" \
13001cb0ef41Sopenharmony_ci            or OS=="aix" or OS=="os400"', {
13011cb0ef41Sopenharmony_ci            'cflags!': [
13021cb0ef41Sopenharmony_ci              '-Os',
13031cb0ef41Sopenharmony_ci            ],
13041cb0ef41Sopenharmony_ci            'cflags': [
13051cb0ef41Sopenharmony_ci              '-fdata-sections',
13061cb0ef41Sopenharmony_ci              '-ffunction-sections',
13071cb0ef41Sopenharmony_ci            ],
13081cb0ef41Sopenharmony_ci            'conditions': [
13091cb0ef41Sopenharmony_ci              # Don't use -O3 with sanitizers.
13101cb0ef41Sopenharmony_ci              ['asan==0 and msan==0 and lsan==0 \
13111cb0ef41Sopenharmony_ci                and tsan==0 and ubsan==0 and ubsan_vptr==0', {
13121cb0ef41Sopenharmony_ci                'cflags': ['-O3'],
13131cb0ef41Sopenharmony_ci                'cflags!': ['-O2'],
13141cb0ef41Sopenharmony_ci              }, {
13151cb0ef41Sopenharmony_ci                'cflags': ['-O2'],
13161cb0ef41Sopenharmony_ci                'cflags!': ['-O3'],
13171cb0ef41Sopenharmony_ci              }],
13181cb0ef41Sopenharmony_ci            ],
13191cb0ef41Sopenharmony_ci          }],
13201cb0ef41Sopenharmony_ci          ['OS=="android"', {
13211cb0ef41Sopenharmony_ci            'cflags!': [
13221cb0ef41Sopenharmony_ci              '-O3',
13231cb0ef41Sopenharmony_ci              '-Os',
13241cb0ef41Sopenharmony_ci            ],
13251cb0ef41Sopenharmony_ci            'cflags': [
13261cb0ef41Sopenharmony_ci              '-fdata-sections',
13271cb0ef41Sopenharmony_ci              '-ffunction-sections',
13281cb0ef41Sopenharmony_ci              '-O2',
13291cb0ef41Sopenharmony_ci            ],
13301cb0ef41Sopenharmony_ci          }],
13311cb0ef41Sopenharmony_ci          ['OS=="mac"', {
13321cb0ef41Sopenharmony_ci            'xcode_settings': {
13331cb0ef41Sopenharmony_ci              'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
13341cb0ef41Sopenharmony_ci
13351cb0ef41Sopenharmony_ci              # -fstrict-aliasing.  Mainline gcc
13361cb0ef41Sopenharmony_ci              # enables this at -O2 and above,
13371cb0ef41Sopenharmony_ci              # but Apple gcc does not unless it
13381cb0ef41Sopenharmony_ci              # is specified explicitly.
13391cb0ef41Sopenharmony_ci              'GCC_STRICT_ALIASING': 'YES',
13401cb0ef41Sopenharmony_ci            },
13411cb0ef41Sopenharmony_ci          }],  # OS=="mac"
13421cb0ef41Sopenharmony_ci          ['OS=="win"', {
13431cb0ef41Sopenharmony_ci            'msvs_settings': {
13441cb0ef41Sopenharmony_ci              'VCCLCompilerTool': {
13451cb0ef41Sopenharmony_ci                'Optimization': '2',
13461cb0ef41Sopenharmony_ci                'InlineFunctionExpansion': '2',
13471cb0ef41Sopenharmony_ci                'EnableIntrinsicFunctions': 'true',
13481cb0ef41Sopenharmony_ci                'FavorSizeOrSpeed': '0',
13491cb0ef41Sopenharmony_ci                'StringPooling': 'true',
13501cb0ef41Sopenharmony_ci                'conditions': [
13511cb0ef41Sopenharmony_ci                  ['component=="shared_library" or force_dynamic_crt==1', {
13521cb0ef41Sopenharmony_ci                    'RuntimeLibrary': '2',  #/MD
13531cb0ef41Sopenharmony_ci                  }, {
13541cb0ef41Sopenharmony_ci                    'RuntimeLibrary': '0',  #/MT
13551cb0ef41Sopenharmony_ci                  }],
13561cb0ef41Sopenharmony_ci                ],
13571cb0ef41Sopenharmony_ci              },
13581cb0ef41Sopenharmony_ci              'VCLinkerTool': {
13591cb0ef41Sopenharmony_ci                'LinkIncremental': '1',
13601cb0ef41Sopenharmony_ci                'OptimizeReferences': '2',
13611cb0ef41Sopenharmony_ci                'EnableCOMDATFolding': '2',
13621cb0ef41Sopenharmony_ci              },
13631cb0ef41Sopenharmony_ci            },
13641cb0ef41Sopenharmony_ci          }],  # OS=="win"
13651cb0ef41Sopenharmony_ci          ['v8_enable_slow_dchecks==1', {
13661cb0ef41Sopenharmony_ci            'defines': [
13671cb0ef41Sopenharmony_ci              'ENABLE_SLOW_DCHECKS',
13681cb0ef41Sopenharmony_ci            ],
13691cb0ef41Sopenharmony_ci          }],
13701cb0ef41Sopenharmony_ci        ],  # conditions
13711cb0ef41Sopenharmony_ci      },  # Release
13721cb0ef41Sopenharmony_ci    },  # configurations
13731cb0ef41Sopenharmony_ci    'msvs_disabled_warnings': [
13741cb0ef41Sopenharmony_ci      4129,  # unrecognized character escape sequence (torque-generated)
13751cb0ef41Sopenharmony_ci      4245,  # Conversion with signed/unsigned mismatch.
13761cb0ef41Sopenharmony_ci      4267,  # Conversion with possible loss of data.
13771cb0ef41Sopenharmony_ci      4324,  # Padding structure due to alignment.
13781cb0ef41Sopenharmony_ci      # 4351, # [refack] Old issue with array init.
13791cb0ef41Sopenharmony_ci      4355,  # 'this' used in base member initializer list
13801cb0ef41Sopenharmony_ci      4506,  # Benign "no definition for inline function"
13811cb0ef41Sopenharmony_ci      4661,  # no suitable definition provided for explicit template instantiation request
13821cb0ef41Sopenharmony_ci      4701,  # Potentially uninitialized local variable.
13831cb0ef41Sopenharmony_ci      4702,  # Unreachable code.
13841cb0ef41Sopenharmony_ci      4703,  # Potentially uninitialized local pointer variable.
13851cb0ef41Sopenharmony_ci      4709,  # Comma operator within array index expr (bugged).
13861cb0ef41Sopenharmony_ci      4714,  # Function marked forceinline not inlined.
13871cb0ef41Sopenharmony_ci      4715,  # Not all control paths return a value. (see https://crbug.com/v8/7658)
13881cb0ef41Sopenharmony_ci      4718,  # Recursive call has no side-effect.
13891cb0ef41Sopenharmony_ci      4723,  # https://crbug.com/v8/7771
13901cb0ef41Sopenharmony_ci      4724,  # https://crbug.com/v8/7771
13911cb0ef41Sopenharmony_ci      4800,  # Forcing value to bool.
13921cb0ef41Sopenharmony_ci    ],
13931cb0ef41Sopenharmony_ci    # Relevant only for x86.
13941cb0ef41Sopenharmony_ci    # Refs: https://github.com/nodejs/node/pull/25852
13951cb0ef41Sopenharmony_ci    # Refs: https://docs.microsoft.com/en-us/cpp/build/reference/safeseh-image-has-safe-exception-handlers
13961cb0ef41Sopenharmony_ci    'msvs_settings': {
13971cb0ef41Sopenharmony_ci      'VCLinkerTool': {
13981cb0ef41Sopenharmony_ci        'ImageHasSafeExceptionHandlers': 'false',
13991cb0ef41Sopenharmony_ci      },
14001cb0ef41Sopenharmony_ci    },
14011cb0ef41Sopenharmony_ci  },  # target_defaults
14021cb0ef41Sopenharmony_ci}
1403