https://github.com/yao-pkg/pkg-fetch/blob/main/patches/node.v18.18.2.cpp.patch + local FreeBSD patches --- yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v18.18.2.cpp.patch 2021-12-30 20:04:18.203959000 +0100 +++ yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v18.18.2.cpp.patch @@ -11,6 +11,15 @@ + 'lto': ' -flto=4 -ffat-lto-objects ', # }, { 'lto': ' -flto ', # Clang }], +@@ -399,7 +399,7 @@ + }], + [ 'OS in "linux freebsd openbsd solaris android aix cloudabi"', { + 'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ], +- 'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++17' ], ++ 'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++17', '-Wno-error=enum-constexpr-conversion' ], + 'defines': [ '__STDC_FORMAT_MACROS' ], + 'ldflags': [ '-rdynamic' ], + 'target_conditions': [ diff --git node/configure.py node/configure.py index 62c01aaf6a..2913940692 100755 --- node/configure.py @@ -579,3 +588,166 @@ + 'cflags_cc': [ '-frtti', '-fno-lto' ], 'cflags_cc!': [ '-fno-rtti' ], }], [ 'OS == "mac" or OS == "ios"', { +--- nodes/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi.orig 2023-04-12 04:09:13 UTC ++++ nodes/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi +@@ -13,7 +13,7 @@ + '-Wall -O3 -fomit-frame-pointer', + ], + 'openssl_ex_libs_linux-elf': [ +- '-ldl -pthread', ++ '-pthread', + ], + 'openssl_cli_srcs_linux-elf': [ + 'openssl/apps/lib/cmp_mock_srv.c', +--- nodes/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi.orig 2023-04-12 04:09:13 UTC ++++ nodes/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi +@@ -977,7 +977,7 @@ + '-Wall -O3 -fomit-frame-pointer', + ], + 'openssl_ex_libs_linux-elf': [ +- '-ldl -pthread', ++ '-pthread', + ], + }, + 'include_dirs': [ +--- nodes/deps/openssl/openssl_no_asm.gypi.orig 2023-04-12 04:09:14 UTC ++++ nodes/deps/openssl/openssl_no_asm.gypi +@@ -44,7 +44,7 @@ + 'includes': ['config/archs/linux64-riscv64/no-asm/openssl.gypi'], + }, { + # Other architectures don't use assembly +- 'includes': ['config/archs/linux-x86_64/no-asm/openssl.gypi'], ++ 'includes': ['config/archs/linux-elf/no-asm/openssl.gypi'], + }], + ], + } +--- nodes/deps/openssl/openssl-cl_no_asm.gypi.orig 2023-04-12 04:09:13 UTC ++++ nodes/deps/openssl/openssl-cl_no_asm.gypi +@@ -1,4 +1,5 @@ + { ++ 'defines': ['OPENSSL_NO_ASM'], + 'conditions': [ + ['target_arch=="ppc64" and OS=="aix"', { + 'includes': ['config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi'], +@@ -43,7 +44,7 @@ + 'includes': ['config/archs/linux64-riscv64/no-asm/openssl-cl.gypi'], + }, { + # Other architectures don't use assembly +- 'includes': ['config/archs/linux-x86_64/no-asm/openssl-cl.gypi'], ++ 'includes': ['config/archs/linux-elf/no-asm/openssl-cl.gypi'], + }], + ], + } +--- nodes/deps/v8/src/base/platform/platform-freebsd.cc.orig 2023-04-12 04:09:14 UTC ++++ nodes/deps/v8/src/base/platform/platform-freebsd.cc +@@ -82,8 +82,8 @@ std::vector OS::GetSharedLib + lib_name = std::string(path); + } + result.push_back(SharedLibraryAddress( +- lib_name, reinterpret_cast(map->kve_start), +- reinterpret_cast(map->kve_end))); ++ lib_name, static_cast(map->kve_start), ++ static_cast(map->kve_end))); + } + + start += ssize; +--- nodes/deps/v8/src/codegen/arm/cpu-arm.cc.orig 2023-04-12 04:09:15 UTC ++++ nodes/deps/v8/src/codegen/arm/cpu-arm.cc +@@ -2,12 +2,15 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#include "include/v8config.h" ++ + // CPU specific code for arm independent of OS goes here. + #ifdef __arm__ + #ifdef __QNXNTO__ + #include // for cache flushing. + #undef MAP_TYPE + #elif V8_OS_FREEBSD ++#include + #include // for cache flushing + #include + #elif V8_OS_STARBOARD +--- nodes/deps/v8/src/codegen/ppc/constants-ppc.h.orig 2023-04-12 04:09:15 UTC ++++ nodes/deps/v8/src/codegen/ppc/constants-ppc.h +@@ -36,7 +36,7 @@ + #endif + + #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || !V8_TARGET_ARCH_PPC64 || \ +- V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2) ++ (defined(_CALL_ELF) && _CALL_ELF == 2) + #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 1 + #else + #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 0 +@@ -44,7 +44,7 @@ + + #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || \ + (V8_TARGET_ARCH_PPC64 && \ +- (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2))) ++ (defined(_CALL_ELF) && _CALL_ELF == 2)) + #define ABI_CALL_VIA_IP 1 + #else + #define ABI_CALL_VIA_IP 0 +--- nodes/deps/v8/src/libsampler/sampler.cc.orig 2023-04-12 04:09:15 UTC ++++ nodes/deps/v8/src/libsampler/sampler.cc +@@ -497,6 +497,10 @@ void SignalHandler::FillRegisterState(void* context, R + state->pc = reinterpret_cast(mcontext.__gregs[_REG_PC]); + state->sp = reinterpret_cast(mcontext.__gregs[_REG_SP]); + state->fp = reinterpret_cast(mcontext.__gregs[_REG_FP]); ++#elif V8_TARGET_ARCH_PPC64 ++ state->pc = reinterpret_cast(mcontext.mc_srr0); ++ state->sp = reinterpret_cast(mcontext.mc_frame[1]); ++ state->fp = reinterpret_cast(mcontext.mc_frame[31]); + #endif // V8_HOST_ARCH_* + #elif V8_OS_NETBSD + #if V8_HOST_ARCH_IA32 +--- nodes/node.gypi.orig 2023-04-12 04:09:19 UTC ++++ nodes/node.gypi +@@ -349,6 +349,9 @@ + [ 'node_use_openssl=="true"', { + 'defines': [ 'HAVE_OPENSSL=1' ], + 'conditions': [ ++ ['openssl_no_asm==1', { ++ 'defines': [ 'OPENSSL_NO_ASM' ], ++ }], + [ 'node_shared_openssl=="false"', { + 'defines': [ 'OPENSSL_API_COMPAT=0x10100000L', ], + 'dependencies': [ +--- nodes/src/crypto/crypto_util.cc.orig 2023-04-12 04:09:19 UTC ++++ nodes/src/crypto/crypto_util.cc +@@ -195,10 +195,12 @@ void InitCryptoOnce() { + // No-op with OPENSSL_NO_COMP builds of OpenSSL. + sk_SSL_COMP_zero(SSL_COMP_get_compression_methods()); + ++#if OPENSSL_VERSION_MAJOR < 3 + #ifndef OPENSSL_NO_ENGINE + ERR_load_ENGINE_strings(); + ENGINE_load_builtin_engines(); + #endif // !OPENSSL_NO_ENGINE ++#endif + } + + void GetFipsCrypto(const FunctionCallbackInfo& args) { +--- nodes/src/cares_wrap.h.orig 2023-04-12 04:09:19 UTC ++++ nodes/src/cares_wrap.h +@@ -23,7 +23,7 @@ + # include + #endif // __POSIX__ + +-# include ++# include + + namespace node { + namespace cares_wrap { +--- nodes/tools/v8_gypfiles/v8.gyp.orig 2023-04-12 04:09:21 UTC ++++ nodes/tools/v8_gypfiles/v8.gyp +@@ -977,7 +977,7 @@ + }], + # 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", "riscv64", "loong64"]', { ++ ['v8_current_cpu in ["mips", "mipsel", "mips64", "mips64el", "ppc", "riscv64", "loong64"]', { + 'link_settings': { + 'libraries': ['-latomic', ], + },