mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	* Add samples and definition for GN build files * Add grammar to provide GN syntax highlighting * Fix failing tests * Add Python extensions for GYP includes and .gclient configs
		
			
				
	
	
		
			1421 lines
		
	
	
		
			47 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			1421 lines
		
	
	
		
			47 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright 2013 the V8 project authors. All rights reserved.
 | |
| # Redistribution and use in source and binary forms, with or without
 | |
| # modification, are permitted provided that the following conditions are
 | |
| # met:
 | |
| #
 | |
| #     * Redistributions of source code must retain the above copyright
 | |
| #       notice, this list of conditions and the following disclaimer.
 | |
| #     * Redistributions in binary form must reproduce the above
 | |
| #       copyright notice, this list of conditions and the following
 | |
| #       disclaimer in the documentation and/or other materials provided
 | |
| #       with the distribution.
 | |
| #     * Neither the name of Google Inc. nor the names of its
 | |
| #       contributors may be used to endorse or promote products derived
 | |
| #       from this software without specific prior written permission.
 | |
| #
 | |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | |
| # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | |
| # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | |
| # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | |
| # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | |
| # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | |
| # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | |
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | |
| # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | |
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
| 
 | |
| # Shared definitions for all V8-related targets.
 | |
| 
 | |
| {
 | |
|   'variables': {
 | |
|     'msvs_use_common_release': 0,
 | |
|     'clang%': 0,
 | |
|     'asan%': 0,
 | |
|     'lsan%': 0,
 | |
|     'msan%': 0,
 | |
|     'tsan%': 0,
 | |
|     'ubsan%': 0,
 | |
|     'ubsan_vptr%': 0,
 | |
|     'has_valgrind%': 0,
 | |
|     'coverage%': 0,
 | |
|     'v8_target_arch%': '<(target_arch)',
 | |
|     'v8_host_byteorder%': '<!(python -c "import sys; print sys.byteorder")',
 | |
|     'force_dynamic_crt%': 0,
 | |
| 
 | |
|     # Setting 'v8_can_use_vfp32dregs' to 'true' will cause V8 to use the VFP
 | |
|     # registers d16-d31 in the generated code, both in the snapshot and for the
 | |
|     # ARM target. Leaving the default value of 'false' will avoid the use of
 | |
|     # these registers in the snapshot and use CPU feature probing when running
 | |
|     # on the target.
 | |
|     'v8_can_use_vfp32dregs%': 'false',
 | |
|     'arm_test_noprobe%': 'off',
 | |
| 
 | |
|     # Similar to vfp but on MIPS.
 | |
|     'v8_can_use_fpu_instructions%': 'true',
 | |
| 
 | |
|     # Similar to the ARM hard float ABI but on MIPS.
 | |
|     'v8_use_mips_abi_hardfloat%': 'true',
 | |
| 
 | |
|     # Print to stdout on Android.
 | |
|     'v8_android_log_stdout%': 0,
 | |
| 
 | |
|     # Force disable libstdc++ debug mode.
 | |
|     'disable_glibcxx_debug%': 0,
 | |
| 
 | |
|     'v8_enable_backtrace%': 0,
 | |
| 
 | |
|     # Enable profiling support. Only required on Windows.
 | |
|     'v8_enable_prof%': 0,
 | |
| 
 | |
|     # Some versions of GCC 4.5 seem to need -fno-strict-aliasing.
 | |
|     'v8_no_strict_aliasing%': 0,
 | |
| 
 | |
|     # Chrome needs this definition unconditionally. For standalone V8 builds,
 | |
|     # it's handled in gypfiles/standalone.gypi.
 | |
|     'want_separate_host_toolset%': 1,
 | |
|     'want_separate_host_toolset_mkpeephole%': 1,
 | |
| 
 | |
|     # Toolset the shell binary should be compiled for. Possible values are
 | |
|     # 'host' and 'target'.
 | |
|     # The setting is ignored if want_separate_host_toolset is 0.
 | |
|     'v8_toolset_for_shell%': 'target',
 | |
| 
 | |
|     'host_os%': '<(OS)',
 | |
|     'werror%': '-Werror',
 | |
|     # For a shared library build, results in "libv8-<(soname_version).so".
 | |
|     'soname_version%': '',
 | |
| 
 | |
|     # Allow to suppress the array bounds warning (default is no suppression).
 | |
|     'wno_array_bounds%': '',
 | |
| 
 | |
|     # Override where to find binutils
 | |
|     'binutils_dir%': '',
 | |
| 
 | |
|     'conditions': [
 | |
|       ['OS=="linux" and host_arch=="x64"', {
 | |
|         'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin',
 | |
|       }],
 | |
|       ['OS=="linux" and host_arch=="ia32"', {
 | |
|         'binutils_dir%': 'third_party/binutils/Linux_ia32/Release/bin',
 | |
|       }],
 | |
| 
 | |
|       # linux_use_bundled_gold: whether to use the gold linker binary checked
 | |
|       # into third_party/binutils.  Force this off via GYP_DEFINES when you
 | |
|       # are using a custom toolchain and need to control -B in ldflags.
 | |
|       # Do not use 32-bit gold on 32-bit hosts as it runs out address space
 | |
|       # for component=static_library builds.
 | |
|       ['((OS=="linux" or OS=="android") and (target_arch=="x64" or target_arch=="arm" or (target_arch=="ia32" and host_arch=="x64"))) or (OS=="linux" and target_arch=="mipsel")', {
 | |
|         'linux_use_bundled_gold%': 1,
 | |
|       }, {
 | |
|         'linux_use_bundled_gold%': 0,
 | |
|       }],
 | |
|       # linux_use_bundled_binutils: whether to use the binary binutils
 | |
|       # checked into third_party/binutils.  These are not multi-arch so cannot
 | |
|       # be used except on x86 and x86-64 (the only two architectures which
 | |
|       # are currently checke in).  Force this off via GYP_DEFINES when you
 | |
|       # are using a custom toolchain and need to control -B in cflags.
 | |
|       ['OS=="linux" and (target_arch=="ia32" or target_arch=="x64")', {
 | |
|         'linux_use_bundled_binutils%': 1,
 | |
|       }, {
 | |
|         'linux_use_bundled_binutils%': 0,
 | |
|       }],
 | |
|       # linux_use_gold_flags: whether to use build flags that rely on gold.
 | |
|       # On by default for x64 Linux.
 | |
|       ['OS=="linux" and target_arch=="x64"', {
 | |
|         'linux_use_gold_flags%': 1,
 | |
|       }, {
 | |
|         'linux_use_gold_flags%': 0,
 | |
|       }],
 | |
|     ],
 | |
| 
 | |
|     # Link-Time Optimizations
 | |
|     'use_lto%': 0,
 | |
| 
 | |
|     # Indicates if gcmole tools are downloaded by a hook.
 | |
|     'gcmole%': 0,
 | |
|   },
 | |
|   'conditions': [
 | |
|     ['host_arch=="ia32" or host_arch=="x64" or \
 | |
|       host_arch=="ppc" or host_arch=="ppc64" or \
 | |
|       host_arch=="s390" or host_arch=="s390x" or \
 | |
|       clang==1', {
 | |
|       'variables': {
 | |
|         'host_cxx_is_biarch%': 1,
 | |
|        },
 | |
|      }, {
 | |
|       'variables': {
 | |
|         'host_cxx_is_biarch%': 0,
 | |
|       },
 | |
|     }],
 | |
|     ['target_arch=="ia32" or target_arch=="x64" or target_arch=="x87" or \
 | |
|       target_arch=="ppc" or target_arch=="ppc64" or target_arch=="s390" or \
 | |
|       target_arch=="s390x" or clang==1', {
 | |
|       'variables': {
 | |
|         'target_cxx_is_biarch%': 1,
 | |
|        },
 | |
|      }, {
 | |
|       'variables': {
 | |
|         'target_cxx_is_biarch%': 0,
 | |
|       },
 | |
|     }],
 | |
