From c3e50476af5dcee67336fbc277d95e9f7452c0bc Mon Sep 17 00:00:00 2001 From: Eric Frias Date: Thu, 25 Jun 2015 13:57:10 -0400 Subject: [PATCH] Don't use the autoconf build system for secp256k1 on Windows --- CMakeLists.txt | 56 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e445e0d..cfc1512 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,28 +50,44 @@ ELSE( ECC_IMPL STREQUAL openssl ) ENDIF( ECC_IMPL STREQUAL openssl ) # Configure secp256k1-zkp +if ( WIN32 ) + # autoconf won't work here, hard code the defines + set( SECP256K1_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp" ) + + file( GLOB SECP256K1_SOURCES "${SECP256K1_DIR}/src/secp256k1.c" ) + add_library( secp256k1 ${SECP256K1_SOURCES} ) + + target_include_directories( secp256k1 PRIVATE "${SECP256K1_DIR}" PUBLIC "${SECP256K1_DIR}/include" ) + + set( SECP256K1_BUILD_DEFINES + USE_FIELD_10X26 + USE_FIELD_INV_BUILTIN + USE_NUM_NONE + USE_SCALAR_8X32 + USE_SCALAR_INV_BUILTIN ) + set_target_properties( secp256k1 PROPERTIES COMPILE_DEFINITIONS "${SECP256K1_BUILD_DEFINES}" LINKER_LANGUAGE C ) +else ( WIN32 ) + include(ExternalProject) + ExternalProject_Add( project_secp256k1 + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/vendor/secp256k1-zkp + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp + CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp/configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/vendor/secp256k1-zkp + BUILD_COMMAND make + INSTALL_COMMAND make install + ) + ExternalProject_Add_Step(project_secp256k1 autogen + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp + COMMAND ./autogen.sh + DEPENDERS configure + ) -include(ExternalProject) -ExternalProject_Add( project_secp256k1 - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/vendor/secp256k1-zkp - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp - CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp/configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/vendor/secp256k1-zkp - BUILD_COMMAND make - INSTALL_COMMAND make install -) -ExternalProject_Add_Step(project_secp256k1 autogen - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp - COMMAND ./autogen.sh - DEPENDERS configure -) - -ExternalProject_Get_Property(project_secp256k1 install_dir) - -add_library(secp256k1 STATIC IMPORTED) -set_property(TARGET secp256k1 PROPERTY IMPORTED_LOCATION ${install_dir}/lib/libsecp256k1.a) -set_property(TARGET secp256k1 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp/include) -add_dependencies(secp256k1 project_secp256k1) + ExternalProject_Get_Property(project_secp256k1 install_dir) + add_library(secp256k1 STATIC IMPORTED) + set_property(TARGET secp256k1 PROPERTY IMPORTED_LOCATION ${install_dir}/lib/libsecp256k1.a) + set_property(TARGET secp256k1 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp/include) + add_dependencies(secp256k1 project_secp256k1) +endif ( WIN32 ) # End configure secp256k1-zkp IF( WIN32 )