cmake: Make installation optional

Useful for embedding secp256k1 in a subproject.
This commit is contained in:
Anna “CyberTailor” 2023-04-09 12:51:53 +05:00
parent 2e035af251
commit 47ac3d63cd
No known key found for this signature in database
GPG Key ID: E7B76EDC50864BB1
2 changed files with 50 additions and 45 deletions

View File

@ -32,6 +32,8 @@ if(SECP256K1_DISABLE_SHARED)
set(BUILD_SHARED_LIBS OFF) set(BUILD_SHARED_LIBS OFF)
endif() endif()
option(SECP256K1_INSTALL "Enable installation" ON)
option(SECP256K1_ENABLE_MODULE_ECDH "Enable ECDH module." ON) option(SECP256K1_ENABLE_MODULE_ECDH "Enable ECDH module." ON)
if(SECP256K1_ENABLE_MODULE_ECDH) if(SECP256K1_ENABLE_MODULE_ECDH)
add_definitions(-DENABLE_MODULE_ECDH=1) add_definitions(-DENABLE_MODULE_ECDH=1)

View File

@ -73,51 +73,54 @@ if(SECP256K1_BUILD_CTIME_TESTS)
target_link_libraries(ctime_tests secp256k1) target_link_libraries(ctime_tests secp256k1)
endif() endif()
install(TARGETS secp256k1 if(SECP256K1_INSTALL)
EXPORT ${PROJECT_NAME}-targets install(TARGETS secp256k1
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} EXPORT ${PROJECT_NAME}-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
set(${PROJECT_NAME}_headers )
"${PROJECT_SOURCE_DIR}/include/secp256k1.h" set(${PROJECT_NAME}_headers
"${PROJECT_SOURCE_DIR}/include/secp256k1_preallocated.h" "${PROJECT_SOURCE_DIR}/include/secp256k1.h"
) "${PROJECT_SOURCE_DIR}/include/secp256k1_preallocated.h"
if(SECP256K1_ENABLE_MODULE_ECDH) )
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_ecdh.h") if(SECP256K1_ENABLE_MODULE_ECDH)
endif() list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_ecdh.h")
if(SECP256K1_ENABLE_MODULE_RECOVERY) endif()
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_recovery.h") if(SECP256K1_ENABLE_MODULE_RECOVERY)
endif() list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_recovery.h")
if(SECP256K1_ENABLE_MODULE_EXTRAKEYS) endif()
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_extrakeys.h") if(SECP256K1_ENABLE_MODULE_EXTRAKEYS)
endif() list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_extrakeys.h")
if(SECP256K1_ENABLE_MODULE_SCHNORRSIG) endif()
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_schnorrsig.h") if(SECP256K1_ENABLE_MODULE_SCHNORRSIG)
endif() list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_schnorrsig.h")
install(FILES ${${PROJECT_NAME}_headers} endif()
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} install(FILES ${${PROJECT_NAME}_headers}
) DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(EXPORT ${PROJECT_NAME}-targets install(EXPORT ${PROJECT_NAME}-targets
FILE ${PROJECT_NAME}-targets.cmake FILE ${PROJECT_NAME}-targets.cmake
NAMESPACE ${PROJECT_NAME}:: NAMESPACE ${PROJECT_NAME}::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
) )
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
configure_package_config_file( configure_package_config_file(
${PROJECT_SOURCE_DIR}/cmake/config.cmake.in ${PROJECT_SOURCE_DIR}/cmake/config.cmake.in
${PROJECT_NAME}-config.cmake ${PROJECT_NAME}-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
NO_SET_AND_CHECK_MACRO NO_SET_AND_CHECK_MACRO
) )
write_basic_package_version_file(${PROJECT_NAME}-config-version.cmake write_basic_package_version_file(${PROJECT_NAME}-config-version.cmake
COMPATIBILITY SameMajorVersion COMPATIBILITY SameMajorVersion
) )
install(
FILES install(
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
) )
endif()