|   ],
 | |
|   'target_defaults': {
 | |
|     'conditions': [
 | |
|       ['v8_target_arch=="arm"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_ARM',
 | |
|         ],
 | |
|         'conditions': [
 | |
|           [ 'arm_version==7 or arm_version=="default"', {
 | |
|             'defines': [
 | |
|               'CAN_USE_ARMV7_INSTRUCTIONS',
 | |
|             ],
 | |
|           }],
 | |
|           [ 'arm_fpu=="vfpv3-d16" or arm_fpu=="default"', {
 | |
|             'defines': [
 | |
|               'CAN_USE_VFP3_INSTRUCTIONS',
 | |
|             ],
 | |
|           }],
 | |
|           [ 'arm_fpu=="vfpv3"', {
 | |
|             'defines': [
 | |
|               'CAN_USE_VFP3_INSTRUCTIONS',
 | |
|               'CAN_USE_VFP32DREGS',
 | |
|             ],
 | |
|           }],
 | |
|           [ 'arm_fpu=="neon"', {
 | |
|             'defines': [
 | |
|               'CAN_USE_VFP3_INSTRUCTIONS',
 | |
|               'CAN_USE_VFP32DREGS',
 | |
|               'CAN_USE_NEON',
 | |
|             ],
 | |
|           }],
 | |
|           [ 'arm_test_noprobe=="on"', {
 | |
|             'defines': [
 | |
|               'ARM_TEST_NO_FEATURE_PROBE',
 | |
|             ],
 | |
|           }],
 | |
|         ],
 | |
|         'target_conditions': [
 | |
|           ['_toolset=="host"', {
 | |
|             'conditions': [
 | |
|               ['v8_target_arch==host_arch', {
 | |
|                 # Host built with an Arm CXX compiler.
 | |
|                 'conditions': [
 | |
|                   [ 'arm_version==7', {
 | |
|                     'cflags': ['-march=armv7-a',],
 | |
|                   }],
 | |
|                   [ 'arm_version==7 or arm_version=="default"', {
 | |
|                     'conditions': [
 | |
|                       [ 'arm_fpu!="default"', {
 | |
|                         'cflags': ['-mfpu=<(arm_fpu)',],
 | |
|                       }],
 | |
|                     ],
 | |
|                   }],
 | |
|                   [ 'arm_float_abi!="default"', {
 | |
|                     'cflags': ['-mfloat-abi=<(arm_float_abi)',],
 | |
|                   }],
 | |
|                   [ 'arm_thumb==1', {
 | |
|                     'cflags': ['-mthumb',],
 | |
|                   }],
 | |
|                   [ 'arm_thumb==0', {
 | |
|                     'cflags': ['-marm',],
 | |
|                   }],
 | |
|                 ],
 | |
|               }, {
 | |
|                 # 'v8_target_arch!=host_arch'
 | |
|                 # Host not built with an Arm CXX compiler (simulator build).
 | |
|                 'conditions': [
 | |
|                   [ 'arm_float_abi=="hard"', {
 | |
|                     'defines': [
 | |
|                       'USE_EABI_HARDFLOAT=1',
 | |
|                     ],
 | |
|                   }],
 | |
|                   [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
 | |
|                     'defines': [
 | |
|                       'USE_EABI_HARDFLOAT=0',
 | |
|                     ],
 | |
|                   }],
 | |
|                 ],
 | |
|               }],
 | |
|             ],
 | |
|           }],  # _toolset=="host"
 | |
|           ['_toolset=="target"', {
 | |
|             'conditions': [
 | |
|               ['v8_target_arch==target_arch', {
 | |
|                 # Target built with an Arm CXX compiler.
 | |
|                 'conditions': [
 | |
|                   [ 'arm_version==7', {
 | |
|                     'cflags': ['-march=armv7-a',],
 | |
|                   }],
 | |
|                   [ 'arm_version==7 or arm_version=="default"', {
 | |
|                     'conditions': [
 | |
|                       [ 'arm_fpu!="default"', {
 | |
|                         'cflags': ['-mfpu=<(arm_fpu)',],
 | |
|                       }],
 | |
|                     ],
 | |
|                   }],
 | |
|                   [ 'arm_float_abi!="default"', {
 | |
|                     'cflags': ['-mfloat-abi=<(arm_float_abi)',],
 | |
|                   }],
 | |
|                   [ 'arm_thumb==1', {
 | |
|                     'cflags': ['-mthumb',],
 | |
|                   }],
 | |
|                   [ 'arm_thumb==0', {
 | |
|                     'cflags': ['-marm',],
 | |
|                   }],
 | |
|                 ],
 | |
|               }, {
 | |
|                 # 'v8_target_arch!=target_arch'
 | |
|                 # Target not built with an Arm CXX compiler (simulator build).
 | |
|                 'conditions': [
 | |
|                   [ 'arm_float_abi=="hard"', {
 | |
|                     'defines': [
 | |
|                       'USE_EABI_HARDFLOAT=1',
 | |
|                     ],
 | |
|                   }],
 | |
|                   [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', {
 | |
|                     'defines': [
 | |
|                       'USE_EABI_HARDFLOAT=0',
 | |
|                     ],
 | |
|                   }],
 | |
|                 ],
 | |
|               }],
 | |
|               # Disable GCC LTO for v8
 | |
|               # v8 is optimized for speed. Because GCC LTO merges flags at link
 | |
|               # time, we disable LTO to prevent any -O2 flags from taking
 | |
|               # precedence over v8's -Os flag. However, LLVM LTO does not work
 | |
|               # this way so we keep LTO enabled under LLVM.
 | |
|               ['clang==0 and use_lto==1', {
 | |
|                 'cflags!': [
 | |
|                   '-flto',
 | |
|                   '-ffat-lto-objects',
 | |
|                 ],
 | |
|               }],
 | |
|             ],
 | |
|           }],  # _toolset=="target"
 | |
|         ],
 | |
|       }],  # v8_target_arch=="arm"
 | |
