diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
commit | 679147eead574d186ebf3069647b4c23e8ccace6 (patch) | |
tree | fc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/v8/build | |
download | qtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz |
Initial import.
Diffstat (limited to 'chromium/v8/build')
-rw-r--r-- | chromium/v8/build/README.txt | 9 | ||||
-rw-r--r-- | chromium/v8/build/all.gyp | 19 | ||||
-rw-r--r-- | chromium/v8/build/android.gypi | 252 | ||||
-rw-r--r-- | chromium/v8/build/features.gypi | 111 | ||||
-rwxr-xr-x | chromium/v8/build/gyp_v8 | 171 | ||||
-rw-r--r-- | chromium/v8/build/shim_headers.gypi | 73 | ||||
-rw-r--r-- | chromium/v8/build/standalone.gypi | 285 | ||||
-rw-r--r-- | chromium/v8/build/toolchain.gypi | 696 |
8 files changed, 1616 insertions, 0 deletions
diff --git a/chromium/v8/build/README.txt b/chromium/v8/build/README.txt new file mode 100644 index 00000000000..5f242ada342 --- /dev/null +++ b/chromium/v8/build/README.txt @@ -0,0 +1,9 @@ +For build instructions, please refer to: + +https://code.google.com/p/v8/wiki/BuildingWithGYP + +TL;DR version on *nix: +$ make dependencies # Only needed once. +$ make ia32.release -j8 +$ make ia32.release.check # Optionally: run tests. + diff --git a/chromium/v8/build/all.gyp b/chromium/v8/build/all.gyp new file mode 100644 index 00000000000..4b2fe52989e --- /dev/null +++ b/chromium/v8/build/all.gyp @@ -0,0 +1,19 @@ +# Copyright 2011 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'targets': [ + { + 'target_name': 'All', + 'type': 'none', + 'dependencies': [ + '../preparser/preparser.gyp:*', + '../samples/samples.gyp:*', + '../src/d8.gyp:d8', + '../test/cctest/cctest.gyp:*', + ], + } + ] +} + diff --git a/chromium/v8/build/android.gypi b/chromium/v8/build/android.gypi new file mode 100644 index 00000000000..ca097255bbb --- /dev/null +++ b/chromium/v8/build/android.gypi @@ -0,0 +1,252 @@ +# Copyright 2012 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. + +# Definitions for building standalone V8 binaries to run on Android. +# This is mostly excerpted from: +# http://src.chromium.org/viewvc/chrome/trunk/src/build/common.gypi + +{ + 'variables': { + # Location of Android NDK. + 'variables': { + 'android_ndk_root%': '<!(/bin/echo -n $ANDROID_NDK_ROOT)', + 'android_toolchain%': '<!(/bin/echo -n $ANDROID_TOOLCHAIN)', + # This is set when building the Android WebView inside the Android build + # system, using the 'android' gyp backend. + 'android_webview_build%': 0, + }, + 'conditions': [ + ['android_ndk_root==""', { + 'variables': { + 'android_sysroot': '<(android_toolchain)/sysroot/', + 'android_stlport': '<(android_toolchain)/sources/cxx-stl/stlport/', + }, + 'android_include': '<(android_sysroot)/usr/include', + 'android_lib': '<(android_sysroot)/usr/lib', + 'android_stlport_include': '<(android_stlport)/stlport', + 'android_stlport_libs': '<(android_stlport)/libs', + }, { + 'variables': { + 'android_sysroot': '<(android_ndk_root)/platforms/android-9/arch-<(android_target_arch)', + 'android_stlport': '<(android_ndk_root)/sources/cxx-stl/stlport/', + }, + 'android_include': '<(android_sysroot)/usr/include', + 'android_lib': '<(android_sysroot)/usr/lib', + 'android_stlport_include': '<(android_stlport)/stlport', + 'android_stlport_libs': '<(android_stlport)/libs', + }], + ], + # Enable to use the system stlport, otherwise statically + # link the NDK one? + 'use_system_stlport%': '<(android_webview_build)', + 'android_stlport_library': 'stlport_static', + # Copy it out one scope. + 'android_webview_build%': '<(android_webview_build)', + 'OS': 'android', + }, # variables + 'target_defaults': { + 'defines': [ + 'ANDROID', + 'V8_ANDROID_LOG_STDOUT', + ], + 'configurations': { + 'Release': { + 'cflags': [ + '-fomit-frame-pointer', + ], + }, # Release + }, # configurations + 'cflags': [ '-Wno-abi', '-Wall', '-W', '-Wno-unused-parameter', + '-Wnon-virtual-dtor', '-fno-rtti', '-fno-exceptions', ], + 'target_conditions': [ + ['_toolset=="target"', { + 'cflags!': [ + '-pthread', # Not supported by Android toolchain. + ], + 'cflags': [ + '-U__linux__', # Don't allow toolchain to claim -D__linux__ + '-ffunction-sections', + '-funwind-tables', + '-fstack-protector', + '-fno-short-enums', + '-finline-limit=64', + '-Wa,--noexecstack', + '-Wno-error=non-virtual-dtor', # TODO(michaelbai): Fix warnings. + # Note: This include is in cflags to ensure that it comes after + # all of the includes. + '-I<(android_include)', + ], + 'defines': [ + 'ANDROID', + #'__GNU_SOURCE=1', # Necessary for clone() + 'USE_STLPORT=1', + '_STLP_USE_PTR_SPECIALIZATIONS=1', + 'HAVE_OFF64_T', + 'HAVE_SYS_UIO_H', + 'ANDROID_BINSIZE_HACK', # Enable temporary hacks to reduce binsize. + ], + 'ldflags!': [ + '-pthread', # Not supported by Android toolchain. + ], + 'ldflags': [ + '-nostdlib', + '-Wl,--no-undefined', + ], + 'libraries!': [ + '-lrt', # librt is built into Bionic. + # Not supported by Android toolchain. + # Where do these come from? Can't find references in + # any Chromium gyp or gypi file. Maybe they come from + # gyp itself? + '-lpthread', '-lnss3', '-lnssutil3', '-lsmime3', '-lplds4', '-lplc4', '-lnspr4', + ], + 'libraries': [ + '-l<(android_stlport_library)', + # Manually link the libgcc.a that the cross compiler uses. + '<!($CC -print-libgcc-file-name)', + '-lc', + '-ldl', + '-lstdc++', + '-lm', + ], + 'conditions': [ + ['android_webview_build==0', { + 'ldflags': [ + '-Wl,-rpath-link=<(android_lib)', + '-L<(android_lib)', + ], + }], + ['target_arch == "arm"', { + 'ldflags': [ + # Enable identical code folding to reduce size. + '-Wl,--icf=safe', + ], + }], + ['target_arch=="arm" and armv7==1', { + 'cflags': [ + '-march=armv7-a', + '-mtune=cortex-a8', + '-mfpu=vfp3', + ], + }], + # NOTE: The stlport header include paths below are specified in + # cflags rather than include_dirs because they need to come + # after include_dirs. Think of them like system headers, but + # don't use '-isystem' because the arm-linux-androideabi-4.4.3 + # toolchain (circa Gingerbread) will exhibit strange errors. + # The include ordering here is important; change with caution. + ['use_system_stlport==0', { + 'cflags': [ + '-I<(android_stlport_include)', + ], + 'conditions': [ + ['target_arch=="arm" and armv7==1', { + 'ldflags': [ + '-L<(android_stlport_libs)/armeabi-v7a', + ], + }], + ['target_arch=="arm" and armv7==0', { + 'ldflags': [ + '-L<(android_stlport_libs)/armeabi', + ], + }], + ['target_arch=="mipsel"', { + 'ldflags': [ + '-L<(android_stlport_libs)/mips', + ], + }], + ['target_arch=="ia32"', { + 'ldflags': [ + '-L<(android_stlport_libs)/x86', + ], + }], + ], + }], + ['target_arch=="ia32"', { + # The x86 toolchain currently has problems with stack-protector. + 'cflags!': [ + '-fstack-protector', + ], + 'cflags': [ + '-fno-stack-protector', + ], + }], + ['target_arch=="mipsel"', { + # The mips toolchain currently has problems with stack-protector. + 'cflags!': [ + '-fstack-protector', + '-U__linux__' + ], + 'cflags': [ + '-fno-stack-protector', + ], + }], + ], + 'target_conditions': [ + ['_type=="executable"', { + 'ldflags': [ + '-Bdynamic', + '-Wl,-dynamic-linker,/system/bin/linker', + '-Wl,--gc-sections', + '-Wl,-z,nocopyreloc', + # crtbegin_dynamic.o should be the last item in ldflags. + '<(android_lib)/crtbegin_dynamic.o', + ], + 'libraries': [ + # crtend_android.o needs to be the last item in libraries. + # Do not add any libraries after this! + '<(android_lib)/crtend_android.o', + ], + }], + ['_type=="shared_library"', { + 'ldflags': [ + '-Wl,-shared,-Bsymbolic', + '<(android_lib)/crtbegin_so.o', + ], + }], + ['_type=="static_library"', { + 'ldflags': [ + # Don't export symbols from statically linked libraries. + '-Wl,--exclude-libs=ALL', + ], + }], + ], + }], # _toolset=="target" + # Settings for building host targets using the system toolchain. + ['_toolset=="host"', { + 'cflags': [ '-m32', '-pthread' ], + 'ldflags': [ '-m32', '-pthread' ], + 'ldflags!': [ + '-Wl,-z,noexecstack', + '-Wl,--gc-sections', + '-Wl,-O1', + '-Wl,--as-needed', + ], + }], + ], # target_conditions + }, # target_defaults +} diff --git a/chromium/v8/build/features.gypi b/chromium/v8/build/features.gypi new file mode 100644 index 00000000000..3c6d25f7587 --- /dev/null +++ b/chromium/v8/build/features.gypi @@ -0,0 +1,111 @@ +# 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. + +# Compile time controlled V8 features. + +{ + 'variables': { + 'v8_compress_startup_data%': 'off', + + 'v8_enable_debugger_support%': 1, + + 'v8_enable_disassembler%': 0, + + 'v8_enable_gdbjit%': 0, + + 'v8_object_print%': 0, + + 'v8_enable_verify_heap%': 0, + + 'v8_use_snapshot%': 'true', + + # With post mortem support enabled, metadata is embedded into libv8 that + # describes various parameters of the VM for use by debuggers. See + # tools/gen-postmortem-metadata.py for details. + 'v8_postmortem_support%': 'false', + + # Interpreted regexp engine exists as platform-independent alternative + # based where the regular expression is compiled to a bytecode. + 'v8_interpreted_regexp%': 0, + + # Enable ECMAScript Internationalization API. Enabling this feature will + # add a dependency on the ICU library. + 'v8_enable_i18n_support%': 0, + }, + 'target_defaults': { + 'conditions': [ + ['v8_enable_debugger_support==1', { + 'defines': ['ENABLE_DEBUGGER_SUPPORT',], + }], + ['v8_enable_disassembler==1', { + 'defines': ['ENABLE_DISASSEMBLER',], + }], + ['v8_enable_gdbjit==1', { + 'defines': ['ENABLE_GDB_JIT_INTERFACE',], + }], + ['v8_object_print==1', { + 'defines': ['OBJECT_PRINT',], + }], + ['v8_enable_verify_heap==1', { + 'defines': ['VERIFY_HEAP',], + }], + ['v8_interpreted_regexp==1', { + 'defines': ['V8_INTERPRETED_REGEXP',], + }], + ['v8_enable_i18n_support==1', { + 'defines': ['V8_I18N_SUPPORT',], + }], + ['v8_compress_startup_data=="bz2"', { + 'defines': [ + 'COMPRESS_STARTUP_DATA_BZ2', + ], + }], + ], # conditions + 'configurations': { + 'Debug': { + 'variables': { + 'v8_enable_extra_checks%': 1, + }, + 'conditions': [ + ['v8_enable_extra_checks==1', { + 'defines': ['ENABLE_EXTRA_CHECKS',], + }], + ], + }, # Debug + 'Release': { + 'variables': { + 'v8_enable_extra_checks%': 0, + }, + 'conditions': [ + ['v8_enable_extra_checks==1', { + 'defines': ['ENABLE_EXTRA_CHECKS',], + }], + ], # conditions + }, # Release + }, # configurations + }, # target_defaults +} diff --git a/chromium/v8/build/gyp_v8 b/chromium/v8/build/gyp_v8 new file mode 100755 index 00000000000..92e6503925c --- /dev/null +++ b/chromium/v8/build/gyp_v8 @@ -0,0 +1,171 @@ +#!/usr/bin/env python +# +# Copyright 2012 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. + +# This script is wrapper for V8 that adds some support for how GYP +# is invoked by V8 beyond what can be done in the gclient hooks. + +import glob +import os +import platform +import shlex +import sys + +script_dir = os.path.dirname(__file__) +v8_root = os.path.normpath(os.path.join(script_dir, os.pardir)) + +if __name__ == '__main__': + os.chdir(v8_root) + script_dir = os.path.dirname(__file__) + v8_root = '.' + +sys.path.insert(0, os.path.join(v8_root, 'build', 'gyp', 'pylib')) +import gyp + +# Add paths so that pymod_do_main(...) can import files. +sys.path.insert( + 1, os.path.abspath(os.path.join(v8_root, 'tools', 'generate_shim_headers'))) + + +def apply_gyp_environment(file_path=None): + """ + Reads in a *.gyp_env file and applies the valid keys to os.environ. + """ + if not file_path or not os.path.exists(file_path): + return + file_contents = open(file_path).read() + try: + file_data = eval(file_contents, {'__builtins__': None}, None) + except SyntaxError, e: + e.filename = os.path.abspath(file_path) + raise + supported_vars = ( 'V8_GYP_FILE', + 'V8_GYP_SYNTAX_CHECK', + 'GYP_DEFINES', + 'GYP_GENERATOR_FLAGS', + 'GYP_GENERATOR_OUTPUT', ) + for var in supported_vars: + val = file_data.get(var) + if val: + if var in os.environ: + print 'INFO: Environment value for "%s" overrides value in %s.' % ( + var, os.path.abspath(file_path) + ) + else: + os.environ[var] = val + + +def additional_include_files(args=[]): + """ + Returns a list of additional (.gypi) files to include, without + duplicating ones that are already specified on the command line. + """ + # Determine the include files specified on the command line. + # This doesn't cover all the different option formats you can use, + # but it's mainly intended to avoid duplicating flags on the automatic + # makefile regeneration which only uses this format. + specified_includes = set() + for arg in args: + if arg.startswith('-I') and len(arg) > 2: + specified_includes.add(os.path.realpath(arg[2:])) + + result = [] + def AddInclude(path): + if os.path.realpath(path) not in specified_includes: + result.append(path) + + # Always include standalone.gypi + AddInclude(os.path.join(v8_root, 'build', 'standalone.gypi')) + + # Optionally add supplemental .gypi files if present. + supplements = glob.glob(os.path.join(v8_root, '*', 'supplement.gypi')) + for supplement in supplements: + AddInclude(supplement) + + return result + + +def run_gyp(args): + rc = gyp.main(args) + if rc != 0: + print 'Error running GYP' + sys.exit(rc) + + +if __name__ == '__main__': + args = sys.argv[1:] + + if 'SKIP_V8_GYP_ENV' not in os.environ: + # Update the environment based on v8.gyp_env + gyp_env_path = os.path.join(os.path.dirname(v8_root), 'v8.gyp_env') + apply_gyp_environment(gyp_env_path) + + # This could give false positives since it doesn't actually do real option + # parsing. Oh well. + gyp_file_specified = False + for arg in args: + if arg.endswith('.gyp'): + gyp_file_specified = True + break + + # If we didn't get a file, check an env var, and then fall back to + # assuming 'all.gyp' from the same directory as the script. + if not gyp_file_specified: + gyp_file = os.environ.get('V8_GYP_FILE') + if gyp_file: + # Note that V8_GYP_FILE values can't have backslashes as + # path separators even on Windows due to the use of shlex.split(). + args.extend(shlex.split(gyp_file)) + else: + # Note that this must not start with "./" or things break. + # So we rely on having done os.chdir(v8_root) above and use the + # relative path. + args.append(os.path.join('build', 'all.gyp')) + + args.extend(['-I' + i for i in additional_include_files(args)]) + + # There shouldn't be a circular dependency relationship between .gyp files + args.append('--no-circular-check') + + # Set the GYP DEPTH variable to the root of the V8 project. + args.append('--depth=' + v8_root) + + # If V8_GYP_SYNTAX_CHECK is set to 1, it will invoke gyp with --check + # to enfore syntax checking. + syntax_check = os.environ.get('V8_GYP_SYNTAX_CHECK') + if syntax_check and int(syntax_check): + args.append('--check') + + print 'Updating projects from gyp files...' + sys.stdout.flush() + + # Generate for the architectures supported on the given platform. + gyp_args = list(args) + if platform.system() == 'Linux': + gyp_args.append('--generator-output=out') + run_gyp(gyp_args) diff --git a/chromium/v8/build/shim_headers.gypi b/chromium/v8/build/shim_headers.gypi new file mode 100644 index 00000000000..940211c2401 --- /dev/null +++ b/chromium/v8/build/shim_headers.gypi @@ -0,0 +1,73 @@ +# 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. + +# This file is meant to be included into a target to handle shim headers +# in a consistent manner. To use this the following variables need to be +# defined: +# headers_root_path: string: path to directory containing headers +# header_filenames: list: list of header file names + +{ + 'variables': { + 'shim_headers_path': '<(SHARED_INTERMEDIATE_DIR)/shim_headers/<(_target_name)/<(_toolset)', + 'shim_generator_additional_args%': [], + }, + 'include_dirs++': [ + '<(shim_headers_path)', + ], + 'all_dependent_settings': { + 'include_dirs+++': [ + '<(shim_headers_path)', + ], + }, + 'actions': [ + { + 'variables': { + 'generator_path': '<(DEPTH)/tools/generate_shim_headers/generate_shim_headers.py', + 'generator_args': [ + '--headers-root', '<(headers_root_path)', + '--output-directory', '<(shim_headers_path)', + '<@(shim_generator_additional_args)', + '<@(header_filenames)', + ], + }, + 'action_name': 'generate_<(_target_name)_shim_headers', + 'inputs': [ + '<(generator_path)', + ], + 'outputs': [ + '<!@pymod_do_main(generate_shim_headers <@(generator_args) --outputs)', + ], + 'action': ['python', + '<(generator_path)', + '<@(generator_args)', + '--generate', + ], + 'message': 'Generating <(_target_name) shim headers.', + }, + ], +} diff --git a/chromium/v8/build/standalone.gypi b/chromium/v8/build/standalone.gypi new file mode 100644 index 00000000000..5c017d5f507 --- /dev/null +++ b/chromium/v8/build/standalone.gypi @@ -0,0 +1,285 @@ +# Copyright 2012 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. + +# Definitions to be used when building stand-alone V8 binaries. + +{ + # We need to include toolchain.gypi here for third-party sources that don't + # directly include it themselves. + 'includes': ['toolchain.gypi'], + 'variables': { + 'component%': 'static_library', + 'clang%': 0, + 'visibility%': 'hidden', + 'v8_enable_backtrace%': 0, + 'v8_enable_i18n_support%': 0, + 'msvs_multi_core_compile%': '1', + 'mac_deployment_target%': '10.5', + 'variables': { + 'variables': { + 'variables': { + 'conditions': [ + ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or \ + OS=="netbsd" or OS=="mac"', { + # This handles the Unix 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/;s/mips.*/mipsel/")', + }, { + # OS!="linux" and OS!="freebsd" and OS!="openbsd" and + # OS!="netbsd" and OS!="mac" + 'host_arch%': 'ia32', + }], + ], + }, + 'host_arch%': '<(host_arch)', + 'target_arch%': '<(host_arch)', + }, + 'host_arch%': '<(host_arch)', + 'target_arch%': '<(target_arch)', + 'v8_target_arch%': '<(target_arch)', + }, + 'host_arch%': '<(host_arch)', + 'target_arch%': '<(target_arch)', + 'v8_target_arch%': '<(v8_target_arch)', + 'werror%': '-Werror', + + # .gyp files or targets should set v8_code to 1 if they build V8 specific + # code, as opposed to external code. This variable is used to control such + # things as the set of warnings to enable, and whether warnings are treated + # as errors. + 'v8_code%': 0, + + 'conditions': [ + ['(v8_target_arch=="arm" and host_arch!="arm") or \ + (v8_target_arch=="mipsel" and host_arch!="mipsel") or \ + (v8_target_arch=="x64" and host_arch!="x64") or \ + (OS=="android")', { + 'want_separate_host_toolset': 1, + }, { + 'want_separate_host_toolset': 0, + }], + ['OS == "win"', { + 'os_posix%': 0, + }, { + 'os_posix%': 1, + }], + ['(v8_target_arch=="ia32" or v8_target_arch=="x64") and \ + (OS=="linux" or OS=="mac")', { + 'v8_enable_gdbjit%': 1, + }, { + 'v8_enable_gdbjit%': 0, + }], + ], + # Default ARM variable settings. + 'armv7%': 'default', + 'arm_neon%': 0, + 'arm_fpu%': 'vfpv3', + 'arm_float_abi%': 'default', + 'arm_thumb': 'default', + }, + 'target_defaults': { + 'variables': { + 'v8_code%': '<(v8_code)', + }, + 'default_configuration': 'Debug', + 'configurations': { + 'Debug': { + 'cflags': [ '-g', '-O0' ], + }, + 'Release': { + # Xcode insists on this empty entry. + }, + }, + 'target_conditions': [ + ['v8_code == 0', { + 'defines!': [ + 'DEBUG', + ], + 'conditions': [ + ['os_posix == 1 and OS != "mac"', { + 'cflags!': [ + '-Werror', + ], + }], + ['OS == "mac"', { + 'xcode_settings': { + 'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO', # -Werror + }, + }], + ['OS == "win"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'WarnAsError': 'false', + }, + }, + }], + ], + }], + ], + }, + 'conditions': [ + ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ + or OS=="netbsd"', { + 'target_defaults': { + 'cflags': [ '-Wall', '<(werror)', '-W', '-Wno-unused-parameter', + '-pthread', '-fno-exceptions', '-pedantic' ], + 'cflags_cc': [ '-Wnon-virtual-dtor', '-fno-rtti' ], + 'ldflags': [ '-pthread', ], + 'conditions': [ + [ 'OS=="linux"', { + 'cflags': [ '-ansi' ], + }], + [ 'visibility=="hidden" and v8_enable_backtrace==0', { + 'cflags': [ '-fvisibility=hidden' ], + }], + [ 'component=="shared_library"', { + 'cflags': [ '-fPIC', ], + }], + ], + }, + }], + # 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" + # or OS=="netbsd"' + ['OS=="win"', { + 'target_defaults': { + 'defines': [ + '_CRT_SECURE_NO_DEPRECATE', + '_CRT_NONSTDC_NO_DEPRECATE', + ], + 'conditions': [ + ['component=="static_library"', { + 'defines': [ + '_HAS_EXCEPTIONS=0', + ], + }], + ], + 'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'], + 'msvs_disabled_warnings': [4355, 4800], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'MinimalRebuild': 'false', + 'BufferSecurityCheck': 'true', + 'EnableFunctionLevelLinking': 'true', + 'RuntimeTypeInfo': 'false', + 'WarningLevel': '3', + 'WarnAsError': 'true', + 'DebugInformationFormat': '3', + 'Detect64BitPortabilityProblems': 'false', + 'conditions': [ + [ 'msvs_multi_core_compile', { + 'AdditionalOptions': ['/MP'], + }], + ['component=="shared_library"', { + 'ExceptionHandling': '1', # /EHsc + }, { + 'ExceptionHandling': '0', + }], + ], + }, + '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', + + 'conditions': [ + ['v8_enable_i18n_support==1', { + 'AdditionalDependencies': [ + 'advapi32.lib', + ], + }], + ], + }, + }, + }, + }], # OS=="win" + ['OS=="mac"', { + 'xcode_settings': { + 'SYMROOT': '<(DEPTH)/xcodebuild', + }, + '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': 'com.apple.compilers.llvmgcc42', + 'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof + 'GCC_WARN_NON_VIRTUAL_DESTRUCTOR': 'YES', # -Wnon-virtual-dtor + # MACOSX_DEPLOYMENT_TARGET maps to -mmacosx-version-min + 'MACOSX_DEPLOYMENT_TARGET': '<(mac_deployment_target)', + 'PREBINDING': 'NO', # No -Wl,-prebind + 'SYMROOT': '<(DEPTH)/xcodebuild', + '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']}, + }], + ], # target_conditions + }, # target_defaults + }], # OS=="mac" + ], +} diff --git a/chromium/v8/build/toolchain.gypi b/chromium/v8/build/toolchain.gypi new file mode 100644 index 00000000000..ddb8aafad0c --- /dev/null +++ b/chromium/v8/build/toolchain.gypi @@ -0,0 +1,696 @@ +# 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, + 'gcc_version%': 'unknown', + 'CXX%': '${CXX:-$(which g++)}', # Used to assemble a shell command. + 'v8_target_arch%': '<(target_arch)', + # Native Client builds currently use the V8 ARM JIT and + # arm/simulator-arm.cc to defer the significant effort required + # for NaCl JIT support. The nacl_target_arch variable provides + # the 'true' target arch for places in this file that need it. + # TODO(bradchen): get rid of nacl_target_arch when someday + # NaCl V8 builds stop using the ARM simulator + 'nacl_target_arch%': 'none', # must be set externally + + # 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%': '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', + + # Default arch variant for MIPS. + 'mips_arch_variant%': 'mips32r2', + + 'v8_enable_backtrace%': 0, + + # Speeds up Debug builds: + # 0 - Compiler optimizations off (debuggable) (default). This may + # be 5x slower than Release (or worse). + # 1 - Turn on compiler optimizations. This may be hard or impossible to + # debug. This may still be 2x slower than Release (or worse). + # 2 - Turn on optimizations, and also #undef DEBUG / #define NDEBUG + # (but leave V8_ENABLE_CHECKS and most other assertions enabled. + # This may cause some v8 tests to fail in the Debug configuration. + # This roughly matches the performance of a Release build and can + # be used by embedders that need to build their own code as debug + # but don't want or need a debug version of V8. This should produce + # near-release speeds. + 'v8_optimized_debug%': 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 build/standalone.gypi. + 'want_separate_host_toolset%': 1, + + '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%': '', + }, + 'target_defaults': { + 'conditions': [ + ['v8_target_arch=="arm"', { + 'defines': [ + 'V8_TARGET_ARCH_ARM', + ], + 'target_conditions': [ + ['_toolset=="host"', { + 'variables': { + 'armcompiler': '<!($(echo ${CXX_host:-$(which g++)}) -v 2>&1 | grep -q "^Target: arm" && echo "yes" || echo "no")', + }, + 'conditions': [ + ['armcompiler=="yes"', { + 'conditions': [ + [ 'armv7==1', { + 'cflags': ['-march=armv7-a',], + }], + [ 'armv7==1 or armv7=="default"', { + 'conditions': [ + [ 'arm_neon==1', { + 'cflags': ['-mfpu=neon',], + }, + { + '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',], + }], + [ 'arm_test=="on"', { + 'defines': [ + 'ARM_TEST', + ], + }], + ], + }, { + # armcompiler=="no" + 'conditions': [ + [ 'armv7==1 or armv7=="default"', { + 'defines': [ + 'CAN_USE_ARMV7_INSTRUCTIONS=1', + ], + 'conditions': [ + [ 'arm_fpu=="default"', { + 'defines': [ + 'CAN_USE_VFP3_INSTRUCTIONS', + ], + }], + [ 'arm_fpu=="vfpv3-d16"', { + 'defines': [ + 'CAN_USE_VFP3_INSTRUCTIONS', + ], + }], + [ 'arm_fpu=="vfpv3"', { + 'defines': [ + 'CAN_USE_VFP3_INSTRUCTIONS', + 'CAN_USE_VFP32DREGS', + ], + }], + [ 'arm_fpu=="neon" or arm_neon==1', { + 'defines': [ + 'CAN_USE_VFP3_INSTRUCTIONS', + 'CAN_USE_VFP32DREGS', + ], + }], + ], + }], + [ 'arm_float_abi=="hard"', { + 'defines': [ + 'USE_EABI_HARDFLOAT=1', + ], + }], + [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { + 'defines': [ + 'USE_EABI_HARDFLOAT=0', + ], + }], + ], + 'defines': [ + 'ARM_TEST', + ], + }], + ], + }], # _toolset=="host" + ['_toolset=="target"', { + 'variables': { + 'armcompiler': '<!($(echo ${CXX_target:-<(CXX)}) -v 2>&1 | grep -q "^Target: arm" && echo "yes" || echo "no")', + }, + 'conditions': [ + ['armcompiler=="yes"', { + 'conditions': [ + [ 'armv7==1', { + 'cflags': ['-march=armv7-a',], + }], + [ 'armv7==1 or armv7=="default"', { + 'conditions': [ + [ 'arm_neon==1', { + 'cflags': ['-mfpu=neon',], + }, + { + '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',], + }], + [ 'arm_test=="on"', { + 'defines': [ + 'ARM_TEST', + ], + }], + ], + }, { + # armcompiler=="no" + 'conditions': [ + [ 'armv7==1 or armv7=="default"', { + 'defines': [ + 'CAN_USE_ARMV7_INSTRUCTIONS=1', + ], + 'conditions': [ + [ 'arm_fpu=="default"', { + 'defines': [ + 'CAN_USE_VFP3_INSTRUCTIONS', + ], + }], + [ 'arm_fpu=="vfpv3-d16"', { + 'defines': [ + 'CAN_USE_VFP3_INSTRUCTIONS', + ], + }], + [ 'arm_fpu=="vfpv3"', { + 'defines': [ + 'CAN_USE_VFP3_INSTRUCTIONS', + 'CAN_USE_VFP32DREGS', + ], + }], + [ 'arm_fpu=="neon" or arm_neon==1', { + 'defines': [ + 'CAN_USE_VFP3_INSTRUCTIONS', + 'CAN_USE_VFP32DREGS', + ], + }], + ], + }], + [ 'arm_float_abi=="hard"', { + 'defines': [ + 'USE_EABI_HARDFLOAT=1', + ], + }], + [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { + 'defines': [ + 'USE_EABI_HARDFLOAT=0', + ], + }], + ], + 'defines': [ + 'ARM_TEST', + ], + }], + ], + }], # _toolset=="target" + ], + }], # v8_target_arch=="arm" + ['v8_target_arch=="ia32"', { + 'defines': [ + 'V8_TARGET_ARCH_IA32', + ], + }], # v8_target_arch=="ia32" + ['v8_target_arch=="mipsel"', { + 'defines': [ + 'V8_TARGET_ARCH_MIPS', + ], + 'variables': { + 'mipscompiler': '<!($(echo <(CXX)) -v 2>&1 | grep -q "^Target: mips" && echo "yes" || echo "no")', + }, + 'conditions': [ + ['mipscompiler=="yes"', { + 'target_conditions': [ + ['_toolset=="target"', { + 'cflags': ['-EL'], + 'ldflags': ['-EL'], + 'conditions': [ + [ 'v8_use_mips_abi_hardfloat=="true"', { + 'cflags': ['-mhard-float'], + 'ldflags': ['-mhard-float'], + }, { + 'cflags': ['-msoft-float'], + 'ldflags': ['-msoft-float'], + }], + ['mips_arch_variant=="mips32r2"', { + 'cflags': ['-mips32r2', '-Wa,-mips32r2'], + }], + ['mips_arch_variant=="mips32r1"', { + 'cflags': ['-mips32', '-Wa,-mips32'], + }], + ['mips_arch_variant=="loongson"', { + 'cflags': ['-mips3', '-Wa,-mips3'], + }], + ], + }], + ], + }], + [ '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' + ], + }], + ['mips_arch_variant=="mips32r2"', { + 'defines': ['_MIPS_ARCH_MIPS32R2',], + }], + ['mips_arch_variant=="loongson"', { + 'defines': ['_MIPS_ARCH_LOONGSON',], + }], + ], + }], # v8_target_arch=="mipsel" + ['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" + ['OS=="win"', { + 'defines': [ + 'WIN32', + ], + 'msvs_configuration_attributes': { + 'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)', + 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', + 'CharacterSet': '1', + }, + }], + ['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"', { + 'conditions': [ + [ 'v8_no_strict_aliasing==1', { + 'cflags': [ '-fno-strict-aliasing' ], + }], + ], # conditions + }], + ['OS=="solaris"', { + 'defines': [ '__C99FEATURES__=1' ], # isinf() etc. + }], + ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ + or OS=="netbsd" or OS=="mac" or OS=="android") and \ + (v8_target_arch=="arm" or v8_target_arch=="ia32" or \ + v8_target_arch=="mipsel")', { + # Check whether the host compiler and target compiler support the + # '-m32' option and set it if so. + 'target_conditions': [ + ['_toolset=="host"', { + 'variables': { + 'm32flag': '<!((echo | $(echo ${CXX_host:-$(which g++)}) -m32 -E - > /dev/null 2>&1) && echo "-m32" || true)', + }, + 'cflags': [ '<(m32flag)' ], + 'ldflags': [ '<(m32flag)' ], + 'xcode_settings': { + 'ARCHS': [ 'i386' ], + }, + }], + ['_toolset=="target"', { + 'variables': { + 'm32flag': '<!((echo | $(echo ${CXX_target:-<(CXX)}) -m32 -E - > /dev/null 2>&1) && echo "-m32" || true)', + 'clang%': 0, + }, + 'conditions': [ + ['(OS!="android" or clang==1) and \ + nacl_target_arch!="nacl_x64"', { + 'cflags': [ '<(m32flag)' ], + 'ldflags': [ '<(m32flag)' ], + }], + ], + 'xcode_settings': { + 'ARCHS': [ 'i386' ], + }, + }], + ], + }], + ['(OS=="linux") and (v8_target_arch=="x64")', { + # Check whether the host compiler and target compiler support the + # '-m64' option and set it if so. + 'target_conditions': [ + ['_toolset=="host"', { + 'variables': { + 'm64flag': '<!((echo | $(echo ${CXX_host:-$(which g++)}) -m64 -E - > /dev/null 2>&1) && echo "-m64" || true)', + }, + 'cflags': [ '<(m64flag)' ], + 'ldflags': [ '<(m64flag)' ], + }], + ['_toolset=="target"', { + 'variables': { + 'm64flag': '<!((echo | $(echo ${CXX_target:-<(CXX)}) -m64 -E - > /dev/null 2>&1) && echo "-m64" || true)', + }, + 'cflags': [ '<(m64flag)' ], + 'ldflags': [ '<(m64flag)' ], + }] + ], + }], + ['OS=="freebsd" or OS=="openbsd"', { + 'cflags': [ '-I/usr/local/include' ], + }], + ['OS=="netbsd"', { + 'cflags': [ '-I/usr/pkg/include' ], + }], + ], # conditions + 'configurations': { + 'Debug': { + 'defines': [ + 'ENABLE_DISASSEMBLER', + 'V8_ENABLE_CHECKS', + 'OBJECT_PRINT', + 'VERIFY_HEAP', + ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'conditions': [ + ['v8_optimized_debug==0', { + 'Optimization': '0', + 'conditions': [ + ['component=="shared_library"', { + 'RuntimeLibrary': '3', # /MDd + }, { + 'RuntimeLibrary': '1', # /MTd + }], + ], + }], + ['v8_optimized_debug==1', { + 'Optimization': '1', + 'InlineFunctionExpansion': '2', + 'EnableIntrinsicFunctions': 'true', + 'FavorSizeOrSpeed': '0', + 'StringPooling': 'true', + 'BasicRuntimeChecks': '0', + 'conditions': [ + ['component=="shared_library"', { + 'RuntimeLibrary': '3', # /MDd + }, { + 'RuntimeLibrary': '1', # /MTd + }], + ], + }], + ['v8_optimized_debug==2', { + 'Optimization': '2', + 'InlineFunctionExpansion': '2', + 'EnableIntrinsicFunctions': 'true', + 'FavorSizeOrSpeed': '0', + 'StringPooling': 'true', + 'BasicRuntimeChecks': '0', + 'conditions': [ + ['component=="shared_library"', { + 'RuntimeLibrary': '3', #/MDd + }, { + 'RuntimeLibrary': '1', #/MTd + }], + ['v8_target_arch=="x64"', { + # TODO(2207): remove this option once the bug is fixed. + 'WholeProgramOptimization': 'true', + }], + ], + }], + ], + }, + 'VCLinkerTool': { + 'conditions': [ + ['v8_optimized_debug==0', { + 'LinkIncremental': '2', + }], + ['v8_optimized_debug==1', { + 'LinkIncremental': '2', + }], + ['v8_optimized_debug==2', { + 'LinkIncremental': '1', + 'OptimizeReferences': '2', + 'EnableCOMDATFolding': '2', + }], + ], + }, + }, + 'conditions': [ + ['v8_optimized_debug==2', { + 'defines': [ + 'NDEBUG', + ], + }, { + 'defines': [ + 'DEBUG', + ], + }], + ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', { + 'cflags': [ '-Wall', '<(werror)', '-W', '-Wno-unused-parameter', + '-Wnon-virtual-dtor', '-Woverloaded-virtual', + '<(wno_array_bounds)' ], + 'conditions': [ + ['v8_optimized_debug==0', { + 'cflags!': [ + '-O0', + '-O3', + '-O2', + '-O1', + '-Os', + ], + 'cflags': [ + '-fdata-sections', + '-ffunction-sections', + ], + }], + ['v8_optimized_debug==1', { + 'cflags!': [ + '-O0', + '-O3', # TODO(2807) should be -O1. + '-O2', + '-Os', + ], + 'cflags': [ + '-fdata-sections', + '-ffunction-sections', + '-O1', # TODO(2807) should be -O3. + ], + }], + ['v8_optimized_debug==2', { + 'cflags!': [ + '-O0', + '-O1', + '-O2', + '-Os', + ], + 'cflags': [ + '-fdata-sections', + '-ffunction-sections', + '-O3', + ], + }], + ['v8_optimized_debug!=0 and gcc_version==44 and clang==0', { + 'cflags': [ + # Avoid crashes with gcc 4.4 in the v8 test suite. + '-fno-tree-vrp', + ], + }], + ], + }], + ['OS=="linux" and v8_enable_backtrace==1', { + # Support for backtrace_symbols. + 'ldflags': [ '-rdynamic' ], + }], + ['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', + ], + }], + ], + }], + ['OS=="mac"', { + 'xcode_settings': { + 'conditions': [ + ['v8_optimized_debug==0', { + 'GCC_OPTIMIZATION_LEVEL': '0', # -O0 + }, { + 'GCC_OPTIMIZATION_LEVEL': '3', # -O3 + 'GCC_STRICT_ALIASING': 'YES', + }], + ], + }, + }], + ], + }, # Debug + 'Release': { + 'conditions': [ + ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', { + 'cflags!': [ + '-O2', + '-Os', + ], + 'cflags': [ + '-fdata-sections', + '-ffunction-sections', + '-O3', + '<(wno_array_bounds)', + ], + 'conditions': [ + [ 'gcc_version==44 and clang==0', { + 'cflags': [ + # Avoid crashes with gcc 4.4 in the v8 test suite. + '-fno-tree-vrp', + ], + }], + ], + }], + ['OS=="android"', { + 'cflags!': [ + '-O3', + '-Os', + ], + 'cflags': [ + '-fdata-sections', + '-ffunction-sections', + '-O2', + ], + 'conditions': [ + [ 'gcc_version==44 and clang==0', { + 'cflags': [ + # Avoid crashes with gcc 4.4 in the v8 test suite. + '-fno-tree-vrp', + ], + }], + ], + }], + ['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"', { + 'RuntimeLibrary': '2', #/MD + }, { + 'RuntimeLibrary': '0', #/MT + }], + ['v8_target_arch=="x64"', { + # TODO(2207): remove this option once the bug is fixed. + 'WholeProgramOptimization': 'true', + }], + ], + }, + 'VCLinkerTool': { + 'LinkIncremental': '1', + 'OptimizeReferences': '2', + 'EnableCOMDATFolding': '2', + }, + }, + }], # OS=="win" + ], # conditions + }, # Release + }, # configurations + }, # target_defaults +} |