From dfa62df0b503475cf80a3355f01ca1ce5a6b8745 Mon Sep 17 00:00:00 2001 From: Yao Zi Date: Wed, 11 Nov 2026 12:23:08 +0000 Subject: [PATCH] deps: merve: Don't include the vendored simdutf with --shared-simdutf Different versions of simdutf may provide different implementations for the same name, for example, the vendored version provides a symbol for simdutf::find(), simdutf_warn_unused const char *find(const char *start, const char *end, char character) noexcept; while upstream simdutf 9.3.3 inlines it, simdutf_warn_unused simdutf_really_inline simdutf_constexpr23 const char * find(const char *start, const char *end, char character) noexcept { /* An inline function */ ... } However, the vendored simdutf's headers are currently unconditionally included for merve, regardless whether the shared simdutf is linked against or not, leading to missing symbols at linking time like mold: error: undefined symbol: simdutf::find(char const*, char const*, char) >>> referenced by merve.cpp >>> obj/deps/merve/libmerve.a(obj/deps/merve/merve.merve.o):(lexer::CJSLexer::addReexport(std::__1::basic_string_view>, unsigned int)) >>> referenced by merve.cpp >>> obj/deps/merve/libmerve.a(obj/deps/merve/merve.merve.o):(lexer::CJSLexer::addExport(std::__1::basic_string_view>, unsigned int)) Do not include the vendored simdutf when compiling merve if shared simdutf is used to ensure the headers match the linked library. Signed-off-by: Yao Zi --- deps/merve/merve.gyp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/deps/merve/merve.gyp b/deps/merve/merve.gyp index 7712fa9d20dc..1b0ac18f6ccd 100644 --- a/deps/merve/merve.gyp +++ b/deps/merve/merve.gyp @@ -8,7 +8,6 @@ 'type': 'static_library', 'include_dirs': [ '.', - '../v8/third_party/simdutf', ], 'direct_dependent_settings': { 'include_dirs': ['.'], @@ -29,6 +28,11 @@ 'CLANG_CXX_LANGUAGE_STANDARD': 'c++20', }, }], + ['node_shared_simdutf=="false"', { + 'include_dirs': [ + '../v8/third_party/simdutf', + ], + }], ], }, ]