|       ['v8_target_arch=="arm64"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_ARM64',
 | |
|         ],
 | |
|       }],
 | |
|       ['v8_target_arch=="s390" or v8_target_arch=="s390x"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_S390',
 | |
|         ],
 | |
|         'conditions': [
 | |
|           ['v8_target_arch=="s390x"', {
 | |
|             'defines': [
 | |
|               'V8_TARGET_ARCH_S390X',
 | |
|             ],
 | |
|           }],
 | |
|           ['v8_host_byteorder=="little"', {
 | |
|             'defines': [
 | |
|               'V8_TARGET_ARCH_S390_LE_SIM',
 | |
|             ],
 | |
|           }],
 | |
|           ],
 | |
|       }],  # s390
 | |
|       ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_PPC',
 | |
|         ],
 | |
|         'conditions': [
 | |
|           ['v8_target_arch=="ppc64"', {
 | |
|             'defines': [
 | |
|               'V8_TARGET_ARCH_PPC64',
 | |
|             ],
 | |
|           }],
 | |
|           ['v8_host_byteorder=="little"', {
 | |
|             'defines': [
 | |
|               'V8_TARGET_ARCH_PPC_LE',
 | |
|             ],
 | |
|           }],
 | |
|           ['v8_host_byteorder=="big"', {
 | |
|             'defines': [
 | |
|               'V8_TARGET_ARCH_PPC_BE',
 | |
|             ],
 | |
|             'conditions': [
 | |
|               ['OS=="aix"', {
 | |
|                 # Work around AIX ceil, trunc and round oddities.
 | |
|                 'cflags': [ '-mcpu=power5+ -mfprnd' ],
 | |
|               }],
 | |
|               ['OS=="aix"', {
 | |
|                 # Work around AIX assembler popcntb bug.
 | |
|                 'cflags': [ '-mno-popcntb' ],
 | |
|               }],
 | |
|             ],
 | |
|           }],
 | |
|         ],
 | |
|       }],  # ppc
 | |
|       ['v8_target_arch=="ia32"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_IA32',
 | |
|         ],
 | |
|       }],  # v8_target_arch=="ia32"
 | |
|       ['v8_target_arch=="x87"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_X87',
 | |
|         ],
 | |
|         'cflags': ['-march=i586'],
 | |
|       }],  # v8_target_arch=="x87"
 | |
|       ['v8_target_arch=="mips" or v8_target_arch=="mipsel" \
 | |
|         or v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
 | |
|         'target_conditions': [
 | |
|           ['_toolset=="target"', {
 | |
|             'conditions': [
 | |
|               ['v8_target_arch==target_arch', {
 | |
|                 # Target built with a Mips CXX compiler.
 | |
|                 'variables': {
 | |
|                   'ldso_path%': '<!(/bin/echo -n $LDSO_PATH)',
 | |
|                   'ld_r_path%': '<!(/bin/echo -n $LD_R_PATH)',
 | |
|                 },
 | |
|                 'conditions': [
 | |
|                   ['ldso_path!=""', {
 | |
|                     'ldflags': ['-Wl,--dynamic-linker=<(ldso_path)'],
 | |
|                   }],
 | |
|                   ['ld_r_path!=""', {
 | |
|                     'ldflags': ['-Wl,--rpath=<(ld_r_path)'],
 | |
|                   }],
 | |
|                   [ 'clang==1', {
 | |
|                     'cflags': ['-integrated-as'],
 | |
|                   }],
 | |
|                   ['OS!="mac"', {
 | |
|                     'defines': ['_MIPS_TARGET_HW',],
 | |
|                   }, {
 | |
|                     'defines': ['_MIPS_TARGET_SIMULATOR',],
 | |
|                   }],
 | |
|                 ],
 | |
|               }, {
 | |
|                 'defines': ['_MIPS_TARGET_SIMULATOR',],
 | |
|               }],
 | |
|             ],
 | |
|           }],  #'_toolset=="target"
 | |
|           ['_toolset=="host"', {
 | |
|             'conditions': [
 | |
|               ['v8_target_arch==target_arch and OS!="mac"', {
 | |
|                 'defines': ['_MIPS_TARGET_HW',],
 | |
|               }, {
 | |
|                 'defines': ['_MIPS_TARGET_SIMULATOR',],
 | |
|               }],
 | |
|             ],
 | |
|           }],  #'_toolset=="host"
 | |
|         ],
 | |
|       }],
 | |
|       ['v8_target_arch=="mips"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_MIPS',
 | |
|         ],
 | |
|         'conditions': [
 | |
|           [ 'v8_can_use_fpu_instructions=="true"', {
 | |
|             'defines': [
 | |
|               'CAN_USE_FPU_INSTRUCTIONS',
 | |
|             ],
 | |
|           }],
 | |
|           [ 'v8_use_mips_abi_hardfloat=="true"', {
 | |
|             'defines': [
 | |
|               '__mips_hard_float=1',
 | |
|               'CAN_USE_FPU_INSTRUCTIONS',
 | |
|             ],
 | |
|           }, {
 | |
|             'defines': [
 | |
|               '__mips_soft_float=1'
 | |
|             ]
 | |
|           }],
 | |
|         ],
 | |
|         'target_conditions': [
 | |
|           ['_toolset=="target"', {
 | |
|             'conditions': [
 | |
|               ['v8_target_arch==target_arch', {
 | |
|                 # Target built with a Mips CXX compiler.
 | |
|                 'cflags': [
 | |
|                   '-EB',
 | |
|                   '-Wno-error=array-bounds',  # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
 | |
|                 ],
 | |
|                 'ldflags': ['-EB'],
 | |
|                 'conditions': [
 | |
|                   [ 'v8_use_mips_abi_hardfloat=="true"', {
 | |
|                     'cflags': ['-mhard-float'],
 | |
|                     'ldflags': ['-mhard-float'],
 | |
|                   }, {
 | |
|                     'cflags': ['-msoft-float'],
 | |
|                     'ldflags': ['-msoft-float'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r6"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R6',
 | |
|                       'FPU_MODE_FP64',
 | |
|                     ],
 | |
|                     'cflags!': ['-mfp32', '-mfpxx'],
 | |
|                     'conditions': [
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips32r6'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips32r6'],
 | |
|                     'ldflags': ['-mips32r6'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r2"', {
 | |
|                     'conditions': [
 | |
|                       [ 'mips_fpu_mode=="fp64"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FP64',
 | |
|                         ],
 | |
|                         'cflags': ['-mfp64'],
 | |
|                       }],
 | |
|                       ['mips_fpu_mode=="fpxx"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FPXX',
 | |
|                         ],
 | |
|                         'cflags': ['-mfpxx'],
 | |
|                       }],
 | |
|                       ['mips_fpu_mode=="fp32"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FP32',
 | |
|                         ],
 | |
|                         'cflags': ['-mfp32'],
 | |
|                       }],
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips32r2'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips32r2'],
 | |
|                     'ldflags': ['-mips32r2'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r1"', {
 | |
|                     'defines': [
 | |
|                       'FPU_MODE_FP32',
 | |
|                     ],
 | |
|                     'cflags!': ['-mfp64', '-mfpxx'],
 | |
|                     'conditions': [
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips32'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips32'],
 | |
|                     'ldflags': ['-mips32'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="rx"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32RX',
 | |
|                       'FPU_MODE_FPXX',
 | |
|                     ],
 | |
|                     'cflags!': ['-mfp64', '-mfp32'],
 | |
|                     'conditions': [
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips32'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips32', '-mfpxx'],
 | |
|                     'ldflags': ['-mips32'],
 | |
|                   }],
 | |
|                 ],
 | |
|               }, {
 | |
|                 # 'v8_target_arch!=target_arch'
 | |
|                 # Target not built with an MIPS CXX compiler (simulator build).
 | |
|                 'conditions': [
 | |
|                   ['mips_arch_variant=="r6"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R6',
 | |
|                       'FPU_MODE_FP64',
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r2"', {
 | |
|                     'conditions': [
 | |
|                       [ 'mips_fpu_mode=="fp64"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FP64',
 | |
|                         ],
 | |
|                       }],
 | |
|                       ['mips_fpu_mode=="fpxx"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FPXX',
 | |
|                         ],
 | |
|                       }],
 | |
|                       ['mips_fpu_mode=="fp32"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FP32',
 | |
|                         ],
 | |
|                       }],
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r1"', {
 | |
