mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
The previous commit removes our patch that builds V8 at -O2 rather than -O3 so there is not much point in keeping the configure switch around. The reason it did so was to work around an assortment of compiler and linker bugs. In particular, certain combinations of g++ and binutils generate bad or no code when -ffunction-sections or -finline-functions is enabled (which -O3 implicitly does.) It was quite the problem back in the day because everyone and his dog built from source. Now that we have prebuilt binaries and packages available, there is no longer a pressing need to be so accommodating. If you experience spurious (or possibly not so spurious) segmentation faults after this commit, you need to upgrade your compiler/linker toolchain.
223 lines
7.6 KiB
Python
223 lines
7.6 KiB
Python
{
|
|
'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,
|
|
'python%': 'python',
|
|
|
|
# Enable V8's post-mortem debugging only on unix flavors.
|
|
'conditions': [
|
|
['OS == "win"', {
|
|
'v8_postmortem_support': 'false'
|
|
}, {
|
|
'v8_postmortem_support': 'true'
|
|
}]
|
|
],
|
|
},
|
|
|
|
'target_defaults': {
|
|
'default_configuration': 'Release',
|
|
'configurations': {
|
|
'Debug': {
|
|
'defines': [ 'DEBUG', '_DEBUG' ],
|
|
'cflags': [ '-g', '-O0' ],
|
|
'conditions': [
|
|
['target_arch=="x64"', {
|
|
'msvs_configuration_platform': 'x64',
|
|
}],
|
|
],
|
|
'msvs_settings': {
|
|
'VCCLCompilerTool': {
|
|
'RuntimeLibrary': 1, # static debug
|
|
'Optimization': 0, # /Od, no optimization
|
|
'MinimalRebuild': 'false',
|
|
'OmitFramePointers': 'false',
|
|
'BasicRuntimeChecks': 3, # /RTC1
|
|
},
|
|
'VCLinkerTool': {
|
|
'LinkIncremental': 2, # enable incremental linking
|
|
},
|
|
},
|
|
'xcode_settings': {
|
|
'GCC_OPTIMIZATION_LEVEL': '0', # stop gyp from defaulting to -Os
|
|
},
|
|
},
|
|
'Release': {
|
|
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
|
|
'ldflags': [ '-Wl,--gc-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' ]
|
|
}],
|
|
['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.
|
|
}],
|
|
],
|
|
'msvs_settings': {
|
|
'VCCLCompilerTool': {
|
|
'RuntimeLibrary': 0, # static release
|
|
'Optimization': 3, # /Ox, full optimization
|
|
'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
|
|
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
|
|
'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG
|
|
'OmitFramePointers': 'true',
|
|
'EnableFunctionLevelLinking': 'true',
|
|
'EnableIntrinsicFunctions': 'true',
|
|
'RuntimeTypeInfo': 'false',
|
|
'ExceptionHandling': '0',
|
|
'AdditionalOptions': [
|
|
'/MP', # compile across multiple CPUs
|
|
],
|
|
},
|
|
'VCLibrarianTool': {
|
|
'AdditionalOptions': [
|
|
'/LTCG', # link time code generation
|
|
],
|
|
},
|
|
'VCLinkerTool': {
|
|
'LinkTimeCodeGeneration': 1, # link-time code generation
|
|
'OptimizeReferences': 2, # /OPT:REF
|
|
'EnableCOMDATFolding': 2, # /OPT:ICF
|
|
'LinkIncremental': 1, # disable incremental linking
|
|
},
|
|
},
|
|
}
|
|
},
|
|
'msvs_settings': {
|
|
'VCCLCompilerTool': {
|
|
'StringPooling': 'true', # pool string literals
|
|
'DebugInformationFormat': 3, # Generate a PDB
|
|
'WarningLevel': 3,
|
|
'BufferSecurityCheck': 'true',
|
|
'ExceptionHandling': 1, # /EHsc
|
|
'SuppressStartupBanner': 'true',
|
|
'WarnAsError': 'false',
|
|
},
|
|
'VCLibrarianTool': {
|
|
},
|
|
'VCLinkerTool': {
|
|
'conditions': [
|
|
['target_arch=="x64"', {
|
|
'TargetMachine' : 17 # /MACHINE:X64
|
|
}],
|
|
],
|
|
'GenerateDebugInformation': 'true',
|
|
'RandomizedBaseAddress': 2, # enable ASLR
|
|
'DataExecutionPrevention': 2, # enable DEP
|
|
'AllowIsolation': 'true',
|
|
'SuppressStartupBanner': 'true',
|
|
'target_conditions': [
|
|
['_type=="executable"', {
|
|
'SubSystem': 1, # console executable
|
|
}],
|
|
],
|
|
},
|
|
},
|
|
'conditions': [
|
|
['OS == "win"', {
|
|
'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin
|
|
'defines': [
|
|
'WIN32',
|
|
# we don't really want VC++ warning us about
|
|
# how dangerous C functions are...
|
|
'_CRT_SECURE_NO_DEPRECATE',
|
|
# ... or that C implementations shouldn't use
|
|
# POSIX names
|
|
'_CRT_NONSTDC_NO_DEPRECATE',
|
|
'BUILDING_V8_SHARED=1',
|
|
'BUILDING_UV_SHARED=1',
|
|
],
|
|
}],
|
|
[ 'OS in "linux freebsd openbsd solaris"', {
|
|
'cflags': [ '-pthread', ],
|
|
'ldflags': [ '-pthread' ],
|
|
}],
|
|
[ 'OS in "linux freebsd openbsd solaris android"', {
|
|
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
|
|
'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
|
|
'ldflags': [ '-rdynamic' ],
|
|
'target_conditions': [
|
|
['_type=="static_library"', {
|
|
'standalone_static_library': 1, # disable thin archive which needs binutils >= 2.19
|
|
}],
|
|
],
|
|
'conditions': [
|
|
[ 'target_arch=="ia32"', {
|
|
'cflags': [ '-m32' ],
|
|
'ldflags': [ '-m32' ],
|
|
}],
|
|
[ 'target_arch=="x64"', {
|
|
'cflags': [ '-m64' ],
|
|
'ldflags': [ '-m64' ],
|
|
}],
|
|
[ 'OS=="solaris"', {
|
|
'cflags': [ '-pthreads' ],
|
|
'ldflags': [ '-pthreads' ],
|
|
'cflags!': [ '-pthread' ],
|
|
'ldflags!': [ '-pthread' ],
|
|
}],
|
|
],
|
|
}],
|
|
[ 'OS=="android"', {
|
|
'defines': ['_GLIBCXX_USE_C99_MATH'],
|
|
'libraries': [ '-llog' ],
|
|
}],
|
|
['OS=="mac"', {
|
|
'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
|
|
'xcode_settings': {
|
|
'ALWAYS_SEARCH_USER_PATHS': 'NO',
|
|
'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
|
|
'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic
|
|
# (Equivalent to -fPIC)
|
|
'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
|
|
'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
|
|
'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
|
|
'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
|
|
'PREBINDING': 'NO', # No -Wl,-prebind
|
|
'MACOSX_DEPLOYMENT_TARGET': '10.5', # -mmacosx-version-min=10.5
|
|
'USE_HEADERMAP': 'NO',
|
|
'OTHER_CFLAGS': [
|
|
'-fno-strict-aliasing',
|
|
],
|
|
'WARNING_CFLAGS': [
|
|
'-Wall',
|
|
'-Wendif-labels',
|
|
'-W',
|
|
'-Wno-unused-parameter',
|
|
],
|
|
},
|
|
'target_conditions': [
|
|
['_type!="static_library"', {
|
|
'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
|
|
}],
|
|
],
|
|
'conditions': [
|
|
['target_arch=="ia32"', {
|
|
'xcode_settings': {'ARCHS': ['i386']},
|
|
}],
|
|
['target_arch=="x64"', {
|
|
'xcode_settings': {'ARCHS': ['x86_64']},
|
|
}],
|
|
],
|
|
}],
|
|
['OS=="freebsd" and node_use_dtrace=="true"', {
|
|
'libraries': [ '-lelf' ],
|
|
}]
|
|
],
|
|
}
|
|
}
|