diff --git a/src/secp256k1/CMakeLists.txt b/src/secp256k1/CMakeLists.txt --- a/src/secp256k1/CMakeLists.txt +++ b/src/secp256k1/CMakeLists.txt @@ -80,6 +80,22 @@ #TODO: ECDH benchmark endif() +# Static precomputation for eliptic curve mutliplication +option(SECP256K1_ECMULT_STATIC_PRECOMPUTATION "Precompute libsecp256k1's eliptic curve mutliplicationt ables" ON) +if(SECP256K1_ECMULT_STATIC_PRECOMPUTATION) + set(USE_ECMULT_STATIC_PRECOMPUTATION 1) + + include(NativeExecutable) + add_native_executable(gen_context src/gen_context.c) + + add_custom_command( + OUTPUT ecmult_static_context.h + COMMAND gen_context + ) + + target_sources(secp256k1 PRIVATE ecmult_static_context.h) +endif() + # Generate the config configure_file(src/libsecp256k1-config.h.cmake.in src/libsecp256k1-config.h ESCAPE_QUOTES) target_compile_definitions(secp256k1 PRIVATE HAVE_CONFIG_H) diff --git a/src/secp256k1/src/libsecp256k1-config.h.cmake.in b/src/secp256k1/src/libsecp256k1-config.h.cmake.in --- a/src/secp256k1/src/libsecp256k1-config.h.cmake.in +++ b/src/secp256k1/src/libsecp256k1-config.h.cmake.in @@ -19,6 +19,8 @@ #cmakedefine USE_SCALAR_8X32 #cmakedefine USE_FIELD_10X26 +#cmakedefine USE_ECMULT_STATIC_PRECOMPUTATION + #cmakedefine ENABLE_MODULE_RECOVERY #cmakedefine ENABLE_MODULE_ECDH