|                     'defines': [
 | |
|                       'FPU_MODE_FP32',
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="rx"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32RX',
 | |
|                       'FPU_MODE_FPXX',
 | |
|                     ],
 | |
|                   }],
 | |
|                 ],
 | |
|               }],
 | |
|             ],
 | |
|           }],  #_toolset=="target"
 | |
|           ['_toolset=="host"', {
 | |
|             'conditions': [
 | |
|               ['mips_arch_variant=="rx"', {
 | |
|                 'defines': [
 | |
|                   '_MIPS_ARCH_MIPS32RX',
 | |
|                   'FPU_MODE_FPXX',
 | |
|                 ],
 | |
|               }],
 | |
|               ['mips_arch_variant=="r6"', {
 | |
|                 'defines': [
 | |
|                   '_MIPS_ARCH_MIPS32R6',
 | |
|                   'FPU_MODE_FP64',
 | |
|                 ],
 | |
|               }],
 | |
|               ['mips_arch_variant=="r2"', {
 | |
|                 'conditions': [
 | |
|                   ['mips_fpu_mode=="fp64"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R2',
 | |
|                       'FPU_MODE_FP64',
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_fpu_mode=="fpxx"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R2',
 | |
|                       'FPU_MODE_FPXX',
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_fpu_mode=="fp32"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R2',
 | |
|                       'FPU_MODE_FP32'
 | |
|                     ],
 | |
|                   }],
 | |
|                 ],
 | |
|               }],
 | |
|               ['mips_arch_variant=="r1"', {
 | |
|                 'defines': ['FPU_MODE_FP32',],
 | |
|               }],
 | |
|             ]
 | |
|           }],  #_toolset=="host"
 | |
|         ],
 | |
|       }],  # v8_target_arch=="mips"
 | |
|       ['v8_target_arch=="mipsel"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_MIPS',
 | |
|         ],
 | |
|         'conditions': [
 | |
|           [ 'v8_can_use_fpu_instructions=="true"', {
 | |
|             'defines': [
 | |
|               'CAN_USE_FPU_INSTRUCTIONS',
 | |
|             ],
 | |
|           }],
 | |
|           [ 'v8_use_mips_abi_hardfloat=="true"', {
 | |
|             'defines': [
 | |
|               '__mips_hard_float=1',
 | |
|               'CAN_USE_FPU_INSTRUCTIONS',
 | |
|             ],
 | |
|           }, {
 | |
|             'defines': [
 | |
|               '__mips_soft_float=1'
 | |
|             ],
 | |
|           }],
 | |
|         ],
 | |
|         'target_conditions': [
 | |
|           ['_toolset=="target"', {
 | |
|             'conditions': [
 | |
|               ['v8_target_arch==target_arch', {
 | |
|                 # Target built with a Mips CXX compiler.
 | |
|                 'cflags': [
 | |
|                   '-EL',
 | |
|                   '-Wno-error=array-bounds',  # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
 | |
|                 ],
 | |
|                 'ldflags': ['-EL'],
 | |
|                 'conditions': [
 | |
|                   [ 'v8_use_mips_abi_hardfloat=="true"', {
 | |
|                     'cflags': ['-mhard-float'],
 | |
|                     'ldflags': ['-mhard-float'],
 | |
|                   }, {
 | |
|                     'cflags': ['-msoft-float'],
 | |
|                     'ldflags': ['-msoft-float'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r6"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R6',
 | |
|                       'FPU_MODE_FP64',
 | |
|                     ],
 | |
|                     'cflags!': ['-mfp32', '-mfpxx'],
 | |
|                     'conditions': [
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips32r6'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips32r6'],
 | |
|                     'ldflags': ['-mips32r6'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r2"', {
 | |
|                     'conditions': [
 | |
|                       [ 'mips_fpu_mode=="fp64"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FP64',
 | |
|                         ],
 | |
|                         'cflags': ['-mfp64'],
 | |
|                       }],
 | |
|                       ['mips_fpu_mode=="fpxx"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FPXX',
 | |
|                         ],
 | |
|                         'cflags': ['-mfpxx'],
 | |
|                       }],
 | |
|                       ['mips_fpu_mode=="fp32"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FP32',
 | |
|                         ],
 | |
|                         'cflags': ['-mfp32'],
 | |
|                       }],
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips32r2'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips32r2'],
 | |
|                     'ldflags': ['-mips32r2'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r1"', {
 | |
|                     'defines': [
 | |
|                       'FPU_MODE_FP32',
 | |
|                     ],
 | |
|                     'cflags!': ['-mfp64', '-mfpxx'],
 | |
|                     'conditions': [
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips32'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips32'],
 | |
|                     'ldflags': ['-mips32'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="rx"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32RX',
 | |
|                       'FPU_MODE_FPXX',
 | |
|                     ],
 | |
|                     'cflags!': ['-mfp64', '-mfp32'],
 | |
|                     'conditions': [
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips32'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips32', '-mfpxx'],
 | |
|                     'ldflags': ['-mips32'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="loongson"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_LOONGSON',
 | |
|                       'FPU_MODE_FP32',
 | |
|                     ],
 | |
|                     'cflags!': ['-mfp64', '-mfpxx'],
 | |
|                     'conditions': [
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips3'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips3', '-mfp32'],
 | |
|                   }],
 | |
|                 ],
 | |
|               }, {
 | |
|                 # 'v8_target_arch!=target_arch'
 | |
|                 # Target not built with an MIPS CXX compiler (simulator build).
 | |
|                 'conditions': [
 | |
|                   ['mips_arch_variant=="r6"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R6',
 | |
|                       'FPU_MODE_FP64',
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r2"', {
 | |
|                     'conditions': [
 | |
|                       [ 'mips_fpu_mode=="fp64"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FP64',
 | |
|                         ],
 | |
|                       }],
 | |
|                       ['mips_fpu_mode=="fpxx"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FPXX',
 | |
|                         ],
 | |
|                       }],
 | |
|                       ['mips_fpu_mode=="fp32"', {
 | |
|                         'defines': [
 | |
|                           '_MIPS_ARCH_MIPS32R2',
 | |
|                           'FPU_MODE_FP32',
 | |
|                         ],
 | |
|                       }],
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r1"', {
 | |
|                     'defines': [
 | |
|                       'FPU_MODE_FP32',
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="rx"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32RX',
 | |
|                       'FPU_MODE_FPXX',
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="loongson"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_LOONGSON',
 | |
|                       'FPU_MODE_FP32',
 | |
|                     ],
 | |
|                   }],
 | |
