From 0df3c02e8b306a41fdc942351d87bfb5dbad7413 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Fri, 28 Aug 2026 23:04:31 +0200 Subject: [PATCH 1/2] build: add `--shared-abseil` configure flag Signed-off-by: Antoine du Hamel PR-URL: https://github.com/nodejs/node/pull/65682 Reviewed-By: Chengzhong Wu Reviewed-By: Filip Skokan --- .github/workflows/test-shared.yml | 2 + Makefile | 1 + configure.py | 87 +++++++++++++++++++++++++++++++ node.gyp | 5 +- shell.nix | 3 ++ tools/nix/sharedLibDeps.nix | 1 + tools/nix/v8.nix | 26 +++++---- tools/v8_gypfiles/d8.gyp | 4 +- tools/v8_gypfiles/v8.gyp | 55 ++++++++++++++----- tools/v8_gypfiles/v8windbg.gyp | 13 ++++- 10 files changed, 168 insertions(+), 29 deletions(-) diff --git a/.github/workflows/test-shared.yml b/.github/workflows/test-shared.yml index 1f1afdd89dd2..92f5d4f5d480 100644 --- a/.github/workflows/test-shared.yml +++ b/.github/workflows/test-shared.yml @@ -33,6 +33,7 @@ on: - deps/sqlite/** - deps/uv/** - deps/uvwasi/** + - deps/v8/third_party/abseil-cpp/** - deps/zlib/** - deps/zstd/** - doc/** @@ -86,6 +87,7 @@ on: - deps/sqlite/** - deps/uv/** - deps/uvwasi/** + - deps/v8/third_party/abseil-cpp/** - deps/zlib/** - deps/zstd/** - doc/** diff --git a/Makefile b/Makefile index 62a9bc34e93e..b35b1ff4eeaa 100644 --- a/Makefile +++ b/Makefile @@ -1322,6 +1322,7 @@ ifeq ($(SKIP_SHARED_DEPS), 1) $(RM) -r $(TARNAME)/deps/sqlite $(RM) -r $(TARNAME)/deps/uv $(RM) -r $(TARNAME)/deps/uvwasi + $(RM) -r $(TARNAME)/deps/v8/third_party/abseil-cpp $(RM) -r $(TARNAME)/deps/zlib $(RM) -r $(TARNAME)/deps/zstd else diff --git a/configure.py b/configure.py index b11c4e3284d0..5c2a398989af 100755 --- a/configure.py +++ b/configure.py @@ -282,6 +282,28 @@ help='Use the specified path to system CA (PEM format) in addition to ' 'the OpenSSL supplied CA store or compiled-in Mozilla CA copy.') +shared_optgroup.add_argument('--shared-abseil', + action='store_true', + dest='shared_abseil', + default=None, + help='link to a shared Abseil DLL instead of static linking') + +shared_optgroup.add_argument('--shared-abseil-includes', + action='store', + dest='shared_abseil_includes', + help='directory containing Abseil header files') + +shared_optgroup.add_argument('--shared-abseil-libname', + action='store', + dest='shared_abseil_libname', + default=None, + help='alternative lib name to link to [default: %(default)s]') + +shared_optgroup.add_argument('--shared-abseil-libpath', + action='store', + dest='shared_abseil_libpath', + help='a directory to search for the shared Abseil DLL') + shared_optgroup.add_argument('--shared-gtest', action='store_true', dest='shared_gtest', @@ -2814,6 +2836,71 @@ def make_bin_override(): configure_library('zlib', output) configure_library('http_parser', output, pkgname='libllhttp') configure_library('libuv', output) +configure_library('abseil', output, pkgname=[ + 'absl_absl_check', + 'absl_absl_log', + 'absl_absl_vlog_is_on', + 'absl_algorithm_container', + 'absl_algorithm', + 'absl_any_invocable', + 'absl_base', + 'absl_bind_front', + 'absl_bits', + 'absl_btree', + 'absl_charset', + 'absl_cleanup', + 'absl_config', + 'absl_cord', + 'absl_core_headers', + 'absl_die_if_null', + 'absl_dynamic_annotations', + 'absl_failure_signal_handler', + 'absl_fast_type_id', + 'absl_fixed_array', + 'absl_flat_hash_map', + 'absl_flat_hash_set', + 'absl_function_ref', + 'absl_has_ostream_operator', + 'absl_hash_container_defaults', + 'absl_hash', + 'absl_inlined_vector', + 'absl_int128', + 'absl_layout', + 'absl_leak_check', + 'absl_linked_hash_map', + 'absl_linked_hash_set', + 'absl_log_entry', + 'absl_log_globals', + 'absl_log_initialize', + 'absl_log_severity', + 'absl_log_sink_registry', + 'absl_log_sink', + 'absl_memory', + 'absl_no_destructor', + 'absl_node_hash_map', + 'absl_node_hash_set', + 'absl_nullability', + 'absl_optional', + 'absl_overload', + 'absl_prefetch', + 'absl_random_bit_gen_ref', + 'absl_random_distributions', + 'absl_random_random', + 'absl_raw_logging_internal', + 'absl_span', + 'absl_stacktrace', + 'absl_status', + 'absl_statusor', + 'absl_str_format', + 'absl_string_view', + 'absl_strings', + 'absl_symbolize', + 'absl_synchronization', + 'absl_time', + 'absl_type_traits', + 'absl_utility', + 'absl_variant', +]) configure_library('ada', output) configure_library('simdjson', output) configure_library('simdutf', output) diff --git a/node.gyp b/node.gyp index 942bea024498..8777cdc17d0e 100644 --- a/node.gyp +++ b/node.gyp @@ -15,6 +15,7 @@ 'node_lib_target_name%': 'libnode', 'node_module_version%': '', 'node_no_browser_globals%': 'false', + 'node_shared_abseil%': 'false', 'node_shared_brotli%': 'false', 'node_shared_cares%': 'false', 'node_shared_gtest%': 'false', @@ -901,7 +902,7 @@ [ 'node_builtin_modules_path!=""', { 'defines': [ 'NODE_BUILTIN_MODULES_PATH="<(node_builtin_modules_path)"' ], }], - [ 'node_use_bundled_v8!="false"', { + [ 'node_use_bundled_v8!="false" and node_shared_abseil=="false"', { 'dependencies': [ 'tools/v8_gypfiles/abseil.gyp:abseil' ], }], [ 'node_shared_gtest=="false"', { @@ -1369,7 +1370,7 @@ [ 'node_shared_gtest=="true"', { 'libraries': [ '-lgtest_main' ], }], - [ 'node_use_bundled_v8!="false"', { + [ 'node_use_bundled_v8!="false" and node_shared_abseil=="false"', { 'dependencies': [ 'tools/v8_gypfiles/abseil.gyp:abseil' ], }], [ 'node_shared_hdr_histogram=="false"', { diff --git a/shell.nix b/shell.nix index 9b4d9da55855..365c3540915b 100644 --- a/shell.nix +++ b/shell.nix @@ -63,6 +63,7 @@ let ]; buildInputs = pkgs.lib.optional useSharedICU icu + ++ pkgs.lib.optional (builtins.hasAttr "abseil" sharedLibDeps) sharedLibDeps.abseil ++ pkgs.lib.optional (withTemporal && useSharedTemporal) sharedLibDeps.temporal_capi; # Put here only the configure flags that affect the V8 build @@ -75,6 +76,7 @@ let ) "--v8-${if withTemporal then "enable" else "disable"}-temporal-support" ] + ++ pkgs.lib.optional (builtins.hasAttr "abseil" sharedLibDeps) "--shared-abseil" ++ pkgs.lib.optional (withTemporal && useSharedTemporal) "--shared-temporal_capi" ++ pkgs.lib.optional withPerfetto "--with-perfetto"; in @@ -132,6 +134,7 @@ pkgs.mkShell { builtins.attrNames ( if (useSeparateDerivationForV8 != false) then builtins.removeAttrs sharedLibDeps [ + "abseil" "simdutf" "temporal_capi" ] diff --git a/tools/nix/sharedLibDeps.nix b/tools/nix/sharedLibDeps.nix index 14494bbe1648..7e789e1f034f 100644 --- a/tools/nix/sharedLibDeps.nix +++ b/tools/nix/sharedLibDeps.nix @@ -22,6 +22,7 @@ zlib zstd ; + abseil = pkgs.abseil-cpp; cares = pkgs.c-ares; hdr-histogram = pkgs.hdrhistogram_c; http-parser = pkgs.llhttp; diff --git a/tools/nix/v8.nix b/tools/nix/v8.nix index 90dadd336c8d..0338bff5ddb5 100644 --- a/tools/nix/v8.nix +++ b/tools/nix/v8.nix @@ -23,6 +23,7 @@ }: let + useSharedAbseil = builtins.elem "--shared-abseil" configureFlags; src = let inherit (lib) fileset; @@ -35,7 +36,6 @@ let ../../node.gypi ../../tools/gyp/pylib ../../tools/gyp_node.py - ../../tools/v8_gypfiles/abseil.gyp ../../tools/v8_gypfiles/features.gypi ../../tools/v8_gypfiles/ForEachFormat.py ../../tools/v8_gypfiles/ForEachReplace.py @@ -44,6 +44,7 @@ let ../../tools/v8_gypfiles/toolchain.gypi ../../tools/v8_gypfiles/v8.gyp ] + ++ lib.optional (!useSharedAbseil) ../../tools/v8_gypfiles/abseil.gyp ++ lib.optionals (builtins.elem "--with-perfetto" configureFlags) [ ../../deps/perfetto ] @@ -63,12 +64,15 @@ let potentiallyAlreadyRemovedFiles = # Files that are removed in the release tarball (see Makefile $(TARBALL) target) [ (fileset.difference ../../deps/v8/test ../../deps/v8/test/torque) ] - ++ (builtins.filter builtins.pathExists [ - ../../deps/v8/samples - ../../deps/v8/tools/profviz - ../../deps/v8/tools/run-tests.py - ../../deps/v8/third_party/ittapi - ]); + ++ (builtins.filter builtins.pathExists ( + [ + ../../deps/v8/samples + ../../deps/v8/tools/profviz + ../../deps/v8/tools/run-tests.py + ../../deps/v8/third_party/ittapi + ] + ++ lib.optional useSharedAbseil ../../deps/v8/third_party/abseil-cpp + )); trackedFiles = ({ # This line is being modified by Makefile $(TARBALL) target, any change to it should be sync @@ -197,9 +201,11 @@ stdenv.mkDerivation (finalAttrs: { find deps/v8/include -name '*.h' -print0 | while read -r -d "" file; do install -Dm644 "$file" -T "$out/include/''${file#deps/v8/include/}" done - find deps/v8/third_party/abseil-cpp/absl -name '*.h' -print0 | while read -r -d "" file; do - install -Dm644 "$file" -T "$out/include/''${file#deps/v8/third_party/abseil-cpp/}" - done + ${lib.optionalString (!useSharedAbseil) '' + find deps/v8/third_party/abseil-cpp/absl -name '*.h' -print0 | while read -r -d "" file; do + install -Dm644 "$file" -T "$out/include/''${file#deps/v8/third_party/abseil-cpp/}" + done + ''} mkdir -p $out/lib/pkgconfig cat -> $out/lib/pkgconfig/v8.pc << EOF diff --git a/tools/v8_gypfiles/d8.gyp b/tools/v8_gypfiles/d8.gyp index 5b47ebf180dd..f59a155b169c 100644 --- a/tools/v8_gypfiles/d8.gyp +++ b/tools/v8_gypfiles/d8.gyp @@ -16,7 +16,6 @@ 'target_name': 'd8', 'type': 'executable', 'dependencies': [ - 'abseil.gyp:abseil', 'v8.gyp:v8', 'v8.gyp:v8_libbase', 'v8.gyp:v8_libplatform', @@ -77,6 +76,9 @@ }, }, }], + ['node_shared_abseil=="false"', { + 'dependencies': ['abseil.gyp:abseil'], + }], ], }, ], diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp index 7c7ebc8af42a..bd9c548becb0 100644 --- a/tools/v8_gypfiles/v8.gyp +++ b/tools/v8_gypfiles/v8.gyp @@ -288,7 +288,6 @@ 'v8_base_without_compiler', 'v8_initializers', 'v8_maybe_icu', - 'abseil.gyp:abseil', ], 'sources': [ '<(V8_ROOT)/src/init/setup-isolate-full.cc', @@ -299,6 +298,9 @@ '<(perfetto_gyp_file):perfetto_sdk', ], }], + ['node_shared_abseil=="false"', { + 'dependencies': ['abseil.gyp:abseil'], + }], ], }, # v8_init { @@ -310,7 +312,6 @@ 'v8_base_without_compiler', 'v8_shared_internal_headers', 'v8_pch', - 'abseil.gyp:abseil', ], 'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)', @@ -390,6 +391,9 @@ '<(V8_ROOT)/src/builtins/builtins-intl-gen.cc', ], }], + ['node_shared_abseil=="false"', { + 'dependencies': ['abseil.gyp:abseil'], + }], ], }, # v8_initializers { @@ -508,7 +512,6 @@ 'v8_compiler_for_mksnapshot', 'v8_initializers', 'v8_libplatform', - 'abseil.gyp:abseil', ] }, { 'dependencies': [ @@ -521,9 +524,11 @@ 'v8_compiler_for_mksnapshot', 'v8_initializers', 'v8_libplatform', - 'abseil.gyp:abseil', ] }], + ['node_shared_abseil=="false"', { + 'dependencies': ['abseil.gyp:abseil'], + }], ['OS=="win" and clang==1', { 'actions': [ { @@ -637,7 +642,6 @@ 'v8_libbase', 'fp16', 'highway', - 'abseil.gyp:abseil', ], 'direct_dependent_settings': { 'sources': [ @@ -882,6 +886,11 @@ }], ], }, + 'conditions': [ + ['node_shared_abseil=="false"', { + 'dependencies': ['abseil.gyp:abseil'], + }], + ], }, # v8_internal_headers { 'target_name': 'v8_compiler_sources', @@ -983,7 +992,6 @@ 'v8_libbase', 'v8_shared_internal_headers', 'v8_pch', - 'abseil.gyp:abseil', ], 'conditions': [ ['v8_use_perfetto==1', { @@ -1001,6 +1009,9 @@ }, { 'sources': ['<(V8_ROOT)/src/compiler/turbofan-disabled.cc'], }], + ['node_shared_abseil=="false"', { + 'dependencies': ['abseil.gyp:abseil'], + }], ], }, # v8_compiler { @@ -1104,7 +1115,6 @@ 'v8_zlib', 'v8_pch', 'simdutf', - 'abseil.gyp:abseil', ], 'includes': ['inspector.gypi'], 'direct_dependent_settings': { @@ -1391,6 +1401,9 @@ 'libraries': ['-latomic', ], }, }], + ['node_shared_abseil=="false"', { + 'dependencies': ['abseil.gyp:abseil'], + }], ], }, # v8_base_without_compiler { @@ -1412,7 +1425,6 @@ 'dependencies': [ 'v8_shared_internal_headers', 'v8_libbase', - 'abseil.gyp:abseil', ], 'defines!': [ '_HAS_EXCEPTIONS=0', @@ -1438,6 +1450,9 @@ 'cflags!': ['-O3'], 'sources': ['<(V8_ROOT)/src/torque/implementation-visitor.cc'], }], + ['node_shared_abseil=="false"', { + 'dependencies': ['abseil.gyp:abseil'], + }], ], }, # torque_base { @@ -1477,7 +1492,6 @@ 'dependencies': [ 'v8_headers', - 'abseil.gyp:abseil', ], 'conditions': [ @@ -1718,6 +1732,9 @@ ], } ], + ['node_shared_abseil=="false"', { + 'dependencies': ['abseil.gyp:abseil'], + }], ], }, # v8_libbase { @@ -1726,7 +1743,6 @@ 'toolsets': ['host', 'target'], 'dependencies': [ 'v8_libbase', - 'abseil.gyp:abseil', ], 'sources': [ ' Date: Sat, 29 Aug 2026 13:03:38 +0200 Subject: [PATCH 2/2] build: add `--shared-highway` configure flag Signed-off-by: Antoine du Hamel PR-URL: https://github.com/nodejs/node/pull/65686 Reviewed-By: Chengzhong Wu Reviewed-By: Filip Skokan --- .github/workflows/test-shared.yml | 2 + Makefile | 1 + configure.py | 23 +++++++++++ node.gyp | 1 + shell.nix | 3 ++ tools/nix/sharedLibDeps.nix | 1 + tools/nix/v8.nix | 3 ++ tools/v8_gypfiles/highway.gyp | 58 ++++++++++++++++++++++++++ tools/v8_gypfiles/v8.gyp | 67 ++++--------------------------- 9 files changed, 100 insertions(+), 59 deletions(-) create mode 100644 tools/v8_gypfiles/highway.gyp diff --git a/.github/workflows/test-shared.yml b/.github/workflows/test-shared.yml index 92f5d4f5d480..96e862c35916 100644 --- a/.github/workflows/test-shared.yml +++ b/.github/workflows/test-shared.yml @@ -34,6 +34,7 @@ on: - deps/uv/** - deps/uvwasi/** - deps/v8/third_party/abseil-cpp/** + - deps/v8/third_party/highway/** - deps/zlib/** - deps/zstd/** - doc/** @@ -88,6 +89,7 @@ on: - deps/uv/** - deps/uvwasi/** - deps/v8/third_party/abseil-cpp/** + - deps/v8/third_party/highway/** - deps/zlib/** - deps/zstd/** - doc/** diff --git a/Makefile b/Makefile index b35b1ff4eeaa..f0d453cf6213 100644 --- a/Makefile +++ b/Makefile @@ -1323,6 +1323,7 @@ ifeq ($(SKIP_SHARED_DEPS), 1) $(RM) -r $(TARNAME)/deps/uv $(RM) -r $(TARNAME)/deps/uvwasi $(RM) -r $(TARNAME)/deps/v8/third_party/abseil-cpp + $(RM) -r $(TARNAME)/deps/v8/third_party/highway $(RM) -r $(TARNAME)/deps/zlib $(RM) -r $(TARNAME)/deps/zstd else diff --git a/configure.py b/configure.py index 5c2a398989af..99ce9326dc93 100755 --- a/configure.py +++ b/configure.py @@ -348,6 +348,28 @@ dest='shared_hdr_histogram_libpath', help='a directory to search for the shared HdrHistogram DLL') +shared_optgroup.add_argument('--shared-highway', + action='store_true', + dest='shared_highway', + default=None, + help='link to a shared Highway (hwy) DLL instead of static linking') + +shared_optgroup.add_argument('--shared-highway-includes', + action='store', + dest='shared_highway_includes', + help='directory containing Highway header files') + +shared_optgroup.add_argument('--shared-highway-libname', + action='store', + dest='shared_highway_libname', + default='hwy', + help='alternative lib name to link to [default: %(default)s]') + +shared_optgroup.add_argument('--shared-highway-libpath', + action='store', + dest='shared_highway_libpath', + help='a directory to search for the shared Highway DLL') + shared_optgroup.add_argument('--shared-http-parser', action='store_true', dest='shared_http_parser', @@ -2908,6 +2930,7 @@ def make_bin_override(): configure_library('cares', output, pkgname='libcares') configure_library('gtest', output) configure_library('hdr_histogram', output) +configure_library('highway', output, pkgname='libhwy') configure_library('merve', output) configure_library('nbytes', output) configure_library('nghttp2', output, pkgname='libnghttp2') diff --git a/node.gyp b/node.gyp index 8777cdc17d0e..7e1e4f212cad 100644 --- a/node.gyp +++ b/node.gyp @@ -20,6 +20,7 @@ 'node_shared_cares%': 'false', 'node_shared_gtest%': 'false', 'node_shared_hdr_histogram%': 'false', + 'node_shared_highway%': 'false', 'node_shared_http_parser%': 'false', 'node_shared_libuv%': 'false', 'node_shared_lief%': 'false', diff --git a/shell.nix b/shell.nix index 365c3540915b..0bc13ec5c2f1 100644 --- a/shell.nix +++ b/shell.nix @@ -64,6 +64,7 @@ let buildInputs = pkgs.lib.optional useSharedICU icu ++ pkgs.lib.optional (builtins.hasAttr "abseil" sharedLibDeps) sharedLibDeps.abseil + ++ pkgs.lib.optional (builtins.hasAttr "highway" sharedLibDeps) sharedLibDeps.highway ++ pkgs.lib.optional (withTemporal && useSharedTemporal) sharedLibDeps.temporal_capi; # Put here only the configure flags that affect the V8 build @@ -77,6 +78,7 @@ let "--v8-${if withTemporal then "enable" else "disable"}-temporal-support" ] ++ pkgs.lib.optional (builtins.hasAttr "abseil" sharedLibDeps) "--shared-abseil" + ++ pkgs.lib.optional (builtins.hasAttr "highway" sharedLibDeps) "--shared-highway" ++ pkgs.lib.optional (withTemporal && useSharedTemporal) "--shared-temporal_capi" ++ pkgs.lib.optional withPerfetto "--with-perfetto"; in @@ -135,6 +137,7 @@ pkgs.mkShell { if (useSeparateDerivationForV8 != false) then builtins.removeAttrs sharedLibDeps [ "abseil" + "highway" "simdutf" "temporal_capi" ] diff --git a/tools/nix/sharedLibDeps.nix b/tools/nix/sharedLibDeps.nix index 7e789e1f034f..c28c56acc6b5 100644 --- a/tools/nix/sharedLibDeps.nix +++ b/tools/nix/sharedLibDeps.nix @@ -25,6 +25,7 @@ abseil = pkgs.abseil-cpp; cares = pkgs.c-ares; hdr-histogram = pkgs.hdrhistogram_c; + highway = pkgs.libhwy; http-parser = pkgs.llhttp; } // (pkgs.lib.optionalAttrs withLief { diff --git a/tools/nix/v8.nix b/tools/nix/v8.nix index 0338bff5ddb5..98df8b769c2a 100644 --- a/tools/nix/v8.nix +++ b/tools/nix/v8.nix @@ -24,6 +24,7 @@ let useSharedAbseil = builtins.elem "--shared-abseil" configureFlags; + useSharedHighway = builtins.elem "--shared-highway" configureFlags; src = let inherit (lib) fileset; @@ -45,6 +46,7 @@ let ../../tools/v8_gypfiles/v8.gyp ] ++ lib.optional (!useSharedAbseil) ../../tools/v8_gypfiles/abseil.gyp + ++ lib.optional (!useSharedHighway) ../../tools/v8_gypfiles/highway.gyp ++ lib.optionals (builtins.elem "--with-perfetto" configureFlags) [ ../../deps/perfetto ] @@ -72,6 +74,7 @@ let ../../deps/v8/third_party/ittapi ] ++ lib.optional useSharedAbseil ../../deps/v8/third_party/abseil-cpp + ++ lib.optional useSharedHighway ../../deps/v8/third_party/highway )); trackedFiles = ({ diff --git a/tools/v8_gypfiles/highway.gyp b/tools/v8_gypfiles/highway.gyp new file mode 100644 index 000000000000..c7f915b76e2f --- /dev/null +++ b/tools/v8_gypfiles/highway.gyp @@ -0,0 +1,58 @@ +{ + 'includes': ['toolchain.gypi'], + 'targets': [ + { + 'target_name': 'highway', + 'type': 'static_library', + 'toolsets': ['host', 'target'], + 'variables': { + 'HIGHWAY_ROOT': '../../deps/v8/third_party/highway', + }, + 'all_dependent_settings': { + 'include_dirs': [ + '<(HIGHWAY_ROOT)/src', + ], + 'conditions': [ + ['v8_target_arch=="ia32"', { + 'defines': ['HWY_BROKEN_TARGETS=(HWY_AVX2|HWY_AVX3)',], + }], + ['v8_target_arch=="arm64"', { + 'defines': ['HWY_BROKEN_TARGETS=HWY_ALL_SVE',], + }], + ['v8_target_arch=="ppc64" or v8_target_arch=="s390x"', { + 'defines': ['TOOLCHAIN_MISS_ASM_HWCAP_H',], + }], + ['v8_target_arch=="s390x"', { + 'defines': ['HWY_BROKEN_EMU128=0',], + }], + ['OS in "aix os400"', { + 'defines': ['HWY_BROKEN_EMU128=0',], + }], + ['v8_target_arch=="arm" and arm_version==7', { + 'defines': ['HWY_BROKEN_EMU128=0',], + }], + ], + }, + 'include_dirs': [ + '<(HIGHWAY_ROOT)/src', + ], + 'conditions': [ + ['v8_target_arch=="ia32"', { + 'defines': ['HWY_BROKEN_TARGETS=(HWY_AVX2|HWY_AVX3)',], + }], + ['v8_target_arch=="arm64"', { + 'defines': ['HWY_BROKEN_TARGETS=HWY_ALL_SVE',], + }], + ['v8_target_arch=="ppc64" or v8_target_arch=="s390x"', { + 'defines': ['TOOLCHAIN_MISS_ASM_HWCAP_H',], + }], + ['v8_target_arch=="riscv64"', { + 'defines': ['HWY_BROKEN_TARGETS=HWY_RVV',], + }], + ], + 'sources': [ + '