blob: 03e13ec2e2608cdf02b77376c52ce75f2fee5071 [file] [log] [blame]
# Copyright 2012 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.
{
'variables': {
'V8_ROOT': '<(DEPTH)/third_party/v8',
'v8_code': 1,
'v8_random_seed%': 314159265,
'v8_vector_stores%': 0,
'v8_embed_script%': "",
'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(host_executable_suffix)',
'v8_os_page_size%': 0,
# Cobalt added variables
'v8_use_snapshot': 1,
'v8_optimized_debug': 0,
'v8_use_external_startup_data': 0,
'v8_enable_i18n_support': 0,
'v8_enable_snapshot_code_comments': 0,
# Enable native counters from the snapshot (impacts performance, sets
# -dV8_SNAPSHOT_NATIVE_CODE_COUNTERS).
# This option will generate extra code in the snapshot to increment counters,
# as per the --native-code-counters flag.
'v8_enable_snapshot_native_code_counters%': 0,
# Enable code-generation-time checking of types in the CodeStubAssembler.
'v8_enable_verify_csa%': 0,
'v8_enable_31bit_smis_on_64bit_arch%': 0,
# Sets -dOBJECT_PRINT.
'v8_enable_object_print%': 0,
# Sets -dV8_TRACE_MAPS.
'v8_enable_trace_maps%': 0,
# Sets -dV8_ENABLE_CHECKS.
'v8_enable_v8_checks%': 0,
# Sets -dV8_TRACE_IGNITION.
'v8_enable_trace_ignition%': 0,
# Sets -dV8_TRACE_FEEDBACK_UPDATES.
'v8_enable_trace_feedback_updates%': 0,
# Sets -dV8_CONCURRENT_MARKING
'v8_enable_concurrent_marking%': 1,
# Enables various testing features.
'v8_enable_test_features%': 0,
'is_component_build': 0,
'v8_current_cpu': '<(v8_target_arch)',
'is_posix': 0,
'is_fuchsia': 0,
'is_android': 0,
'is_win': 0,
'is_linux': 0,
'is_starboard': 1,
'is_asan': 0,
'v8_use_perfetto': 0,
'v8_use_siphash': 0,
'v8_enable_lite_mode': 0,
'want_separate_host_toolset': 1,
# New addition after 8.7 rebase
'v8_enable_third_party_heap': 0,
'v8_control_flow_integrity': 0, # qualcomm's pointer authentication
# End of Cobalt variables
'generate_bytecode_output_root': '<(SHARED_INTERMEDIATE_DIR)/generate-bytecode-output-root',
'generate_bytecode_builtins_list_output': '<(generate_bytecode_output_root)/builtins-generated/bytecodes-builtins-list.h',
'torque_files_v8_root_relative': [
"src/builtins/aggregate-error.tq",
"src/builtins/array-copywithin.tq",
"src/builtins/array-every.tq",
"src/builtins/array-filter.tq",
"src/builtins/array-find.tq",
"src/builtins/array-findindex.tq",
"src/builtins/array-foreach.tq",
"src/builtins/array-from.tq",
"src/builtins/array-isarray.tq",
"src/builtins/array-join.tq",
"src/builtins/array-lastindexof.tq",
"src/builtins/array-map.tq",
"src/builtins/array-of.tq",
"src/builtins/array-reduce-right.tq",
"src/builtins/array-reduce.tq",
"src/builtins/array-reverse.tq",
"src/builtins/array-shift.tq",
"src/builtins/array-slice.tq",
"src/builtins/array-some.tq",
"src/builtins/array-splice.tq",
"src/builtins/array-unshift.tq",
"src/builtins/array.tq",
"src/builtins/arraybuffer.tq",
"src/builtins/base.tq",
"src/builtins/boolean.tq",
"src/builtins/builtins-bigint.tq",
"src/builtins/builtins-string.tq",
"src/builtins/cast.tq",
"src/builtins/collections.tq",
"src/builtins/constructor.tq",
"src/builtins/conversion.tq",
"src/builtins/convert.tq",
"src/builtins/console.tq",
"src/builtins/data-view.tq",
"src/builtins/finalization-registry.tq",
"src/builtins/frames.tq",
"src/builtins/frame-arguments.tq",
"src/builtins/function.tq",
"src/builtins/growable-fixed-array.tq",
"src/builtins/ic-callable.tq",
"src/builtins/ic-dynamic-map-checks.tq",
"src/builtins/ic.tq",
"src/builtins/internal-coverage.tq",
"src/builtins/internal.tq",
"src/builtins/iterator.tq",
"src/builtins/math.tq",
"src/builtins/number.tq",
"src/builtins/object-fromentries.tq",
"src/builtins/object.tq",
"src/builtins/promise-abstract-operations.tq",
"src/builtins/promise-all.tq",
"src/builtins/promise-all-element-closure.tq",
"src/builtins/promise-any.tq",
"src/builtins/promise-constructor.tq",
"src/builtins/promise-finally.tq",
"src/builtins/promise-misc.tq",
"src/builtins/promise-race.tq",
"src/builtins/promise-reaction-job.tq",
"src/builtins/promise-resolve.tq",
"src/builtins/promise-then.tq",
"src/builtins/promise-jobs.tq",
"src/builtins/proxy-constructor.tq",
"src/builtins/proxy-delete-property.tq",
"src/builtins/proxy-get-property.tq",
"src/builtins/proxy-get-prototype-of.tq",
"src/builtins/proxy-has-property.tq",
"src/builtins/proxy-is-extensible.tq",
"src/builtins/proxy-prevent-extensions.tq",
"src/builtins/proxy-revocable.tq",
"src/builtins/proxy-revoke.tq",
"src/builtins/proxy-set-property.tq",
"src/builtins/proxy-set-prototype-of.tq",
"src/builtins/proxy.tq",
"src/builtins/reflect.tq",
"src/builtins/regexp-exec.tq",
"src/builtins/regexp-match-all.tq",
"src/builtins/regexp-match.tq",
"src/builtins/regexp-replace.tq",
"src/builtins/regexp-search.tq",
"src/builtins/regexp-source.tq",
"src/builtins/regexp-split.tq",
"src/builtins/regexp-test.tq",
"src/builtins/regexp.tq",
"src/builtins/string-endswith.tq",
"src/builtins/string-html.tq",
"src/builtins/string-iterator.tq",
"src/builtins/string-pad.tq",
"src/builtins/string-repeat.tq",
"src/builtins/string-replaceall.tq",
"src/builtins/string-slice.tq",
"src/builtins/string-startswith.tq",
"src/builtins/string-substr.tq",
"src/builtins/string-substring.tq",
"src/builtins/string-trim.tq",
"src/builtins/symbol.tq",
"src/builtins/torque-internal.tq",
"src/builtins/typed-array-createtypedarray.tq",
"src/builtins/typed-array-every.tq",
"src/builtins/typed-array-entries.tq",
"src/builtins/typed-array-filter.tq",
"src/builtins/typed-array-find.tq",
"src/builtins/typed-array-findindex.tq",
"src/builtins/typed-array-foreach.tq",
"src/builtins/typed-array-from.tq",
"src/builtins/typed-array-keys.tq",
"src/builtins/typed-array-of.tq",
"src/builtins/typed-array-reduce.tq",
"src/builtins/typed-array-reduceright.tq",
"src/builtins/typed-array-set.tq",
"src/builtins/typed-array-slice.tq",
"src/builtins/typed-array-some.tq",
"src/builtins/typed-array-sort.tq",
"src/builtins/typed-array-subarray.tq",
"src/builtins/typed-array-values.tq",
"src/builtins/typed-array.tq",
"src/builtins/wasm.tq",
"src/builtins/weak-ref.tq",
"src/ic/handler-configuration.tq",
"src/objects/allocation-site.tq",
"src/objects/api-callbacks.tq",
"src/objects/arguments.tq",
"src/objects/bigint.tq",
"src/objects/cell.tq",
"src/objects/code.tq",
"src/objects/contexts.tq",
"src/objects/data-handler.tq",
"src/objects/debug-objects.tq",
"src/objects/descriptor-array.tq",
"src/objects/embedder-data-array.tq",
"src/objects/feedback-cell.tq",
"src/objects/feedback-vector.tq",
"src/objects/fixed-array.tq",
"src/objects/foreign.tq",
"src/objects/free-space.tq",
"src/objects/heap-number.tq",
"src/objects/heap-object.tq",
"src/objects/js-array-buffer.tq",
"src/objects/js-array.tq",
"src/objects/js-collection-iterator.tq",
"src/objects/js-collection.tq",
"src/objects/js-function.tq",
"src/objects/js-generator.tq",
"src/objects/js-objects.tq",
"src/objects/js-promise.tq",
"src/objects/js-proxy.tq",
"src/objects/js-regexp-string-iterator.tq",
"src/objects/js-regexp.tq",
"src/objects/js-weak-refs.tq",
"src/objects/literal-objects.tq",
"src/objects/map.tq",
"src/objects/microtask.tq",
"src/objects/module.tq",
"src/objects/name.tq",
"src/objects/oddball.tq",
"src/objects/ordered-hash-table.tq",
"src/objects/primitive-heap-object.tq",
"src/objects/promise.tq",
"src/objects/property-array.tq",
"src/objects/property-cell.tq",
"src/objects/property-descriptor-object.tq",
"src/objects/prototype-info.tq",
"src/objects/regexp-match-info.tq",
"src/objects/scope-info.tq",
"src/objects/script.tq",
"src/objects/shared-function-info.tq",
"src/objects/source-text-module.tq",
"src/objects/stack-frame-info.tq",
"src/objects/string.tq",
"src/objects/struct.tq",
"src/objects/synthetic-module.tq",
"src/objects/template-objects.tq",
"src/objects/templates.tq",
"src/objects/torque-defined-classes.tq",
"src/wasm/wasm-objects.tq",
"test/torque/test-torque.tq",
"third_party/v8/builtins/array-sort.tq",
],
'torque_files': ['<!@pymod_do_main(third_party.v8.gypfiles.ForEachFormat "<(V8_ROOT)/%s" <@(torque_files_v8_root_relative))'],
'torque_output_root': '<(SHARED_INTERMEDIATE_DIR)/torque-output-root',
'torque_files_replaced': ['<!@pymod_do_main(third_party.v8.gypfiles.ForEachReplace ".tq" "-tq-csa" <@(torque_files_v8_root_relative))'],
'torque_outputs': ['<!@pymod_do_main(third_party.v8.gypfiles.ForEachFormat "<(torque_output_root)/torque-generated/%s.cc" <@(torque_files_replaced))'],
'torque_outputs+': ['<!@pymod_do_main(third_party.v8.gypfiles.ForEachFormat "<(torque_output_root)/torque-generated/%s.h" <@(torque_files_replaced))'],
'v8_compiler_sources': ['<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "v8_compiler_sources = ")'],
'conditions': [
['(target_arch=="arm64" or target_arch=="x64") and disable_v8_pointer_compression==0', {
'v8_enable_pointer_compression': 1,
}, {
'v8_enable_pointer_compression': 0,
}],
['v8_enable_i18n_support', {
'torque_files_v8_root_relative': [
"src/objects/intl-objects.tq",
"src/objects/js-break-iterator.tq",
"src/objects/js-collator.tq",
"src/objects/js-date-time-format.tq",
"src/objects/js-display-names.tq",
"src/objects/js-list-format.tq",
"src/objects/js-locale.tq",
"src/objects/js-number-format.tq",
"src/objects/js-plural-rules.tq",
"src/objects/js-relative-time-format.tq",
"src/objects/js-segment-iterator.tq",
"src/objects/js-segmenter.tq",
"src/objects/js-segments.tq",
]
}]
],
},
'includes': ['toolchain.gypi', 'features.gypi'],
'target_defaults': {
'msvs_settings': {
'VCCLCompilerTool': {
'AdditionalOptions': ['/utf-8']
}
},
},
'targets': [
{
'target_name': 'fake_torque_output',
'hard_dependency': 1,
'type': 'none',
'actions': [
{
'action_name': 'no-op',
# For some reason, if we put these outputs under target run_torque, they
# will be rebuilt unconditionally even if their template files are not
# modified. This could be a bug in our gyp runner.
# As a solution, we put the outputs here in its own target so that ninja
# will know that some target does provide these generated files and ninja
# does not rebuild them all the time.
'outputs': [
'<(torque_output_root)/torque-generated/bit-fields.h',
'<(torque_output_root)/torque-generated/builtin-definitions.h',
'<(torque_output_root)/torque-generated/interface-descriptors.inc',
'<(torque_output_root)/torque-generated/factory.cc',
'<(torque_output_root)/torque-generated/factory.inc',
'<(torque_output_root)/torque-generated/field-offsets.h',
'<(torque_output_root)/torque-generated/class-verifiers.cc',
'<(torque_output_root)/torque-generated/class-verifiers.h',
'<(torque_output_root)/torque-generated/enum-verifiers.cc',
'<(torque_output_root)/torque-generated/objects-printer.cc',
'<(torque_output_root)/torque-generated/objects-body-descriptors-inl.inc',
'<(torque_output_root)/torque-generated/class-definitions.cc',
'<(torque_output_root)/torque-generated/class-definitions-inl.h',
'<(torque_output_root)/torque-generated/class-definitions.h',
'<(torque_output_root)/torque-generated/class-debug-readers.cc',
'<(torque_output_root)/torque-generated/class-debug-readers.h',
'<(torque_output_root)/torque-generated/exported-macros-assembler.cc',
'<(torque_output_root)/torque-generated/exported-macros-assembler.h',
'<(torque_output_root)/torque-generated/csa-types.h',
'<(torque_output_root)/torque-generated/instance-types.h',
'<(torque_output_root)/torque-generated/runtime-macros.cc',
'<(torque_output_root)/torque-generated/runtime-macros.h',
'<(torque_output_root)/torque-generated/internal-class-definitions.h',
'<(torque_output_root)/torque-generated/internal-class-definitions-inl.h',
'<(torque_output_root)/torque-generated/exported-class-definitions.h',
'<(torque_output_root)/torque-generated/exported-class-definitions-inl.h',
],
'inputs': [],
'action': [
# Windows gyp runner does not like empty actions.
'echo',
],
},
],
},
{
'target_name': 'run_torque',
'type': 'none',
'hard_dependency': 1,
'dependent_settings': {
'direct_include_dirs': [
'<(torque_output_root)',
],
},
'dependencies': [
'fake_torque_output',
],
'actions': [
{
'action_name': 'run_torque_action',
'inputs': [ # Order matters.
'<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(host_executable_suffix)',
'<@(torque_files_v8_root_relative)',
],
'outputs': [
'<@(torque_outputs)',
],
'action': [
'<@(_inputs)',
'-o', '<(torque_output_root)/torque-generated',
'-v8-root', '<(V8_ROOT)'
],
},
],
}, # run_torque
{
'target_name': 'v8_maybe_icu',
'type': 'none',
'hard_dependency': 1,
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
['v8_enable_i18n_support', {
'dependencies': [
'<(icu_gyp_path):icui18n',
'<(icu_gyp_path):icuuc',
],
'export_dependent_settings': [
'<(icu_gyp_path):icui18n',
'<(icu_gyp_path):icuuc',
],
}],
],
}, # v8_maybe_icu
{
'target_name': 'torque_generated_initializers',
'type': 'none',
'hard_dependency': 1,
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'msvs_disabled_warnings': [4267, 4312, 4351, 4355, 4800, 4838, 4715, 4309],
'dependencies': [
'generate_bytecode_builtins_list#target',
'run_torque#target',
'v8_maybe_icu',
],
'direct_dependent_settings': {
'sources': [
'<(torque_output_root)/torque-generated/csa-types.h',
'<(torque_output_root)/torque-generated/enum-verifiers.cc',
'<(torque_output_root)/torque-generated/exported-macros-assembler.cc',
'<(torque_output_root)/torque-generated/exported-macros-assembler.h',
'<(V8_ROOT)/src/torque/runtime-support.h',
'<@(torque_outputs)',
],
}
}, # torque_generated_initializers
{
'target_name': 'torque_generated_definitions',
'type': 'none',
'hard_dependency': 1,
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'dependencies': [
'generate_bytecode_builtins_list#target',
'run_torque#target',
'v8_maybe_icu',
],
'direct_dependent_settings': {
'sources': [
'<(torque_output_root)/torque-generated/class-verifiers.cc',
'<(torque_output_root)/torque-generated/class-verifiers.h',
'<(torque_output_root)/torque-generated/factory.cc',
'<(torque_output_root)/torque-generated/objects-printer.cc',
'<(torque_output_root)/torque-generated/runtime-macros.cc',
],
'include_dirs': [
'<(torque_output_root)',
],
},
}, # torque_generated_definitions
{
'target_name': 'generate_bytecode_builtins_list',
'type': 'none',
'hard_dependency': 1,
'direct_dependent_settings': {
'sources': [
'<(generate_bytecode_builtins_list_output)',
],
'include_dirs': [
'<(generate_bytecode_output_root)',
'<(torque_output_root)',
],
},
'actions': [
{
'action_name': 'generate_bytecode_builtins_list_action',
'inputs': [
'<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(host_executable_suffix)',
],
'outputs': [
'<(generate_bytecode_builtins_list_output)',
],
'action': [
'python2',
'<(V8_ROOT)/tools/run.py',
'<@(_inputs)',
'<@(_outputs)',
],
},
],
}, # generate_bytecode_builtins_list#target
{
'target_name': 'v8_init',
'type': 'static_library',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'dependencies': [
'generate_bytecode_builtins_list#target',
'run_torque#target',
'v8_initializers',
'v8_maybe_icu',
],
'sources': [
### gcmole(all) ###
'<(V8_ROOT)/src/init/setup-isolate-full.cc',
# '<(generate_bytecode_builtins_list_output)',
],
}, # v8_init
{
'target_name': 'v8_initializers',
'type': 'static_library',
'dependencies': [
'torque_generated_initializers',
],
'include_dirs': [
'<(torque_output_root)',
'<(generate_bytecode_output_root)',
],
'sources': [
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_initializers.*?sources = ")',
'<@(torque_outputs)',
],
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
['v8_target_arch=="x86"', {
'sources': [
'<(V8_ROOT)/src/builtins/ia32/builtins-ia32.cc',
],
}],
['v8_target_arch=="x64"', {
'sources': [
'<(V8_ROOT)/src/builtins/x64/builtins-x64.cc',
],
}],
['v8_target_arch=="arm"', {
'sources': [
'<(V8_ROOT)/src/builtins/arm/builtins-arm.cc',
],
}],
['v8_target_arch=="arm64"', {
'sources': [
'<(V8_ROOT)/src/builtins/arm64/builtins-arm64.cc',
],
}],
['v8_target_arch=="mips" or v8_target_arch=="mipsel"', {
'sources': [
'<(V8_ROOT)/src/builtins/mips/builtins-mips.cc',
],
}],
['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
'sources': [
'<(V8_ROOT)/src/builtins/mips64/builtins-mips64.cc',
],
}],
['v8_target_arch=="ppc"', {
'sources': [
'<(V8_ROOT)/src/builtins/ppc/builtins-ppc.cc',
],
}],
['v8_target_arch=="ppc64"', {
'sources': [
'<(V8_ROOT)/src/builtins/ppc/builtins-ppc.cc',
],
}],
['v8_target_arch=="s390x"', {
'sources': [
'<(V8_ROOT)/src/builtins/s390/builtins-s390.cc',
],
}],
['v8_enable_i18n_support==1', {
'dependencies': [
'<(icu_gyp_path):icui18n',
'<(icu_gyp_path):icuuc',
],
}, {
'sources!': [
'<(V8_ROOT)/src/builtins/builtins-intl-gen.cc',
],
}],
['OS=="win"', {
'msvs_precompiled_header': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.h',
'msvs_precompiled_source': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.cc',
'sources': [
'<(_msvs_precompiled_header)',
'<(_msvs_precompiled_source)',
],
}],
],
}, # v8_initializers
{
'target_name': 'v8_snapshot',
'type': 'static_library',
'toolsets': ['target'],
'conditions': [
['want_separate_host_toolset', {
'conditions': [
['v8_target_arch=="arm64"', {
'msvs_enable_marmasm': 1,
}]
],
'dependencies': [
'generate_bytecode_builtins_list#target',
'run_torque#target',
'mksnapshot#host',
'v8_maybe_icu',
# [GYP] added explicitly, instead of inheriting from the other deps
'v8_base_without_compiler',
'v8_compiler_for_mksnapshot',
'v8_initializers',
'v8_libplatform',
]
}, {
'dependencies': [
'generate_bytecode_builtins_list#target',
'run_torque#target',
'mksnapshot',
'v8_maybe_icu',
# [GYP] added explicitly, instead of inheriting from the other deps
'v8_base_without_compiler',
'v8_compiler_for_mksnapshot',
'v8_initializers',
'v8_libplatform',
]
}],
['cobalt_v8_emit_builtins_as_inline_asm==1', {
'actions': [
{
'action_name': 'convert_asm_to_inline',
'inputs': ['<(INTERMEDIATE_DIR)/embedded.S'],
'outputs': ['<(INTERMEDIATE_DIR)/embedded.cc'],
'action': [
'python2',
'tools/snapshot/asm_to_inline_asm.py',
'>@(_inputs)',
'>@(_outputs)',
],
},
],
'sources': ['<(INTERMEDIATE_DIR)/embedded.cc'],
}, {
'sources': ['<(INTERMEDIATE_DIR)/embedded.S'],
}],
],
'sources': [
'<(V8_ROOT)/src/init/setup-isolate-deserialize.cc',
'<(INTERMEDIATE_DIR)/snapshot.cc',
],
'xcode_settings': {
# V8 7.4 over macOS10.11 compatibility
# Refs: https://github.com/nodejs/node/pull/26685
'GCC_GENERATE_DEBUGGING_SYMBOLS': 'NO',
},
'actions': [
{
'action_name': 'run_mksnapshot',
'message': 'generating: >@(_outputs)',
'variables': {
'mksnapshot_flags': [
'--turbo_instruction_scheduling',
'--no-partial-constant-pool',
# In cross builds, the snapshot may be generated for both the host and
# target toolchains. The same host binary is used to generate both, so
# mksnapshot needs to know which target OS to use at runtime. It's weird,
# but the target OS is really <(OS).
'--target_os=<(OS)',
'--target_arch=<(v8_target_arch)',
'--startup_src', '<(INTERMEDIATE_DIR)/snapshot.cc',
'--embedded_variant', 'Default',
'--embedded_src', '<(INTERMEDIATE_DIR)/embedded.S',
],
},
'inputs': [
'<(mksnapshot_exec)',
],
'outputs': [
'<(INTERMEDIATE_DIR)/snapshot.cc',
'<(INTERMEDIATE_DIR)/embedded.S',
],
'sources': [
'<(INTERMEDIATE_DIR)/snapshot.cc',
],
'conditions': [
['v8_random_seed', {
'variables': {
'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
},
}],
['v8_os_page_size', {
'variables': {
'mksnapshot_flags': ['--v8_os_page_size', '<(v8_os_page_size)'],
},
}],
['v8_embed_script != ""', {
'inputs': ['<(v8_embed_script)'],
'variables': {
'mksnapshot_flags': ['<(v8_embed_script)'],
},
}],
['v8_enable_snapshot_code_comments', {
'variables': {
'mksnapshot_flags': ['--code-comments'],
},
}],
['v8_enable_snapshot_native_code_counters', {
'variables': {
'mksnapshot_flags': ['--native-code-counters'],
},
}, {
# --native-code-counters is the default in debug mode so make sure we can
# unset it.
'variables': {
'mksnapshot_flags': ['--no-native-code-counters'],
},
}],
],
'action': [
'>@(_inputs)',
'>@(mksnapshot_flags)',
],
},
],
}, # v8_snapshot
{
'target_name': 'v8_version',
'type': 'none',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'direct_dependent_settings': {
'sources': [
'<(V8_ROOT)/include/v8-value-serializer-version.h',
'<(V8_ROOT)/include/v8-version-string.h',
'<(V8_ROOT)/include/v8-version.h',
],
},
}, # v8_version
{
'target_name': 'v8_headers',
'type': 'none',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'dependencies': [
'v8_version',
],
'direct_dependent_settings': {
'sources': [
'<(V8_ROOT)/include/v8-cppgc.h',
'<(V8_ROOT)/include/v8-fast-api-calls.h',
'<(V8_ROOT)/include/v8-internal.h',
'<(V8_ROOT)/include/v8.h',
'<(V8_ROOT)/include/v8config.h',
# The following headers cannot be platform-specific. The include validation
# of `gn gen $dir --check` requires all header files to be available on all
# platforms.
'<(V8_ROOT)/include/v8-wasm-trap-handler-posix.h',
'<(V8_ROOT)/include/v8-wasm-trap-handler-win.h',
],
},
}, # v8_headers
{
'target_name': 'v8_shared_internal_headers',
'type': 'none',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'dependencies': [
'v8_headers',
],
'direct_dependent_settings': {
'sources': [
'<(V8_ROOT)/src/common/globals.h',
],
},
}, # v8_shared_internal_headers
{
'target_name': 'v8_compiler_opt',
'type': 'static_library',
'dependencies': [
'generate_bytecode_builtins_list#target',
'run_torque#target',
'v8_maybe_icu',
'v8_base_without_compiler',
],
'msvs_disabled_warnings': [4267, 4312, 4351, 4355, 4800, 4838, 4715],
'sources': ['<@(v8_compiler_sources)'],
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
['OS=="win"', {
'msvs_precompiled_header': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.h',
'msvs_precompiled_source': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.cc',
'sources': [
'<(_msvs_precompiled_header)',
'<(_msvs_precompiled_source)',
],
}],
],
}, # v8_compiler_opt
{
'target_name': 'v8_compiler',
'type': 'static_library',
'dependencies': [
'generate_bytecode_builtins_list#target',
'run_torque#target',
'v8_maybe_icu',
'v8_base_without_compiler',
],
'msvs_disabled_warnings': [4267, 4312, 4351, 4355, 4800, 4838, 4715, 4309],
'msvs_settings': {
'VCCLCompilerTool': {
'AdditionalOptions': [
'/EHsc',
'/std:c++14',
],
},
},
'sources': ['<@(v8_compiler_sources)'],
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
['OS=="win"', {
'msvs_precompiled_header': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.h',
'msvs_precompiled_source': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.cc',
'sources': [
'<(_msvs_precompiled_header)',
'<(_msvs_precompiled_source)',
],
}],
],
}, # v8_compiler
{
'target_name': 'v8_compiler_for_mksnapshot',
'type': 'none',
'hard_dependency': 1,
'dependencies': [
'generate_bytecode_builtins_list#target',
'run_torque#target',
'v8_maybe_icu',
],
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
['is_component_build and not v8_optimized_debug and v8_enable_fast_mksnapshot', {
'dependencies': [
'v8_compiler_opt',
],
'export_dependent_settings': [
'v8_compiler_opt',
],
}, {
'dependencies': [
'v8_compiler',
],
'export_dependent_settings': [
'v8_compiler',
],
}],
],
}, # v8_compiler_for_mksnapshot
{
'target_name': 'v8_base_without_compiler',
'type': 'static_library',
'dependencies': [
'<(V8_ROOT)/src/inspector/inspector.gyp:protocol_generated_sources#target',
# Code generators that only need to be build for the host.
'cppgc_base',
'torque_generated_definitions',
'v8_headers',
'v8_libbase',
'v8_libsampler',
'v8_shared_internal_headers',
'v8_version',
# BUILD.gn public_deps
'generate_bytecode_builtins_list#target',
'run_torque#target',
'v8_cppgc_shared',
'v8_maybe_icu',
'v8_zlib',
],
'includes': ['src/inspector/inspector.gypi'],
'direct_dependent_settings': {
'include_dirs': [
'<(generate_bytecode_output_root)',
'<(torque_output_root)',
],
},
'cflags_cc': ['-fno-exceptions'],
'cflags_cc_host': ['-fno-exceptions'],
'msvs_disabled_warnings': [4267, 4312, 4351, 4355, 4800, 4838, 4715, 4309],
'sources': [
# "//base/trace_event/common/trace_event_common.h",
### gcmole(all) ###
'<(generate_bytecode_builtins_list_output)',
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?sources = ")',
'src/wasm/baseline/liftoff-compiler-starboard.cc',
'<@(inspector_all_sources)',
],
'conditions': [
['v8_enable_third_party_heap==1', {
# TODO(targos): add values from v8_third_party_heap_files to sources
}, {
'sources': [
'<(V8_ROOT)/src/heap/third-party/heap-api-stub.cc',
],
}],
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
['v8_control_flow_integrity==1', {
'sources': [
'<(V8_ROOT)/src/execution/arm64/pointer-authentication-arm64.h',
],
}, {
'sources': [
'<(V8_ROOT)/src/execution/pointer-authentication-dummy.h',
],
}],
['v8_target_arch=="x86"', {
'sources': [ ### gcmole(arch:ia32) ###
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_current_cpu == \\"x86.*?sources \+= ")',
],
}],
['v8_target_arch=="x64"', {
'sources': [ ### gcmole(arch:x64) ###
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_current_cpu == \\"x64.*?sources \+= ")',
],
'conditions': [
# iOS Xcode simulator builds run on an x64 target. iOS and macOS are both
# based on Darwin and thus POSIX-compliant to a similar degree.
['OS=="linux" or OS=="mac" or OS=="ios" or OS=="freebsd"', {
'sources': [
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?is_linux.*?sources \+= ")',
],
}],
['OS=="win"', {
'sources': [
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?is_win.*?sources \+= ")',
],
}],
],
}],
['v8_target_arch=="arm"', {
'sources': [ ### gcmole(arch:arm) ###
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_current_cpu == \\"arm\\".*?sources \+= ")',
],
}],
['v8_target_arch=="arm64"', {
'sources': [ ### gcmole(arch:arm64) ###
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_current_cpu == \\"arm64\\".*?sources \+= ")',
],
'conditions': [
['OS=="win"', {
'sources': [
"<(V8_ROOT)/src/diagnostics/unwinding-info-win64.cc",
"<(V8_ROOT)/src/diagnostics/unwinding-info-win64.h"
],
}],
],
}],
['v8_target_arch=="mips" or v8_target_arch=="mipsel"', {
'sources': [ ### gcmole(arch:mipsel) ###
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_current_cpu == \\"mips\\".*?sources \+= ")',
],
}],
['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
'sources': [ ### gcmole(arch:mips64el) ###
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_current_cpu == \\"mips64\\".*?sources \+= ")',
],
}],
['v8_target_arch=="ppc"', {
'sources': [ ### gcmole(arch:ppc) ###
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_current_cpu == \\"ppc\\".*?sources \+= ")',
],
}],
['v8_target_arch=="ppc64"', {
'sources': [ ### gcmole(arch:ppc64) ###
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_current_cpu == \\"ppc64\\".*?sources \+= ")',
],
}],
['v8_target_arch=="s390x"', {
'sources': [ ### gcmole(arch:s390) ###
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_current_cpu == \\"s390\\".*?sources \+= ")',
],
}],
['OS=="win"', {
'msvs_precompiled_header': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.h',
'msvs_precompiled_source': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.cc',
'sources': [
'<(_msvs_precompiled_header)',
'<(_msvs_precompiled_source)',
],
# This will prevent V8's .cc files conflicting with the inspector's
# .cpp files in the same shard.
'msvs_settings': {
'VCCLCompilerTool': {
'ObjectFile': '$(IntDir)%(Extension)\\',
},
},
}],
['is_starboard', {
'sources': ['src/deoptimizer/deoptimizer-cfi-empty.cc'],
'target_conditions': [
['_toolset=="host"', {
# if _toolset="host", we use the native host build which does not
# involve Starboard at all.
'conditions': [
['host_os=="win"', {
'sources': [
'src/diagnostics/unwinding-info-win64.cc',
'src/diagnostics/unwinding-info-win64.h',
'src/trap-handler/handler-inside-win.cc',
'src/trap-handler/handler-inside-win.h',
'src/trap-handler/handler-outside-win.cc',
'src/heap/base/asm/x64/push_registers_masm.S',
],
'sources/': [
['exclude','src/heap/base/asm/x64/push_registers_asm',]
],
}],
['host_os=="linux" or host_os=="mac"', {
'conditions': [
['v8_target_arch=="x64"', {
'sources': [
"src/trap-handler/handler-inside-posix.cc",
"src/trap-handler/handler-inside-posix.h",
"src/trap-handler/handler-outside-posix.cc",
],
}],
],
}],
],
}, {
'conditions': [
['cobalt_compiled_by_msvc', {
'sources': [
'src/heap/base/asm/x64/push_registers_masm.S',
],
'sources/': [
['exclude','src/heap/base/asm/x64/push_registers_asm',]
],
}],
],
}],
],
}],
['component=="shared_library"', {
'defines': [
'BUILDING_V8_SHARED',
],
}],
['v8_enable_i18n_support', {
'dependencies': [
'run_gen-regexp-special-case',
],
'sources': [
'<(SHARED_INTERMEDIATE_DIR)/src/regexp/special-case.cc',
],
'conditions': [
['icu_use_data_file_flag', {
'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'],
}, {
'conditions': [
['OS=="win"', {
'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'],
}, {
'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'],
}],
],
}],
['OS=="win"', {
'dependencies': [
'<(icu_gyp_path):icudata#target',
],
}],
],
}, { # v8_enable_i18n_support==0
'sources!': [
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_base_without_compiler.*?v8_enable_i18n_support.*?sources -= ")',
],
}],
['v8_postmortem_support', {
'dependencies': ['postmortem-metadata#target'],
}],
['v8_enable_third_party_heap', {
# TODO(targos): add values from v8_third_party_heap_libs to link_settings.libraries
}],
# Platforms that don't have Compare-And-Swap (CAS) support need to link atomic library
# to implement atomic memory access
['v8_current_cpu in ["mips", "mipsel", "mips64", "mips64el", "ppc", "arm"]', {
'link_settings': {
'libraries': ['-latomic', ],
},
}],
],
}, # v8_base_without_compiler
{
'target_name': 'v8_base',
'type': 'none',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'dependencies': [
'v8_base_without_compiler',
'v8_compiler',
],
}, # v8_base
{
'target_name': 'torque_base',
'type': 'static_library',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'sources': [
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"torque_base.*?sources = ")',
],
'dependencies': [
'v8_shared_internal_headers',
'v8_libbase',
],
'defines!': [
'_HAS_EXCEPTIONS=0',
'BUILDING_V8_SHARED=1',
],
'cflags_cc!': ['-fno-exceptions'],
'cflags_cc': ['-fexceptions'],
'xcode_settings': {
'GCC_ENABLE_CPP_EXCEPTIONS': 'YES', # -fexceptions
},
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeTypeInfo': 'true',
'ExceptionHandling': 1,
},
},
}, # torque_base
{
'target_name': 'torque_ls_base',
'type': 'static_library',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'sources': [
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"torque_ls_base.*?sources = ")',
],
'dependencies': [
'torque_base',
],
'defines!': [
'_HAS_EXCEPTIONS=0',
'BUILDING_V8_SHARED=1',
],
'cflags_cc!': ['-fno-exceptions'],
'cflags_cc': ['-fexceptions'],
'xcode_settings': {
'GCC_ENABLE_CPP_EXCEPTIONS': 'YES', # -fexceptions
},
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeTypeInfo': 'true',
'ExceptionHandling': 1,
},
},
}, # torque_ls_base
{
'target_name': 'v8_libbase',
'type': 'static_library',
'sources': [
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"v8_libbase.*?sources = ")',
],
'dependencies': [
'v8_headers',
],
'msvs_disabled_warnings': [4267, 4312, 4351, 4355, 4800, 4838, 4715, 4309],
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
['is_component_build', {
'defines': ["BUILDING_V8_BASE_SHARED"],
}],
['is_posix or is_fuchsia', {
'sources': [
'<(V8_ROOT)/src/base/platform/platform-posix.cc',
'<(V8_ROOT)/src/base/platform/platform-posix.h',
],
'conditions': [
['OS != "aix" and OS != "solaris"', {
'sources': [
'<(V8_ROOT)/src/base/platform/platform-posix-time.cc',
'<(V8_ROOT)/src/base/platform/platform-posix-time.h',
],
}],
],
}],
['OS=="linux"', {
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-linux.cc',
],
'link_settings': {
'libraries': [
'-ldl',
'-lrt'
],
},
}],
['OS=="aix"', {
'variables': {
# Used to differentiate `AIX` and `OS400`(IBM i).
'aix_variant_name': '<!(uname -s)',
},
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-aix.cc',
],
'conditions': [
[ '"<(aix_variant_name)"=="AIX"', { # It is `AIX`
'link_settings': {
'libraries': [
'-ldl',
'-lrt'
],
},
}],
],
}],
['is_android', {
'sources': [
'<(V8_ROOT)/src/base/platform/platform-posix.cc',
'<(V8_ROOT)/src/base/platform/platform-posix.h',
'<(V8_ROOT)/src/base/platform/platform-posix-time.cc',
'<(V8_ROOT)/src/base/platform/platform-posix-time.h',
],
'link_settings': {
'target_conditions': [
['_toolset=="host" and host_os=="linux"', {
'libraries': [
'-ldl',
'-lrt'
],
}],
],
},
'target_conditions': [
['_toolset=="host"', {
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-linux.cc',
],
}, {
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_android.cc',
'<(V8_ROOT)/src/base/platform/platform-linux.cc',
],
}],
],
}],
['is_fuchsia', {
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_fuchsia.cc',
'<(V8_ROOT)/src/base/platform/platform-fuchsia.cc',
]
}],
['OS == "mac" or OS == "ios"', {
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-macos.cc',
]
}],
['is_win', {
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_win.cc',
'<(V8_ROOT)/src/base/platform/platform-win32.cc',
'<(V8_ROOT)/src/base/win32-headers.h',
],
'conditions': [['target_arch == "arm64"', {
'defines': ['_WIN32_WINNT=0x0602'], # For GetCurrentThreadStackLimits on Windows on Arm
}]],
'defines': ['_CRT_RAND_S'], # for rand_s()
'direct_dependent_settings': {
'msvs_settings': {
'VCLinkerTool': {
'AdditionalDependencies': [
'dbghelp.lib',
'winmm.lib',
'ws2_32.lib'
]
}
},
},
}],
['target_arch == "mips" or OS == "mips64"', {
# here just for 'BUILD.gn' sync
# 'data': [
# '<(V8_ROOT)/tools/mips_toolchain/sysroot/usr/lib/',
# '<(V8_ROOT)/tools/mips_toolchain/sysroot/usr/lib/',
# ],
}],
# end of conditions from 'BUILD.gn'
# Node.js validated
['OS=="solaris"', {
'link_settings': {
'libraries': [
'-lnsl',
'-lrt',
]
},
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-solaris.cc',
],
}],
# YMMV with the following conditions
['OS=="qnx"', {
'link_settings': {
'target_conditions': [
['_toolset=="host" and host_os=="linux"', {
'libraries': [
'-lrt'
],
}],
['_toolset=="target"', {
'libraries': [
'-lbacktrace'
],
}],
],
},
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-posix.h',
'<(V8_ROOT)/src/base/platform/platform-posix.cc',
'<(V8_ROOT)/src/base/platform/platform-posix-time.h',
'<(V8_ROOT)/src/base/platform/platform-posix-time.cc',
'<(V8_ROOT)/src/base/qnx-math.h'
],
'target_conditions': [
['_toolset=="host" and host_os=="linux"', {
'sources': [
'<(V8_ROOT)/src/base/platform/platform-linux.cc'
],
}],
['_toolset=="host" and host_os=="mac"', {
'sources': [
'<(V8_ROOT)/src/base/platform/platform-macos.cc'
],
}],
['_toolset=="target"', {
'sources': [
'<(V8_ROOT)/src/base/platform/platform-qnx.cc'
],
}],
],
},
],
['OS=="freebsd"', {
'link_settings': {
'libraries': [
'-L/usr/local/lib -lexecinfo',
]
},
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-freebsd.cc',
'<(V8_ROOT)/src/base/platform/platform-posix.h',
'<(V8_ROOT)/src/base/platform/platform-posix.cc',
'<(V8_ROOT)/src/base/platform/platform-posix-time.h',
'<(V8_ROOT)/src/base/platform/platform-posix-time.cc',
],
}
],
['OS=="openbsd"', {
'link_settings': {
'libraries': [
'-L/usr/local/lib -lexecinfo',
]
},
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-openbsd.cc',
'<(V8_ROOT)/src/base/platform/platform-posix.h',
'<(V8_ROOT)/src/base/platform/platform-posix.cc',
'<(V8_ROOT)/src/base/platform/platform-posix-time.h',
'<(V8_ROOT)/src/base/platform/platform-posix-time.cc',
],
}
],
['OS=="netbsd"', {
'link_settings': {
'libraries': [
'-L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lexecinfo',
]
},
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-openbsd.cc',
'<(V8_ROOT)/src/base/platform/platform-posix.h',
'<(V8_ROOT)/src/base/platform/platform-posix.cc',
'<(V8_ROOT)/src/base/platform/platform-posix-time.h',
'<(V8_ROOT)/src/base/platform/platform-posix-time.cc',
],
}
],
['is_starboard', {
'target_conditions': [
['_toolset=="host"', {
# if _toolset="host", we use the native host build which does not
# involve Starboard at all.
'target_conditions': [
['host_os=="linux"', {
'ldflags_host': [
'-ldl',
'-lrt'
],
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-linux.cc',
'<(V8_ROOT)/src/base/platform/platform-posix.h',
'<(V8_ROOT)/src/base/platform/platform-posix.cc',
'<(V8_ROOT)/src/base/platform/platform-posix-time.h',
'<(V8_ROOT)/src/base/platform/platform-posix-time.cc',
],
}],
['host_os=="win"', {
# Most of the following codes are copied from 'OS="win"'
# section.
'defines': [
'_CRT_RAND_S' # for rand_s()
],
'variables': {
'gyp_generators': '<!pymod_do_main(starboard.build.gyp_functions getenv GYP_GENERATORS)',
},
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_win.cc',
'<(V8_ROOT)/src/base/platform/platform-win32.cc',
'<(V8_ROOT)/src/base/win32-headers.h',
],
'include_dirs': [
'<(torque_output_root)',
],
'msvs_disabled_warnings': [4351, 4355, 4800],
}],
['host_os == "mac"', {
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
'<(V8_ROOT)/src/base/platform/platform-macos.cc',
'<(V8_ROOT)/src/base/platform/platform-posix.h',
'<(V8_ROOT)/src/base/platform/platform-posix.cc',
'<(V8_ROOT)/src/base/platform/platform-posix-time.h',
'<(V8_ROOT)/src/base/platform/platform-posix-time.cc',
],
}],
],
}, {
# If _toolset=="target", build with target platform's Starboard.
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_starboard.cc',
'<(V8_ROOT)/src/base/platform/platform-starboard.cc',
],
}],
],
}],
],
}, # v8_libbase
{
'target_name': 'v8_libplatform',
'type': 'static_library',
'dependencies': [
'v8_libbase',
],
'sources': [
'<(V8_ROOT)/base/trace_event/common/trace_event_common.h',
'<(V8_ROOT)/include/libplatform/libplatform-export.h',
'<(V8_ROOT)/include/libplatform/libplatform.h',
'<(V8_ROOT)/include/libplatform/v8-tracing.h',
'<(V8_ROOT)/src/libplatform/default-foreground-task-runner.cc',
'<(V8_ROOT)/src/libplatform/default-foreground-task-runner.h',
'<(V8_ROOT)/src/libplatform/default-job.cc',
'<(V8_ROOT)/src/libplatform/default-job.h',
'<(V8_ROOT)/src/libplatform/default-platform.cc',
'<(V8_ROOT)/src/libplatform/default-platform.h',
'<(V8_ROOT)/src/libplatform/default-worker-threads-task-runner.cc',
'<(V8_ROOT)/src/libplatform/default-worker-threads-task-runner.h',
'<(V8_ROOT)/src/libplatform/delayed-task-queue.cc',
'<(V8_ROOT)/src/libplatform/delayed-task-queue.h',
'<(V8_ROOT)/src/libplatform/task-queue.cc',
'<(V8_ROOT)/src/libplatform/task-queue.h',
'<(V8_ROOT)/src/libplatform/tracing/trace-buffer.cc',
'<(V8_ROOT)/src/libplatform/tracing/trace-buffer.h',
'<(V8_ROOT)/src/libplatform/tracing/trace-config.cc',
'<(V8_ROOT)/src/libplatform/tracing/trace-object.cc',
'<(V8_ROOT)/src/libplatform/tracing/trace-writer.cc',
'<(V8_ROOT)/src/libplatform/tracing/trace-writer.h',
'<(V8_ROOT)/src/libplatform/tracing/tracing-controller.cc',
'<(V8_ROOT)/src/libplatform/worker-thread.cc',
'<(V8_ROOT)/src/libplatform/worker-thread.h',
],
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
['component=="shared_library"', {
'direct_dependent_settings': {
'defines': ['USING_V8_PLATFORM_SHARED'],
},
'defines': ['BUILDING_V8_PLATFORM_SHARED'],
}],
['v8_use_perfetto', {
'sources': [
'<(V8_ROOT)/src/libplatform/tracing/json-trace-event-listener.cc',
'<(V8_ROOT)/src/libplatform/tracing/json-trace-event-listener.h',
'<(V8_ROOT)/src/libplatform/tracing/trace-event-listener.cc',
'<(V8_ROOT)/src/libplatform/tracing/trace-event-listener.h',
],
'dependencies': [
'<(V8_ROOT)/third_party/perfetto:libperfetto',
'<(V8_ROOT)/third_party/perfetto/protos/perfetto/trace:lite',
],
}],
],
'direct_dependent_settings': {
'include_dirs': [
'<(V8_ROOT)/include',
],
},
}, # v8_libplatform
{
'target_name': 'v8_libsampler',
'type': 'static_library',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'dependencies': [
'v8_libbase',
],
'sources': [
'<(V8_ROOT)/src/libsampler/sampler.cc',
'<(V8_ROOT)/src/libsampler/sampler.h'
],
}, # v8_libsampler
{
'target_name': 'bytecode_builtins_list_generator',
'type': 'executable',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host'],
}],
],
'defines!': [
'BUILDING_V8_SHARED=1',
],
'dependencies': [
"v8_libbase",
# "build/win:default_exe_manifest",
],
'sources': [
"<(V8_ROOT)/src/builtins/generate-bytecodes-builtins-list.cc",
"<(V8_ROOT)/src/interpreter/bytecode-operands.cc",
"<(V8_ROOT)/src/interpreter/bytecode-operands.h",
"<(V8_ROOT)/src/interpreter/bytecodes.cc",
"<(V8_ROOT)/src/interpreter/bytecodes.h",
],
}, # bytecode_builtins_list_generator
{
'target_name': 'mksnapshot',
'type': 'executable',
'dependencies': [
'v8_base_without_compiler',
'v8_compiler_for_mksnapshot',
'v8_init',
'v8_libbase',
'v8_libplatform',
'v8_maybe_icu',
# "build/win:default_exe_manifest",
],
'sources': [
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "\\"mksnapshot.*?sources = ")',
],
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host'],
}],
['clang==1 and host_os!="mac"', {
'ldflags_host': [
'-fuse-ld=lld',
],
}],
],
}, # mksnapshot
{
'target_name': 'torque',
'type': 'executable',
'dependencies': [
'torque_base',
# "build/win:default_exe_manifest",
],
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host'],
}],
],
'defines!': [
'_HAS_EXCEPTIONS=0',
'BUILDING_V8_SHARED=1',
],
'cflags_cc!': ['-fno-exceptions'],
'cflags_cc': ['-fexceptions'],
'xcode_settings': {
'GCC_ENABLE_CPP_EXCEPTIONS': 'YES', # -fexceptions
},
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeTypeInfo': 'true',
'ExceptionHandling': 1,
},
'VCLinkerTool': {
'AdditionalDependencies': [
'dbghelp.lib',
'winmm.lib',
'ws2_32.lib'
]
}
},
'sources': [
"<(V8_ROOT)/src/torque/torque.cc",
],
}, # torque
{
'target_name': 'torque-language-server',
'type': 'executable',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host'],
}],
],
'dependencies': [
'torque_base',
'torque_ls_base',
# "build/win:default_exe_manifest",
],
'defines!': [
'_HAS_EXCEPTIONS=0',
'BUILDING_V8_SHARED=1',
],
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeTypeInfo': 'true',
'ExceptionHandling': 1,
},
},
'sources': [
"<(V8_ROOT)/src/torque/ls/torque-language-server.cc",
],
}, # torque-language-server
{
'target_name': 'gen-regexp-special-case',
'type': 'executable',
'dependencies': [
'v8_libbase',
# "build/win:default_exe_manifest",
'v8_maybe_icu',
],
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host'],
}],
],
'sources': [
"<(V8_ROOT)/src/regexp/gen-regexp-special-case.cc",
],
}, # gen-regexp-special-case
# {
# 'target_name': 'run_gen-regexp-special-case',
# 'type': 'none',
# 'conditions': [
# ['want_separate_host_toolset', {
# 'dependencies': ['gen-regexp-special-case#host'],
# 'toolsets': ['host', 'target'],
# }, {
# 'dependencies': ['gen-regexp-special-case'],
# }],
# ],
# 'actions': [
# {
# 'action_name': 'run_gen-regexp-special-case_action',
# 'inputs': [
# '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen-regexp-special-case<(EXECUTABLE_SUFFIX)',
# ],
# 'outputs': [
# '<(SHARED_INTERMEDIATE_DIR)/src/regexp/special-case.cc',
# ],
# 'action': [
# 'python2',
# '<(V8_ROOT)/tools/run.py',
# '<@(_inputs)',
# '<@(_outputs)',
# ],
# },
# ],
# }, # run_gen-regexp-special-case
{
'target_name': 'cppgc_base',
'type': 'none',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
],
'direct_dependent_settings': {
'sources': [
'<!@pymod_do_main(third_party.v8.gypfiles.GN-scraper "<(V8_ROOT)/BUILD.gn" "v8_source_set.\\"cppgc_base.*?sources = ")',
],
},
}, # cppgc_base
{
'target_name': 'v8_cppgc_shared',
'type': 'none',
'toolsets': ['host', 'target'],
'direct_dependent_settings': {
'sources': [
'<(V8_ROOT)/src/heap/base/stack.cc',
'<(V8_ROOT)/src/heap/base/stack.h',
'<(V8_ROOT)/src/heap/base/worklist.cc',
'<(V8_ROOT)/src/heap/base/worklist.h',
],
'conditions': [
['clang or OS!="win"', {
'conditions': [
['_toolset == "host" and host_arch == "x64" or _toolset == "target" and target_arch=="x64"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/x64/push_registers_asm.cc',
],
}],
['_toolset == "host" and target_arch == "arm" or _toolset == "host" and target_arch=="x86"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/ia32/push_registers_asm.cc',
],
# x86 target requires x86 host build.
'sources/': [
['exclude','src/heap/base/asm/x64/push_registers_asm',]
],
}],
['_toolset == "host" and host_arch == "arm" or _toolset == "target" and target_arch=="arm"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/arm/push_registers_asm.cc',
],
}],
['_toolset == "host" and host_arch == "arm64" or _toolset == "target" and target_arch=="arm64"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/arm64/push_registers_asm.cc',
],
}],
['_toolset == "host" and host_arch == "ppc64" or _toolset == "target" and target_arch=="ppc64"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/ppc/push_registers_asm.cc',
],
}],
['_toolset == "host" and host_arch == "s390x" or _toolset == "target" and target_arch=="s390x"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/s390/push_registers_asm.cc',
],
}],
['_toolset == "host" and host_arch == "mips" or _toolset == "target" and target_arch=="mips" or _toolset == "host" and host_arch == "mipsel" or _toolset == "target" and target_arch=="mipsel"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/mips/push_registers_asm.cc',
],
}],
['_toolset == "host" and host_arch == "mips64" or _toolset == "target" and target_arch=="mips64" or _toolset == "host" and host_arch == "mips64el" or _toolset == "target" and target_arch=="mips64el"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/mips64/push_registers_asm.cc',
],
}],
]
}],
['OS=="win"', {
'conditions': [
['_toolset == "host" and host_arch == "x64" or _toolset == "target" and target_arch=="x64"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/x64/push_registers_masm.S',
],
}],
['_toolset == "host" and host_arch == "x86" or _toolset == "target" and target_arch=="x86"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/ia32/push_registers_masm.S',
],
}],
['_toolset == "host" and host_arch == "arm64" or _toolset == "target" and target_arch=="arm64"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/arm64/push_registers_masm.S',
],
}],
],
}],
],
},
}, # v8_cppgc_shared
###############################################################################
# Public targets
#
{
'target_name': 'v8',
'hard_dependency': 1,
'toolsets': ['target'],
'dependencies': [
'v8_snapshot',
],
'conditions': [
['component=="shared_library"', {
'type': '<(component)',
'sources': [
# Note: on non-Windows we still build this file so that gyp
# has some sources to link into the component.
'<(V8_ROOT)/src/utils/v8dll-main.cc',
],
'defines': [
'BUILDING_V8_SHARED',
],
'direct_dependent_settings': {
'defines': [
'USING_V8_SHARED',
],
},
'conditions': [
['OS=="mac"', {
'xcode_settings': {
'OTHER_LDFLAGS': ['-dynamiclib', '-all_load']
},
}],
['soname_version!=""', {
'product_extension': 'so.<(soname_version)',
}],
],
},
{
'type': 'none',
}],
],
'direct_dependent_settings': {
'include_dirs': [
'<(V8_ROOT)/include',
],
},
'actions': [
{
'action_name': 'v8_dump_build_config',
'inputs': [
'<(V8_ROOT)/tools/testrunner/utils/dump_build_config_gyp.py',
],
'outputs': [
'<(PRODUCT_DIR)/v8_build_config.json',
],
'variables': {
'v8_dump_build_config_args': [
'<(PRODUCT_DIR)/v8_build_config.json',
'dcheck_always_on=<(dcheck_always_on)',
'is_android=<(is_android)',
'is_asan=<(asan)',
'is_cfi=<(cfi_vptr)',
'is_clang=<(clang)',
'is_component_build=<(component)',
'is_debug=<(CONFIGURATION_NAME)',
# Not available in gyp.
'is_gcov_coverage=0',
'is_msan=<(msan)',
'is_tsan=<(tsan)',
# Not available in gyp.
'is_ubsan_vptr=0',
'target_cpu=<(target_arch)',
'v8_enable_i18n_support=<(v8_enable_i18n_support)',
'v8_enable_verify_predictable=<(v8_enable_verify_predictable)',
'v8_target_cpu=<(v8_target_arch)',
'v8_use_siphash=<(v8_use_siphash)',
'v8_enable_verify_csa=<(v8_enable_verify_csa)',
'v8_enable_lite_mode=<(v8_enable_lite_mode)',
'v8_enable_pointer_compression=<(v8_enable_pointer_compression)',
]
},
'conditions': [
['v8_target_arch=="mips" or v8_target_arch=="mipsel" \
or v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
'v8_dump_build_config_args': [
'mips_arch_variant=<(mips_arch_variant)',
'mips_use_msa=<(mips_use_msa)',
],
}],
],
'action': [
'python2', '<(V8_ROOT)/tools/testrunner/utils/dump_build_config_gyp.py',
'<@(v8_dump_build_config_args)',
],
},
],
}, # v8
# missing a bunch of fuzzer targets
###############################################################################
# Protobuf targets, used only when building outside of chromium.
#
{
'target_name': 'postmortem-metadata',
'type': 'none',
'dependencies': ['run_torque#target'],
'variables': {
'heapobject_files': [
'<(torque_output_root)/torque-generated/instance-types.h',
'<(V8_ROOT)/src/objects/allocation-site.h',
'<(V8_ROOT)/src/objects/allocation-site-inl.h',
'<(V8_ROOT)/src/objects/cell.h',
'<(V8_ROOT)/src/objects/cell-inl.h',
'<(V8_ROOT)/src/objects/code.h',
'<(V8_ROOT)/src/objects/code-inl.h',
'<(V8_ROOT)/src/objects/data-handler.h',
'<(V8_ROOT)/src/objects/data-handler-inl.h',
'<(V8_ROOT)/src/objects/descriptor-array.h',
'<(V8_ROOT)/src/objects/descriptor-array-inl.h',
'<(V8_ROOT)/src/objects/feedback-cell.h',
'<(V8_ROOT)/src/objects/feedback-cell-inl.h',
'<(V8_ROOT)/src/objects/fixed-array.h',
'<(V8_ROOT)/src/objects/fixed-array-inl.h',
'<(V8_ROOT)/src/objects/heap-number.h',
'<(V8_ROOT)/src/objects/heap-number-inl.h',
'<(V8_ROOT)/src/objects/heap-object.h',
'<(V8_ROOT)/src/objects/heap-object-inl.h',
'<(V8_ROOT)/src/objects/instance-type.h',
'<(V8_ROOT)/src/objects/js-array-buffer.h',
'<(V8_ROOT)/src/objects/js-array-buffer-inl.h',
'<(V8_ROOT)/src/objects/js-array.h',
'<(V8_ROOT)/src/objects/js-array-inl.h',
'<(V8_ROOT)/src/objects/js-function-inl.h',
'<(V8_ROOT)/src/objects/js-function.cc',
'<(V8_ROOT)/src/objects/js-function.h',
'<(V8_ROOT)/src/objects/js-objects.cc',
'<(V8_ROOT)/src/objects/js-objects.h',
'<(V8_ROOT)/src/objects/js-objects-inl.h',
'<(V8_ROOT)/src/objects/js-promise.h',
'<(V8_ROOT)/src/objects/js-promise-inl.h',
'<(V8_ROOT)/src/objects/js-regexp.cc',
'<(V8_ROOT)/src/objects/js-regexp.h',
'<(V8_ROOT)/src/objects/js-regexp-inl.h',
'<(V8_ROOT)/src/objects/js-regexp-string-iterator.h',
'<(V8_ROOT)/src/objects/js-regexp-string-iterator-inl.h',
'<(V8_ROOT)/src/objects/map.cc',
'<(V8_ROOT)/src/objects/map.h',
'<(V8_ROOT)/src/objects/map-inl.h',
'<(V8_ROOT)/src/objects/name.h',
'<(V8_ROOT)/src/objects/name-inl.h',
'<(V8_ROOT)/src/objects/objects.h',
'<(V8_ROOT)/src/objects/objects-inl.h',
'<(V8_ROOT)/src/objects/oddball.h',
'<(V8_ROOT)/src/objects/oddball-inl.h',
'<(V8_ROOT)/src/objects/primitive-heap-object.h',
'<(V8_ROOT)/src/objects/primitive-heap-object-inl.h',
'<(V8_ROOT)/src/objects/scope-info.h',
'<(V8_ROOT)/src/objects/script.h',
'<(V8_ROOT)/src/objects/script-inl.h',
'<(V8_ROOT)/src/objects/shared-function-info.cc',
'<(V8_ROOT)/src/objects/shared-function-info.h',
'<(V8_ROOT)/src/objects/shared-function-info-inl.h',
'<(V8_ROOT)/src/objects/string.cc',
'<(V8_ROOT)/src/objects/string-comparator.cc',
'<(V8_ROOT)/src/objects/string-comparator.h',
'<(V8_ROOT)/src/objects/string.h',
'<(V8_ROOT)/src/objects/string-inl.h',
'<(V8_ROOT)/src/objects/struct.h',
'<(V8_ROOT)/src/objects/struct-inl.h',
],
},
'actions': [
{
'action_name': 'gen-postmortem-metadata',
'inputs': [
'<(V8_ROOT)/tools/gen-postmortem-metadata.py',
'<@(heapobject_files)',
],
'outputs': [
'<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
],
'action': [
'python2',
'<(V8_ROOT)/tools/gen-postmortem-metadata.py',
'<@(_outputs)',
'<@(heapobject_files)'
],
},
],
'direct_dependent_settings': {
'sources': ['<(SHARED_INTERMEDIATE_DIR)/debug-support.cc', ],
},
}, # postmortem-metadata
{
'target_name': 'v8_zlib',
'type': 'static_library',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host', 'target'],
}],
['OS=="win"', {
'conditions': [
['"<(target_arch)"=="arm64" and _toolset=="target"', {
'defines': ['CPU_NO_SIMD']
}, {
'defines': ['X86_WINDOWS']
}]
]
}],
],
'direct_dependent_settings': {
'include_dirs': [
'<(DEPTH)/third_party/zlib',
'<(DEPTH)/third_party/zlib/google',
],
},
'dependencies': [
'<(DEPTH)/third_party/zlib/zlib.gyp:zlib#target',
],
'target_conditions': [
# cobalt/src/third_party/zlib/zlib.gyp does not provide a host biuld,
# We can use the following simple zlib build rule from nodejs but for
# target builds we need to use the starboardized gyp rule.
['_toolset == "host"', {
'defines': [ 'ZLIB_IMPLEMENTATION' ],
'include_dirs': [
'<(DEPTH)/third_party/zlib',
'<(DEPTH)/third_party/zlib/google',
],
'sources': [
'<(DEPTH)/third_party/zlib/adler32.c',
'<(DEPTH)/third_party/zlib/chromeconf.h',
'<(DEPTH)/third_party/zlib/compress.c',
'<(DEPTH)/third_party/zlib/contrib/optimizations/insert_string.h',
'<(DEPTH)/third_party/zlib/contrib/optimizations/insert_string.h',
#'<(DEPTH)/third_party/zlib/cpu_features.c',
#'<(DEPTH)/third_party/zlib/cpu_features.h',
'<(DEPTH)/third_party/zlib/crc32.c',
'<(DEPTH)/third_party/zlib/crc32.h',
'<(DEPTH)/third_party/zlib/deflate.c',
'<(DEPTH)/third_party/zlib/deflate.h',
'<(DEPTH)/third_party/zlib/gzclose.c',
'<(DEPTH)/third_party/zlib/gzguts.h',
'<(DEPTH)/third_party/zlib/gzlib.c',
'<(DEPTH)/third_party/zlib/gzread.c',
'<(DEPTH)/third_party/zlib/gzwrite.c',
'<(DEPTH)/third_party/zlib/infback.c',
'<(DEPTH)/third_party/zlib/inffast.c',
'<(DEPTH)/third_party/zlib/inffast.h',
'<(DEPTH)/third_party/zlib/inffixed.h',
'<(DEPTH)/third_party/zlib/inflate.c',
'<(DEPTH)/third_party/zlib/inflate.h',
'<(DEPTH)/third_party/zlib/inftrees.c',
'<(DEPTH)/third_party/zlib/inftrees.h',
'<(DEPTH)/third_party/zlib/trees.c',
'<(DEPTH)/third_party/zlib/trees.h',
'<(DEPTH)/third_party/zlib/uncompr.c',
'<(DEPTH)/third_party/zlib/zconf.h',
'<(DEPTH)/third_party/zlib/zlib.h',
'<(DEPTH)/third_party/zlib/zutil.c',
'<(DEPTH)/third_party/zlib/zutil.h',
'<(DEPTH)/third_party/zlib/google/compression_utils_portable.cc',
'<(DEPTH)/third_party/zlib/google/compression_utils_portable.h',
],
}],
],
}, # v8_zlib
],
}