|                 ],
 | |
|               }],
 | |
|             ],
 | |
|           }], #_toolset=="target
 | |
|           ['_toolset=="host"', {
 | |
|             'conditions': [
 | |
|               ['mips_arch_variant=="rx"', {
 | |
|                 'defines': [
 | |
|                   '_MIPS_ARCH_MIPS32RX',
 | |
|                   'FPU_MODE_FPXX',
 | |
|                 ],
 | |
|               }],
 | |
|               ['mips_arch_variant=="r6"', {
 | |
|                 'defines': [
 | |
|                   '_MIPS_ARCH_MIPS32R6',
 | |
|                   'FPU_MODE_FP64',
 | |
|                 ],
 | |
|               }],
 | |
|               ['mips_arch_variant=="r2"', {
 | |
|                 'conditions': [
 | |
|                   ['mips_fpu_mode=="fp64"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R2',
 | |
|                       'FPU_MODE_FP64',
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_fpu_mode=="fpxx"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R2',
 | |
|                       'FPU_MODE_FPXX',
 | |
|                     ],
 | |
|                   }],
 | |
|                   ['mips_fpu_mode=="fp32"', {
 | |
|                     'defines': [
 | |
|                       '_MIPS_ARCH_MIPS32R2',
 | |
|                       'FPU_MODE_FP32'
 | |
|                     ],
 | |
|                   }],
 | |
|                 ],
 | |
|               }],
 | |
|               ['mips_arch_variant=="r1"', {
 | |
|                 'defines': ['FPU_MODE_FP32',],
 | |
|               }],
 | |
|               ['mips_arch_variant=="loongson"', {
 | |
|                 'defines': [
 | |
|                   '_MIPS_ARCH_LOONGSON',
 | |
|                   'FPU_MODE_FP32',
 | |
|                 ],
 | |
|               }],
 | |
|             ]
 | |
|           }],
 | |
|         ],
 | |
|       }],  # v8_target_arch=="mipsel"
 | |
|       ['v8_target_arch=="mips64el" or v8_target_arch=="mips64"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_MIPS64',
 | |
|         ],
 | |
|         'conditions': [
 | |
|           [ 'v8_can_use_fpu_instructions=="true"', {
 | |
|             'defines': [
 | |
|               'CAN_USE_FPU_INSTRUCTIONS',
 | |
|             ],
 | |
|           }],
 | |
|           [ 'v8_host_byteorder=="little"', {
 | |
|             'defines': [
 | |
|               'V8_TARGET_ARCH_MIPS64_LE',
 | |
|             ],
 | |
|           }],
 | |
|           [ 'v8_host_byteorder=="big"', {
 | |
|             'defines': [
 | |
|               'V8_TARGET_ARCH_MIPS64_BE',
 | |
|             ],
 | |
|           }],
 | |
|           [ 'v8_use_mips_abi_hardfloat=="true"', {
 | |
|             'defines': [
 | |
|               '__mips_hard_float=1',
 | |
|               'CAN_USE_FPU_INSTRUCTIONS',
 | |
|             ],
 | |
|           }, {
 | |
|             'defines': [
 | |
|               '__mips_soft_float=1'
 | |
|             ],
 | |
|           }],
 | |
|          ],
 | |
|         'target_conditions': [
 | |
|           ['_toolset=="target"', {
 | |
|             'conditions': [
 | |
|               ['v8_target_arch==target_arch', {
 | |
|                 'cflags': [
 | |
|                   '-Wno-error=array-bounds',  # Workaround https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56273
 | |
|                 ],
 | |
|                 'conditions': [
 | |
|                   ['v8_target_arch=="mips64el"', {
 | |
|                     'cflags': ['-EL'],
 | |
|                     'ldflags': ['-EL'],
 | |
|                   }],
 | |
|                   ['v8_target_arch=="mips64"', {
 | |
|                     'cflags': ['-EB'],
 | |
|                     'ldflags': ['-EB'],
 | |
|                   }],
 | |
|                   [ 'v8_use_mips_abi_hardfloat=="true"', {
 | |
|                     'cflags': ['-mhard-float'],
 | |
|                     'ldflags': ['-mhard-float'],
 | |
|                   }, {
 | |
|                     'cflags': ['-msoft-float'],
 | |
|                     'ldflags': ['-msoft-float'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r6"', {
 | |
|                     'defines': ['_MIPS_ARCH_MIPS64R6',],
 | |
|                     'conditions': [
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips64r6'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips64r6', '-mabi=64'],
 | |
|                     'ldflags': ['-mips64r6', '-mabi=64'],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r2"', {
 | |
|                     'defines': ['_MIPS_ARCH_MIPS64R2',],
 | |
|                     'conditions': [
 | |
|                       [ 'clang==0', {
 | |
|                         'cflags': ['-Wa,-mips64r2'],
 | |
|                       }],
 | |
|                     ],
 | |
|                     'cflags': ['-mips64r2', '-mabi=64'],
 | |
|                     'ldflags': ['-mips64r2', '-mabi=64'],
 | |
|                   }],
 | |
|                 ],
 | |
|               }, {
 | |
|                 # 'v8_target_arch!=target_arch'
 | |
|                 # Target not built with an MIPS CXX compiler (simulator build).
 | |
|                 'conditions': [
 | |
|                   ['mips_arch_variant=="r6"', {
 | |
|                     'defines': ['_MIPS_ARCH_MIPS64R6',],
 | |
|                   }],
 | |
|                   ['mips_arch_variant=="r2"', {
 | |
|                     'defines': ['_MIPS_ARCH_MIPS64R2',],
 | |
|                   }],
 | |
|                 ],
 | |
|               }],
 | |
|             ],
 | |
|           }],  #'_toolset=="target"
 | |
|           ['_toolset=="host"', {
 | |
|             'conditions': [
 | |
|               ['mips_arch_variant=="r6"', {
 | |
|                 'defines': ['_MIPS_ARCH_MIPS64R6',],
 | |
|               }],
 | |
|               ['mips_arch_variant=="r2"', {
 | |
|                 'defines': ['_MIPS_ARCH_MIPS64R2',],
 | |
|               }],
 | |
|             ],
 | |
|           }],  #'_toolset=="host"
 | |
|         ],
 | |
|       }],  # v8_target_arch=="mips64el"
 | |
