Index: build/common.gypi |
diff --git a/build/common.gypi b/build/common.gypi |
index c41b2b2b626e95ed6a606d19b589615fae0957a0..6d374a654a3b550930ea28a089066b5cbcf19279 100644 |
--- a/build/common.gypi |
+++ b/build/common.gypi |
@@ -25,184 +25,247 @@ |
# (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': { |
- 'library%': 'static_library', |
- 'component%': 'static_library', |
- 'visibility%': 'hidden', |
- 'msvs_multi_core_compile%': '1', |
- 'variables': { |
- 'variables': { |
- 'conditions': [ |
- [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd"', { |
- # This handles the Linux platforms we generally deal with. Anything |
- # else gets passed through, which probably won't work very well; such |
- # hosts should pass an explicit target_arch to gyp. |
- 'host_arch%': |
- '<!(uname -m | sed -e "s/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/")', |
- }, { # OS!="linux" and OS!="freebsd" and OS!="openbsd" |
- 'host_arch%': 'ia32', |
- }], |
- ], |
- }, |
- 'host_arch%': '<(host_arch)', |
- 'target_arch%': '<(host_arch)', |
- 'v8_target_arch%': '<(target_arch)', |
- }, |
- 'host_arch%': '<(host_arch)', |
- 'target_arch%': '<(target_arch)', |
- 'v8_target_arch%': '<(v8_target_arch)', |
+ 'use_system_v8%': 0, |
+ 'msvs_use_common_release': 0, |
+ 'gcc_version%': 'unknown', |
+ 'v8_compress_startup_data%': 'off', |
+ 'v8_target_arch%': '<(target_arch)', |
+ |
+ # Setting 'v8_can_use_unaligned_accesses' to 'true' will allow the code |
+ # generated by V8 to do unaligned memory access, and setting it to 'false' |
+ # will ensure that the generated code will always do aligned memory |
+ # accesses. The default value of 'default' will try to determine the correct |
+ # setting. Note that for Intel architectures (ia32 and x64) unaligned memory |
+ # access is allowed for all CPUs. |
+ 'v8_can_use_unaligned_accesses%': 'default', |
+ |
+ # Setting 'v8_can_use_vfp_instructions' to 'true' will enable use of ARM VFP |
+ # instructions in the V8 generated code. VFP instructions will be enabled |
+ # both for the snapshot and for the ARM target. Leaving the default value |
+ # of 'false' will avoid VFP instructions in the snapshot and use CPU feature |
+ # probing when running on the target. |
+ 'v8_can_use_vfp_instructions%': 'false', |
+ |
+ # Setting v8_use_arm_eabi_hardfloat to true will turn on V8 support for ARM |
+ # EABI calling convention where double arguments are passed in VFP |
+ # registers. Note that the GCC flag '-mfloat-abi=hard' should be used as |
+ # well when compiling for the ARM target. |
+ 'v8_use_arm_eabi_hardfloat%': 'false', |
+ |
'v8_enable_debugger_support%': 1, |
- 'conditions': [ |
- ['(v8_target_arch=="arm" and host_arch!="arm") or \ |
- (v8_target_arch=="x64" and host_arch!="x64")', { |
- 'want_separate_host_toolset': 1, |
- }, { |
- 'want_separate_host_toolset': 0, |
- }], |
- ], |
+ |
+ # Chrome needs this definition unconditionally. For standalone V8 builds, |
+ # it's handled in build/standalone.gypi. |
+ 'want_separate_host_toolset%': 1, |
+ |
+ 'v8_use_snapshot%': 'true', |
+ 'host_os%': '<(OS)', |
+ 'v8_use_liveobjectlist%': 'false', |
}, |
'target_defaults': { |
- 'default_configuration': 'Debug', |
'conditions': [ |
['v8_enable_debugger_support==1', { |
'defines': ['ENABLE_DEBUGGER_SUPPORT',], |
}, |
], |
- ], |
- 'configurations': { |
- 'Debug': { |
- 'cflags': [ '-g', '-O0' ], |
- 'defines': [ 'ENABLE_DISASSEMBLER', 'DEBUG', 'V8_ENABLE_CHECKS', |
- 'OBJECT_PRINT' ], |
- }, |
- 'Release': { |
- 'cflags': [ '-O3', '-fomit-frame-pointer', '-fdata-sections', |
- '-ffunction-sections' ], |
- }, |
- }, |
- }, |
- 'conditions': [ |
- [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', { |
- 'target_defaults': { |
- 'cflags': [ '-Wall', '-Werror', '-W', '-Wno-unused-parameter', |
- '-Wnon-virtual-dtor', '-pthread', '-fno-rtti', |
- '-fno-exceptions', '-pedantic' ], |
- 'ldflags': [ '-pthread', ], |
+ ['OS!="mac"', { |
+ # TODO(mark): The OS!="mac" conditional is temporary. It can be |
+ # removed once the Mac Chromium build stops setting target_arch to |
+ # ia32 and instead sets it to mac. Other checks in this file for |
+ # OS=="mac" can be removed at that time as well. This can be cleaned |
+ # up once http://crbug.com/44205 is fixed. |
'conditions': [ |
- [ 'target_arch=="ia32"', { |
- 'cflags': [ '-m32' ], |
- 'ldflags': [ '-m32' ], |
+ ['v8_target_arch=="arm"', { |
+ 'defines': [ |
+ 'V8_TARGET_ARCH_ARM', |
+ ], |
+ 'conditions': [ |
+ [ 'v8_can_use_unaligned_accesses=="true"', { |
+ 'defines': [ |
+ 'CAN_USE_UNALIGNED_ACCESSES=1', |
+ ], |
+ }], |
+ [ 'v8_can_use_unaligned_accesses=="false"', { |
+ 'defines': [ |
+ 'CAN_USE_UNALIGNED_ACCESSES=0', |
+ ], |
+ }], |
+ [ 'v8_can_use_vfp_instructions=="true"', { |
+ 'defines': [ |
+ 'CAN_USE_VFP_INSTRUCTIONS', |
+ ], |
+ }], |
+ [ 'v8_use_arm_eabi_hardfloat=="true"', { |
+ 'defines': [ |
+ 'USE_EABI_HARDFLOAT=1', |
+ 'CAN_USE_VFP_INSTRUCTIONS', |
+ ], |
+ 'cflags': [ |
+ '-mfloat-abi=hard', |
+ ], |
+ }, { |
+ 'defines': [ |
+ 'USE_EABI_HARDFLOAT=0', |
+ ], |
+ }], |
+ # The ARM assembler assumes the host is 32 bits, |
+ # so force building 32-bit host tools. |
+ ['host_arch=="x64"', { |
+ 'target_conditions': [ |
+ ['_toolset=="host"', { |
+ 'cflags': ['-m32'], |
+ 'ldflags': ['-m32'], |
+ }], |
+ ], |
+ }], |
+ ], |
}], |
- [ 'OS=="linux"', { |
- 'cflags': [ '-ansi' ], |
+ ['v8_target_arch=="ia32"', { |
+ 'defines': [ |
+ 'V8_TARGET_ARCH_IA32', |
+ ], |
}], |
- [ 'visibility=="hidden"', { |
- 'cflags': [ '-fvisibility=hidden' ], |
+ ['v8_target_arch=="mips"', { |
+ 'defines': [ |
+ 'V8_TARGET_ARCH_MIPS', |
+ ], |
}], |
- ], |
- }, |
- }], # 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"' |
- ['OS=="win"', { |
- 'target_defaults': { |
- 'defines': [ |
- 'WIN32', |
- '_CRT_SECURE_NO_DEPRECATE', |
- '_CRT_NONSTDC_NO_DEPRECATE', |
- ], |
- 'conditions': [ |
- ['component=="static_library"', { |
+ ['v8_target_arch=="x64"', { |
'defines': [ |
- '_HAS_EXCEPTIONS=0', |
+ 'V8_TARGET_ARCH_X64', |
], |
}], |
- ], |
- 'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'], |
- 'msvs_disabled_warnings': [4355, 4800], |
+ ], |
+ }], |
+ ['v8_use_liveobjectlist=="true"', { |
+ 'defines': [ |
+ 'ENABLE_DEBUGGER_SUPPORT', |
+ 'INSPECTOR', |
+ 'OBJECT_PRINT', |
+ 'LIVEOBJECTLIST', |
+ ], |
+ }], |
+ ['v8_compress_startup_data=="bz2"', { |
+ 'defines': [ |
+ 'COMPRESS_STARTUP_DATA_BZ2', |
+ ], |
+ }], |
+ ], |
+ 'configurations': { |
+ 'Debug': { |
+ 'defines': [ |
+ 'DEBUG', |
+ 'ENABLE_DISASSEMBLER', |
+ 'V8_ENABLE_CHECKS', |
+ 'OBJECT_PRINT', |
+ ], |
'msvs_settings': { |
'VCCLCompilerTool': { |
- 'MinimalRebuild': 'false', |
- 'BufferSecurityCheck': 'true', |
- 'EnableFunctionLevelLinking': 'true', |
- 'RuntimeTypeInfo': 'false', |
- 'WarningLevel': '3', |
- 'WarnAsError': 'true', |
- 'DebugInformationFormat': '3', |
- 'Detect64BitPortabilityProblems': 'false', |
+ 'Optimization': '0', |
+ |
'conditions': [ |
- [ 'msvs_multi_core_compile', { |
- 'AdditionalOptions': ['/MP'], |
- }], |
- ['component=="shared_library"', { |
- 'ExceptionHandling': '1', # /EHsc |
+ ['OS=="win" and component=="shared_library"', { |
+ 'RuntimeLibrary': '3', # /MDd |
}, { |
- 'ExceptionHandling': '0', |
+ 'RuntimeLibrary': '1', # /MTd |
}], |
], |
}, |
- 'VCLibrarianTool': { |
- 'AdditionalOptions': ['/ignore:4221'], |
- }, |
'VCLinkerTool': { |
- 'AdditionalDependencies': [ |
- 'ws2_32.lib', |
- ], |
- 'GenerateDebugInformation': 'true', |
- 'MapFileName': '$(OutDir)\\$(TargetName).map', |
- 'ImportLibrary': '$(OutDir)\\lib\\$(TargetName).lib', |
- 'FixedBaseAddress': '1', |
- # LinkIncremental values: |
- # 0 == default |
- # 1 == /INCREMENTAL:NO |
- # 2 == /INCREMENTAL |
- 'LinkIncremental': '1', |
- # SubSystem values: |
- # 0 == not set |
- # 1 == /SUBSYSTEM:CONSOLE |
- # 2 == /SUBSYSTEM:WINDOWS |
- 'SubSystem': '1', |
+ 'LinkIncremental': '2', |
+ # For future reference, the stack size needs to be increased |
+ # when building for Windows 64-bit, otherwise some test cases |
+ # can cause stack overflow. |
+ # 'StackReserveSize': '297152', |
}, |
}, |
+ 'conditions': [ |
+ ['OS=="freebsd" or OS=="openbsd"', { |
+ 'cflags': [ '-I/usr/local/include' ], |
+ }], |
+ ['OS=="linux" or OS=="freebsd" or OS=="openbsd"', { |
+ 'cflags': [ '-Wall', '-Werror', '-W', '-Wno-unused-parameter', |
+ '-Wnon-virtual-dtor' ], |
+ }], |
+ ], |
}, |
- }], # OS=="win" |
- ['OS=="mac"', { |
- 'target_defaults': { |
- 'xcode_settings': { |
- 'ALWAYS_SEARCH_USER_PATHS': 'NO', |
- 'GCC_C_LANGUAGE_STANDARD': 'ansi', # -ansi |
- '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_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden |
- 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES', |
- 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden |
- 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics |
- 'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES', # -Werror |
- 'GCC_VERSION': '4.2', |
- 'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof |
- 'MACOSX_DEPLOYMENT_TARGET': '10.4', # -mmacosx-version-min=10.4 |
- 'PREBINDING': 'NO', # No -Wl,-prebind |
- 'USE_HEADERMAP': 'NO', |
- 'OTHER_CFLAGS': [ |
- '-fno-strict-aliasing', |
- ], |
- 'WARNING_CFLAGS': [ |
- '-Wall', |
- '-Wendif-labels', |
- '-W', |
- '-Wno-unused-parameter', |
- '-Wnon-virtual-dtor', |
- ], |
- }, |
- 'target_conditions': [ |
- ['_type!="static_library"', { |
- 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']}, |
+ 'Release': { |
+ 'conditions': [ |
+ ['OS=="linux" or OS=="freebsd" or OS=="openbsd"', { |
+ 'cflags!': [ |
+ '-O2', |
+ '-Os', |
+ ], |
+ 'cflags': [ |
+ '-fdata-sections', |
+ '-ffunction-sections', |
+ '-fomit-frame-pointer', |
+ '-O3', |
+ ], |
+ 'conditions': [ |
+ [ 'gcc_version==44', { |
+ 'cflags': [ |
+ # Avoid crashes with gcc 4.4 in the v8 test suite. |
+ '-fno-tree-vrp', |
+ ], |
+ }], |
+ ], |
+ }], |
+ ['OS=="freebsd" or OS=="openbsd"', { |
+ 'cflags': [ '-I/usr/local/include' ], |
+ }], |
+ ['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=="win"', { |
+ 'msvs_configuration_attributes': { |
+ 'OutputDirectory': '$(SolutionDir)$(ConfigurationName)', |
+ 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', |
+ 'CharacterSet': '1', |
+ }, |
+ 'msvs_settings': { |
+ 'VCCLCompilerTool': { |
+ 'Optimization': '2', |
+ 'InlineFunctionExpansion': '2', |
+ 'EnableIntrinsicFunctions': 'true', |
+ 'FavorSizeOrSpeed': '0', |
+ 'OmitFramePointers': 'true', |
+ 'StringPooling': 'true', |
+ |
+ 'conditions': [ |
+ ['OS=="win" and component=="shared_library"', { |
+ 'RuntimeLibrary': '2', #/MD |
+ }, { |
+ 'RuntimeLibrary': '0', #/MT |
+ }], |
+ ], |
+ }, |
+ 'VCLinkerTool': { |
+ 'LinkIncremental': '1', |
+ 'OptimizeReferences': '2', |
+ 'OptimizeForWindows98': '1', |
+ 'EnableCOMDATFolding': '2', |
+ # For future reference, the stack size needs to be |
+ # increased when building for Windows 64-bit, otherwise |
+ # some test cases can cause stack overflow. |
+ # 'StackReserveSize': '297152', |
+ }, |
+ }, |
}], |
- ], # target_conditions |
- }, # target_defaults |
- }], # OS=="mac" |
- ], |
+ ], |
+ }, |
+ }, |
+ }, |
} |