From cbba06e37af0a38ac9d3497eb9c8e4bc9ffdaf90 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 16 Jul 2026 21:22:07 -0800 Subject: [PATCH] fix(windows): enable secp256k1 recovery module in Windows builders The CMake build of libsecp256k1 defaults SECP256K1_ENABLE_MODULE_RECOVERY to OFF, unlike the autotools builds used by build_linux.dart, build_macos.dart, and build_wasm.dart which pass --enable-module-recovery. As a result, secp256k1.dll built by build_windows.dart (and the WSL and docker cross-compile variants) lacked secp256k1_ecdsa_sign_recoverable and the other recovery module exports, breaking recoverable ECDSA message signing (MessageSignature) on Windows with: Invalid argument(s): Failed to lookup symbol 'secp256k1_ecdsa_sign_recoverable': The specified procedure could not be found. (error code: 127) Pass -DSECP256K1_ENABLE_MODULE_RECOVERY=ON in all three Windows builders. --- coinlib/bin/build_windows.dart | 1 + coinlib/bin/build_windows_crosscompile.dart | 2 +- coinlib/bin/build_wsl.dart | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/coinlib/bin/build_windows.dart b/coinlib/bin/build_windows.dart index c9f0bf8..0b21dc9 100644 --- a/coinlib/bin/build_windows.dart +++ b/coinlib/bin/build_windows.dart @@ -37,6 +37,7 @@ void main() async { ".", "-B", "build", + "-DSECP256K1_ENABLE_MODULE_RECOVERY=ON", "--debug-output", ]); diff --git a/coinlib/bin/build_windows_crosscompile.dart b/coinlib/bin/build_windows_crosscompile.dart index 9503879..c582ac3 100644 --- a/coinlib/bin/build_windows_crosscompile.dart +++ b/coinlib/bin/build_windows_crosscompile.dart @@ -19,7 +19,7 @@ RUN git clone https://github.com/bitcoin-core/secp256k1 \ WORKDIR /secp256k1/build # Build shared library for Windows. -RUN cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/x86_64-w64-mingw32.toolchain.cmake +RUN cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/x86_64-w64-mingw32.toolchain.cmake -DSECP256K1_ENABLE_MODULE_RECOVERY=ON RUN make # Build DLL and copy into output. diff --git a/coinlib/bin/build_wsl.dart b/coinlib/bin/build_wsl.dart index 357ee1f..b7606be 100644 --- a/coinlib/bin/build_wsl.dart +++ b/coinlib/bin/build_wsl.dart @@ -34,6 +34,7 @@ void main() async { await execWithStdio("cmake", [ "..", "-DCMAKE_TOOLCHAIN_FILE=../cmake/x86_64-w64-mingw32.toolchain.cmake", + "-DSECP256K1_ENABLE_MODULE_RECOVERY=ON", ]); // Build the project using "make".