{
'variables': {
- 'visibility%': 'hidden', # V8's visibility setting
- 'target_arch%': 'ia32', # set v8's target architecture
- 'host_arch%': 'ia32', # set v8's host architecture
- 'want_separate_host_toolset': 0, # V8 should not build target and host
- 'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
- 'component%': 'static_library', # NB. these names match with what V8 expects
- 'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
- 'gcc_version%': 'unknown',
- 'clang%': 0,
+ 'asan%': 0,
+ 'werror': '', # Turn off -Werror in V8 build.
+ 'visibility%': 'hidden', # V8's visibility setting
+ 'target_arch%': 'ia32', # set v8's target architecture
+ 'host_arch%': 'ia32', # set v8's host architecture
+ 'want_separate_host_toolset%': 0, # V8 should not build target and host
+ 'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
+ 'component%': 'static_library', # NB. these names match with what V8 expects
+ 'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
'python%': 'python',
- # Enable V8's post-mortem debugging only on unix flavors.
+ 'node_tag%': '',
+ 'uv_library%': 'static_library',
+
+ # Default to -O0 for debug builds.
+ 'v8_optimized_debug%': 0,
+
+ # Enable disassembler for `--print-code` v8 options
+ 'v8_enable_disassembler': 1,
+
+ # Don't bake anything extra into the snapshot.
+ 'v8_use_external_startup_data%': 0,
+
'conditions': [
['OS == "win"', {
- 'v8_postmortem_support': 'false'
+ 'os_posix': 0,
+ 'v8_postmortem_support%': 'false',
}, {
- 'v8_postmortem_support': 'true'
- }]
+ 'os_posix': 1,
+ 'v8_postmortem_support%': 'true',
+ }],
+ ['GENERATOR == "ninja" or OS== "mac"', {
+ 'OBJ_DIR': '<(PRODUCT_DIR)/obj',
+ 'V8_BASE': '<(PRODUCT_DIR)/libv8_base.a',
+ }, {
+ 'OBJ_DIR': '<(PRODUCT_DIR)/obj.target',
+ 'V8_BASE': '<(PRODUCT_DIR)/obj.target/deps/v8/tools/gyp/libv8_base.a',
+ }],
+ ['openssl_fips != ""', {
+ 'OPENSSL_PRODUCT': 'libcrypto.a',
+ }, {
+ 'OPENSSL_PRODUCT': 'libopenssl.a',
+ }],
+ ['OS=="mac"', {
+ 'clang%': 1,
+ }, {
+ 'clang%': 0,
+ }],
],
},
'default_configuration': 'Release',
'configurations': {
'Debug': {
+ 'variables': {
+ 'v8_enable_handle_zapping': 1,
+ },
'defines': [ 'DEBUG', '_DEBUG' ],
'cflags': [ '-g', '-O0' ],
'conditions': [
['target_arch=="x64"', {
'msvs_configuration_platform': 'x64',
}],
+ ['OS=="aix"', {
+ 'cflags': [ '-gxcoff' ],
+ 'ldflags': [ '-Wl,-bbigtoc' ],
+ }],
],
'msvs_settings': {
'VCCLCompilerTool': {
},
},
'Release': {
+ 'variables': {
+ 'v8_enable_handle_zapping': 0,
+ },
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
'conditions': [
['target_arch=="x64"', {
'msvs_configuration_platform': 'x64',
}],
['OS=="solaris"', {
- 'cflags': [ '-fno-omit-frame-pointer' ],
# pull in V8's postmortem metadata
'ldflags': [ '-Wl,-z,allextract' ]
- }, {
- # Doesn't work with the Solaris linker.
- 'ldflags': [ '-Wl,--gc-sections' ],
- }],
- ['clang == 0 and gcc_version >= 40', {
- 'cflags': [ '-fno-tree-vrp' ], # Work around compiler bug.
}],
- ['clang == 0 and gcc_version <= 44', {
- 'cflags': [ '-fno-tree-sink' ], # Work around compiler bug.
+ ['OS!="mac" and OS!="win"', {
+ 'cflags': [ '-fno-omit-frame-pointer' ],
}],
],
'msvs_settings': {
'EnableFunctionLevelLinking': 'true',
'EnableIntrinsicFunctions': 'true',
'RuntimeTypeInfo': 'false',
- 'ExceptionHandling': '0',
'AdditionalOptions': [
'/MP', # compile across multiple CPUs
],
},
}
},
+ # Forcibly disable -Werror. We support a wide range of compilers, it's
+ # simply not feasible to squelch all warnings, never mind that the
+ # libraries in deps/ are not under our control.
+ 'cflags!': ['-Werror'],
'msvs_settings': {
'VCCLCompilerTool': {
'StringPooling': 'true', # pool string literals
'DebugInformationFormat': 3, # Generate a PDB
'WarningLevel': 3,
'BufferSecurityCheck': 'true',
- 'ExceptionHandling': 1, # /EHsc
+ 'ExceptionHandling': 0, # /EHsc
'SuppressStartupBanner': 'true',
'WarnAsError': 'false',
},
},
'VCLinkerTool': {
'conditions': [
+ ['target_arch=="ia32"', {
+ 'TargetMachine' : 1, # /MACHINE:X86
+ 'target_conditions': [
+ ['_type=="executable"', {
+ 'AdditionalOptions': [ '/SubSystem:Console,"5.01"' ],
+ }],
+ ],
+ }],
['target_arch=="x64"', {
- 'TargetMachine' : 17 # /MACHINE:X64
+ 'TargetMachine' : 17, # /MACHINE:AMD64
+ 'target_conditions': [
+ ['_type=="executable"', {
+ 'AdditionalOptions': [ '/SubSystem:Console,"5.02"' ],
+ }],
+ ],
}],
],
'GenerateDebugInformation': 'true',
+ 'GenerateMapFile': 'true', # /MAP
+ 'MapExports': 'true', # /MAPINFO:EXPORTS
'RandomizedBaseAddress': 2, # enable ASLR
'DataExecutionPrevention': 2, # enable DEP
'AllowIsolation': 'true',
'SuppressStartupBanner': 'true',
- 'target_conditions': [
- ['_type=="executable"', {
- 'SubSystem': 1, # console executable
- }],
- ],
},
},
'msvs_disabled_warnings': [4351, 4355, 4800],
'conditions': [
+ ['asan == 1 and OS != "mac"', {
+ 'cflags+': [
+ '-fno-omit-frame-pointer',
+ '-fsanitize=address',
+ '-DLEAK_SANITIZER'
+ ],
+ 'cflags_cc+': [ '-gline-tables-only' ],
+ 'cflags!': [ '-fomit-frame-pointer' ],
+ 'ldflags': [ '-fsanitize=address' ],
+ }],
+ ['asan == 1 and OS == "mac"', {
+ 'xcode_settings': {
+ 'OTHER_CFLAGS+': [
+ '-fno-omit-frame-pointer',
+ '-gline-tables-only',
+ '-fsanitize=address',
+ '-DLEAK_SANITIZER'
+ ],
+ 'OTHER_CFLAGS!': [
+ '-fomit-frame-pointer',
+ ],
+ },
+ 'target_conditions': [
+ ['_type!="static_library"', {
+ 'xcode_settings': {'OTHER_LDFLAGS': ['-fsanitize=address']},
+ }],
+ ],
+ }],
['OS == "win"', {
'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin
'defines': [
# ... or that C implementations shouldn't use
# POSIX names
'_CRT_NONSTDC_NO_DEPRECATE',
+ # Make sure the STL doesn't try to use exceptions
+ '_HAS_EXCEPTIONS=0',
'BUILDING_V8_SHARED=1',
'BUILDING_UV_SHARED=1',
],
}],
- [ 'OS in "linux freebsd openbsd solaris"', {
+ [ 'OS in "linux freebsd openbsd solaris aix"', {
'cflags': [ '-pthread', ],
'ldflags': [ '-pthread' ],
}],
- [ 'OS in "linux freebsd openbsd solaris android"', {
+ [ 'OS in "linux freebsd openbsd solaris android aix"', {
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
- 'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
+ 'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++0x' ],
'ldflags': [ '-rdynamic' ],
'target_conditions': [
['_type=="static_library"', {
'cflags': [ '-m32' ],
'ldflags': [ '-m32' ],
}],
+ [ 'target_arch=="x32"', {
+ 'cflags': [ '-mx32' ],
+ 'ldflags': [ '-mx32' ],
+ }],
[ 'target_arch=="x64"', {
'cflags': [ '-m64' ],
'ldflags': [ '-m64' ],
}],
+ [ 'target_arch=="ppc" and OS!="aix"', {
+ 'cflags': [ '-m32' ],
+ 'ldflags': [ '-m32' ],
+ }],
+ [ 'target_arch=="ppc64" and OS!="aix"', {
+ 'cflags': [ '-m64', '-mminimal-toc' ],
+ 'ldflags': [ '-m64' ],
+ }],
[ 'OS=="solaris"', {
'cflags': [ '-pthreads' ],
'ldflags': [ '-pthreads' ],
'cflags!': [ '-pthread' ],
'ldflags!': [ '-pthread' ],
}],
+ [ 'OS=="aix"', {
+ 'conditions': [
+ [ 'target_arch=="ppc"', {
+ 'ldflags': [ '-Wl,-bmaxdata:0x60000000/dsa' ],
+ }],
+ [ 'target_arch=="ppc64"', {
+ 'cflags': [ '-maix64' ],
+ 'ldflags': [ '-maix64' ],
+ }],
+ ],
+ 'ldflags!': [ '-rdynamic' ],
+ }],
],
}],
[ 'OS=="android"', {
['target_arch=="x64"', {
'xcode_settings': {'ARCHS': ['x86_64']},
}],
+ ['clang==1', {
+ 'xcode_settings': {
+ 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
+ 'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++0x', # -std=gnu++0x
+ },
+ }],
],
}],
['OS=="freebsd" and node_use_dtrace=="true"', {
'libraries': [ '-lelf' ],
+ }],
+ ['OS=="freebsd"', {
+ 'ldflags': [
+ '-Wl,--export-dynamic',
+ ],
}]
],
}