|       ['v8_target_arch=="x64"', {
 | |
|         'defines': [
 | |
|           'V8_TARGET_ARCH_X64',
 | |
|         ],
 | |
|         'xcode_settings': {
 | |
|           'ARCHS': [ 'x86_64' ],
 | |
|         },
 | |
|         'msvs_settings': {
 | |
|           'VCLinkerTool': {
 | |
|             'StackReserveSize': '2097152',
 | |
|           },
 | |
|         },
 | |
|         'msvs_configuration_platform': 'x64',
 | |
|       }],  # v8_target_arch=="x64"
 | |
|       ['v8_target_arch=="x32"', {
 | |
|         'defines': [
 | |
|           # x32 port shares the source code with x64 port.
 | |
|           'V8_TARGET_ARCH_X64',
 | |
|           'V8_TARGET_ARCH_32_BIT',
 | |
|         ],
 | |
|         'cflags': [
 | |
|           '-mx32',
 | |
|           # Inhibit warning if long long type is used.
 | |
|           '-Wno-long-long',
 | |
|         ],
 | |
|         'ldflags': [
 | |
|           '-mx32',
 | |
|         ],
 | |
|       }],  # v8_target_arch=="x32"
 | |
|       ['linux_use_gold_flags==1', {
 | |
|         # Newer gccs and clangs support -fuse-ld, use the flag to force gold
 | |
|         # selection.
 | |
|         # gcc -- http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Optimize-Options.html
 | |
|         'ldflags': [ '-fuse-ld=gold', ],
 | |
|       }],
 | |
|       ['linux_use_bundled_binutils==1', {
 | |
|         'cflags': [
 | |
|           '-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)',
 | |
|         ],
 | |
|       }],
 | |
|       ['linux_use_bundled_gold==1', {
 | |
|         # Put our binutils, which contains gold in the search path. We pass
 | |
|         # the path to gold to the compiler. gyp leaves unspecified what the
 | |
|         # cwd is when running the compiler, so the normal gyp path-munging
 | |
|         # fails us. This hack gets the right path.
 | |
|         'ldflags': [
 | |
|           '-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)',
 | |
|         ],
 | |
|       }],
 | |
|       ['OS=="win"', {
 | |
|         'defines': [
 | |
|           'WIN32',
 | |
|         ],
 | |
|         # 4351: VS 2005 and later are warning us that they've fixed a bug
 | |
|         #       present in VS 2003 and earlier.
 | |
|         'msvs_disabled_warnings': [4351],
 | |
|         'msvs_configuration_attributes': {
 | |
|           'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)',
 | |
|           'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
 | |
|           'CharacterSet': '1',
 | |
|         },
 | |
|       }],
 | |
|       ['OS=="win" and v8_target_arch=="ia32"', {
 | |
|         'msvs_settings': {
 | |
|           'VCCLCompilerTool': {
 | |
|             # Ensure no surprising artifacts from 80bit double math with x86.
 | |
|             'AdditionalOptions': ['/arch:SSE2'],
 | |
|           },
 | |
|         },
 | |
|       }],
 | |
|       ['OS=="win" and v8_enable_prof==1', {
 | |
|         'msvs_settings': {
 | |
|           'VCLinkerTool': {
 | |
|             'GenerateMapFile': 'true',
 | |
|           },
 | |
|         },
 | |
|       }],
 | |
|       ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
 | |
|          or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \
 | |
|         v8_target_arch=="ia32"', {
 | |
|         'cflags': [
 | |
|           '-msse2',
 | |
|           '-mfpmath=sse',
 | |
|           '-mmmx',  # Allows mmintrin.h for MMX intrinsics.
 | |
|         ],
 | |
|       }],
 | |
|       ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
 | |
|          or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \
 | |
|         (v8_target_arch=="arm" or v8_target_arch=="ia32" or \
 | |
|          v8_target_arch=="x87" or v8_target_arch=="mips" or \
 | |
|          v8_target_arch=="mipsel" or v8_target_arch=="ppc" or \
 | |
|          v8_target_arch=="s390")', {
 | |
|         'target_conditions': [
 | |
|           ['_toolset=="host"', {
 | |
|             'conditions': [
 | |
|               ['host_cxx_is_biarch==1', {
 | |
|                 'conditions': [
 | |
|                   ['host_arch=="s390" or host_arch=="s390x"', {
 | |
|                     'cflags': [ '-m31' ],
 | |
|                     'ldflags': [ '-m31' ]
 | |
|                   },{
 | |
|                    'cflags': [ '-m32' ],
 | |
|                    'ldflags': [ '-m32' ]
 | |
|                   }],
 | |
|                 ],
 | |
|               }],
 | |
|             ],
 | |
|             'xcode_settings': {
 | |
|               'ARCHS': [ 'i386' ],
 | |
|             },
 | |
|           }],
 | |
|           ['_toolset=="target"', {
 | |
|             'conditions': [
 | |
|               ['target_cxx_is_biarch==1', {
 | |
|                 'conditions': [
 | |
|                   ['host_arch=="s390" or host_arch=="s390x"', {
 | |
|                     'cflags': [ '-m31' ],
 | |
|                     'ldflags': [ '-m31' ]
 | |
|                   },{
 | |
|                    'cflags': [ '-m32' ],
 | |
|                    'ldflags': [ '-m32' ],
 | |
|                   }],
 | |
|                 ],
 | |
|               }],
 | |
|             ],
 | |
|             'xcode_settings': {
 | |
|               'ARCHS': [ 'i386' ],
 | |
|             },
 | |
|           }],
 | |
|         ],
 | |
|       }],
 | |
|       ['(OS=="linux" or OS=="android") and \
 | |
|         (v8_target_arch=="x64" or v8_target_arch=="arm64" or \
 | |
|          v8_target_arch=="ppc64" or v8_target_arch=="s390x")', {
 | |
|         'target_conditions': [
 | |
|           ['_toolset=="host"', {
 | |
|             'conditions': [
 | |
|               ['host_cxx_is_biarch==1', {
 | |
|                 'cflags': [ '-m64' ],
 | |
|                 'ldflags': [ '-m64' ]
 | |
|               }],
 | |
|              ],
 | |
|            }],
 | |
|            ['_toolset=="target"', {
 | |
|              'conditions': [
 | |
|                ['target_cxx_is_biarch==1', {
 | |
|                  'cflags': [ '-m64' ],
 | |
|                  'ldflags': [ '-m64' ],
 | |
|                }],
 | |
|              ]
 | |
|            }],
 | |
|          ],
 | |
|       }],
 | |
|       ['OS=="android" and v8_android_log_stdout==1', {
 | |
|         'defines': [
 | |
|           'V8_ANDROID_LOG_STDOUT',
 | |
|         ],
 | |
|       }],
 | |
|       ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
 | |
|          or OS=="netbsd" or OS=="qnx" or OS=="aix"', {
 | |
|         'conditions': [
 | |
|           [ 'v8_no_strict_aliasing==1', {
 | |
|             'cflags': [ '-fno-strict-aliasing' ],
 | |
|           }],
 | |
|         ],  # conditions
 | |
|       }],
 | |
|       ['OS=="solaris"', {
 | |
|         'defines': [ '__C99FEATURES__=1' ],  # isinf() etc.
 | |
|       }],
 | |
|       ['OS=="freebsd" or OS=="openbsd"', {
 | |
|         'cflags': [ '-I/usr/local/include' ],
 | |
|       }],
 | |
|       ['OS=="netbsd"', {
 | |
|         'cflags': [ '-I/usr/pkg/include' ],
 | |
|       }],
 | |
|       ['OS=="aix"', {
 | |
|         'defines': [
 | |
|           # Support for malloc(0)
 | |
|           '_LINUX_SOURCE_COMPAT=1',
 | |
|           '__STDC_FORMAT_MACROS',
 | |
|           '_ALL_SOURCE=1'],
 | |
|         'conditions': [
 | |
|           [ 'v8_target_arch=="ppc"', {
 | |
|             'ldflags': [ '-Wl,-bmaxdata:0x60000000/dsa' ],
 | |
|           }],
 | |
|           [ 'v8_target_arch=="ppc64"', {
 | |
|             'cflags': [ '-maix64' ],
 | |
|             'ldflags': [ '-maix64 -Wl,-bbigtoc' ],
 | |
|           }],
 | |
|         ],
 | |
|       }],
 | |
|     ],  # conditions
 | |
|     'configurations': {
 | |
|       # Abstract configuration for v8_optimized_debug == 0.
 | |
|       'DebugBase0': {
 | |
|         'abstract': 1,
 | |
|         'msvs_settings': {
 | |
|           'VCCLCompilerTool': {
 | |
|             'Optimization': '0',
 | |
|             'conditions': [
 | |
|               ['component=="shared_library" or force_dynamic_crt==1', {
 | |
|                 'RuntimeLibrary': '3',  # /MDd
 | |
|               }, {
 | |
|                 'RuntimeLibrary': '1',  # /MTd
 | |
|               }],
 | |
|             ],
 | |
|           },
 | |
|           'VCLinkerTool': {
 | |
|             'LinkIncremental': '2',
 | |
|           },
 | |
|         },
 | |
|         'variables': {
 | |
|           'v8_enable_slow_dchecks%': 1,
 | |
|         },
 | |
|         'conditions': [
 | |
|           ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
 | |
|             OS=="qnx" or OS=="aix"', {
 | |
|             'cflags!': [
 | |
|               '-O3',
 | |
|               '-O2',
 | |
|               '-O1',
 | |
|               '-Os',
 | |
|             ],
 | |
|             'cflags': [
 | |
|               '-fdata-sections',
 | |
|               '-ffunction-sections',
 | |
|             ],
 | |
|           }],
 | |
|           ['OS=="mac"', {
 | |
|             'xcode_settings': {
 | |
|                'GCC_OPTIMIZATION_LEVEL': '0',  # -O0
 | |
|             },
 | |
|           }],
 | |
|           ['v8_enable_slow_dchecks==1', {
 | |
|             'defines': [
 | |
|               'ENABLE_SLOW_DCHECKS',
 | |
|             ],
 | |
|           }],
 | |
|         ],
 | |
|       },  # DebugBase0
 | |
|       # Abstract configuration for v8_optimized_debug == 1.
 | |
|       'DebugBase1': {
 | |
|         'abstract': 1,
 | |
|         'msvs_settings': {
 | |
|           'VCCLCompilerTool': {
 | |
|             'Optimization': '2',
 | |
|             'InlineFunctionExpansion': '2',
 | |
|             'EnableIntrinsicFunctions': 'true',
 | |
|             'FavorSizeOrSpeed': '0',
 | |
|             'StringPooling': 'true',
 | |
|             'BasicRuntimeChecks': '0',
 | |
|             'conditions': [
 | |
|               ['component=="shared_library" or force_dynamic_crt==1', {
 | |
|                 'RuntimeLibrary': '3',  #/MDd
 | |
|               }, {
 | |
|                 'RuntimeLibrary': '1',  #/MTd
 | |
|               }],
 | |
|             ],
 | |
|           },
 | |
|           'VCLinkerTool': {
 | |
|             'LinkIncremental': '1',
 | |
|             'OptimizeReferences': '2',
 | |
|             'EnableCOMDATFolding': '2',
 | |
|           },
 | |
|         },
 | |
|         'variables': {
 | |
|           'v8_enable_slow_dchecks%': 0,
 | |
|         },
 | |
|         'conditions': [
 | |
|           ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
 | |
|             OS=="qnx" or OS=="aix"', {
 | |
|             'cflags!': [
 | |
|               '-O0',
 | |
|               '-O1',
 | |
|               '-Os',
 | |
|             ],
 | |
|             'cflags': [
 | |
|               '-fdata-sections',
 | |
|               '-ffunction-sections',
 | |
|             ],
 | |
|             'conditions': [
 | |
|               # Don't use -O3 with sanitizers.
 | |
|               ['asan==0 and msan==0 and lsan==0 \
 | |
|                 and tsan==0 and ubsan==0 and ubsan_vptr==0', {
 | |
|                 'cflags': ['-O3'],
 | |
|                 'cflags!': ['-O2'],
 | |
|                 }, {
 | |
|                 'cflags': ['-O2'],
 | |
|                 'cflags!': ['-O3'],
 | |
|               }],
 | |
|             ],
 | |
|           }],
 | |
|           ['OS=="mac"', {
 | |
|             'xcode_settings': {
 | |
|               'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
 | |
|               'GCC_STRICT_ALIASING': 'YES',
 | |
|             },
 | |
|           }],
 | |
|           ['v8_enable_slow_dchecks==1', {
 | |
|             'defines': [
 | |
|               'ENABLE_SLOW_DCHECKS',
 | |
|             ],
 | |
|           }],
 | |
|         ],
 | |
|       },  # DebugBase1
 | |
|       # Common settings for the Debug configuration.
 | |
|       'DebugBaseCommon': {
 | |
|         'abstract': 1,
 | |
|         'defines': [
 | |
|           'ENABLE_DISASSEMBLER',
 | |
|           'V8_ENABLE_CHECKS',
 | |
|           'OBJECT_PRINT',
 | |
|           'VERIFY_HEAP',
 | |
|           'DEBUG',
 | |
|           'TRACE_MAPS'
 | |
|         ],
 | |
|         'conditions': [
 | |
|           ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \
 | |
|             OS=="qnx" or OS=="aix"', {
 | |
|             'cflags': [ '-Woverloaded-virtual', '<(wno_array_bounds)', ],
 | |
|           }],
 | |
|           ['OS=="linux" and v8_enable_backtrace==1', {
 | |
|             # Support for backtrace_symbols.
 | |
|             'ldflags': [ '-rdynamic' ],
 | |
|           }],
 | |
|           ['OS=="linux" and disable_glibcxx_debug==0', {
 | |
|             # Enable libstdc++ debugging facilities to help catch problems
 | |
|             # early, see http://crbug.com/65151 .
 | |
|             'defines': ['_GLIBCXX_DEBUG=1',],
 | |
|           }],
 | |
|           ['OS=="aix"', {
 | |
|             'ldflags': [ '-Wl,-bbigtoc' ],
 | |
|             'conditions': [
 | |
|               ['v8_target_arch=="ppc64"', {
 | |
|                 'cflags': [ '-maix64 -mcmodel=large' ],
 | |
|               }],
 | |
|             ],
 | |
|           }],
 | |
|           ['OS=="android"', {
 | |
|             'variables': {
 | |
|               'android_full_debug%': 1,
 | |
|             },
 | |
|             'conditions': [
 | |
|               ['android_full_debug==0', {
 | |
|                 # Disable full debug if we want a faster v8 in a debug build.
 | |
|                 # TODO(2304): pass DISABLE_DEBUG_ASSERT instead of hiding DEBUG.
 | |
|                 'defines!': [
 | |
|                   'DEBUG',
 | |
|                   'ENABLE_SLOW_DCHECKS',
 | |
|                 ],
 | |
|               }],
 | |
|             ],
 | |
|           }],
 | |
|           # TODO(pcc): Re-enable in LTO builds once we've fixed the intermittent
 | |
|           # link failures (crbug.com/513074).
 | |
|           ['linux_use_gold_flags==1 and use_lto==0', {
 | |
|             'target_conditions': [
 | |
|               ['_toolset=="target"', {
 | |
|                 'ldflags': [
 | |
|                   # Experimentation found that using four linking threads
 | |
|                   # saved ~20% of link time.
 | |
|                   # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/281527606915bb36
 | |
|                   # Only apply this to the target linker, since the host
 | |
|                   # linker might not be gold, but isn't used much anyway.
 | |
|                   '-Wl,--threads',
 | |
|                   '-Wl,--thread-count=4',
 | |
|                 ],
 | |
|               }],
 | |
|             ],
 | |
|           }],
 | |
|         ],
 | |
|       },  # DebugBaseCommon
 | |
|       'Debug': {
 | |
|         'inherit_from': ['DebugBaseCommon'],
 | |
|         'conditions': [
 | |
|           ['v8_optimized_debug==0', {
 | |
|             'inherit_from': ['DebugBase0'],
 | |
|           }, {
 | |
|             'inherit_from': ['DebugBase1'],
 | |
|           }],
 | |
|         ],
 | |
|       },  # Debug
 | |
|       'ReleaseBase': {
 | |
|         'abstract': 1,
 | |
|         'variables': {
 | |
|           'v8_enable_slow_dchecks%': 0,
 | |
|         },
 | |
|         'conditions': [
 | |
|           ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" \
 | |
|             or OS=="aix"', {
 | |
|             'cflags!': [
 | |
|               '-Os',
 | |
|             ],
 | |
|             'cflags': [
 | |
|               '-fdata-sections',
 | |
|               '-ffunction-sections',
 | |
|               '<(wno_array_bounds)',
 | |
|             ],
 | |
|             'conditions': [
 | |
|               # Don't use -O3 with sanitizers.
 | |
|               ['asan==0 and msan==0 and lsan==0 \
 | |
|                 and tsan==0 and ubsan==0 and ubsan_vptr==0', {
 | |
|                 'cflags': ['-O3'],
 | |
|                 'cflags!': ['-O2'],
 | |
|               }, {
 | |
|                 'cflags': ['-O2'],
 | |
|                 'cflags!': ['-O3'],
 | |
|               }],
 | |
|             ],
 | |
|           }],
 | |
|           ['OS=="android"', {
 | |
|             'cflags!': [
 | |
|               '-O3',
 | |
|               '-Os',
 | |
|             ],
 | |
|             'cflags': [
 | |
|               '-fdata-sections',
 | |
|               '-ffunction-sections',
 | |
|               '-O2',
 | |
|             ],
 | |
|           }],
 | |
|           ['OS=="mac"', {
 | |
|             'xcode_settings': {
 | |
|               'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
 | |
| 
 | |
|               # -fstrict-aliasing.  Mainline gcc
 | |
|               # enables this at -O2 and above,
 | |
|               # but Apple gcc does not unless it
 | |
|               # is specified explicitly.
 | |
|               'GCC_STRICT_ALIASING': 'YES',
 | |
|             },
 | |
|           }],  # OS=="mac"
 | |
|           ['OS=="win"', {
 | |
|             'msvs_settings': {
 | |
|               'VCCLCompilerTool': {
 | |
|                 'Optimization': '2',
 | |
|                 'InlineFunctionExpansion': '2',
 | |
|                 'EnableIntrinsicFunctions': 'true',
 | |
|                 'FavorSizeOrSpeed': '0',
 | |
|                 'StringPooling': 'true',
 | |
|                 'conditions': [
 | |
|                   ['component=="shared_library" or force_dynamic_crt==1', {
 | |
|                     'RuntimeLibrary': '2',  #/MD
 | |
|                   }, {
 | |
|                     'RuntimeLibrary': '0',  #/MT
 | |
|                   }],
 | |
|                 ],
 | |
|               },
 | |
|               'VCLinkerTool': {
 | |
|                 'LinkIncremental': '1',
 | |
|                 'OptimizeReferences': '2',
 | |
|                 'EnableCOMDATFolding': '2',
 | |
|               },
 | |
|             },
 | |
|           }],  # OS=="win"
 | |
|           ['v8_enable_slow_dchecks==1', {
 | |
|             'defines': [
 | |
|               'ENABLE_SLOW_DCHECKS',
 | |
|             ],
 | |
|           }],
 | |
|         ],  # conditions
 | |
|       },  # Release
 | |
|       'Release': {
 | |
|         'inherit_from': ['ReleaseBase'],
 | |
|       },  # Debug
 | |
|       'conditions': [
 | |
|         [ 'OS=="win"', {
 | |
|           # TODO(bradnelson): add a gyp mechanism to make this more graceful.
 | |
|           'Debug_x64': {
 | |
|             'inherit_from': ['DebugBaseCommon'],
 | |
|             'conditions': [
 | |
|               ['v8_optimized_debug==0', {
 | |
|                 'inherit_from': ['DebugBase0'],
 | |
|               }, {
 | |
|                 'inherit_from': ['DebugBase1'],
 | |
|               }],
 | |
|             ],
 | |
|           },
 | |
|           'Release_x64': {
 | |
|             'inherit_from': ['ReleaseBase'],
 | |
|           },
 | |
|         }],
 | |
|       ],
 | |
|     },  # configurations
 | |
|   },  # target_defaults
 | |
| }
 |