Skip to content

Commit 5b0444a

Browse files
Merge #1263: cmake: Make installation optional
47ac3d6 cmake: Make installation optional (Anna “CyberTailor”) Pull request description: Useful for embedding secp256k1 in a subproject. ACKs for top commit: theuni: ACK 47ac3d6. real-or-random: utACK 47ac3d6 hebasto: ACK 47ac3d6, tested on Ubuntu 23.04. Tree-SHA512: 12ac0ba9dc38adf45684055386280b669384b5a4e528a3f6f4470fd0b7f57d64dfed6a8bb9f0a84cacfcb72f509534d71676c5ba37b27297b1a96676eea44e6e
2 parents 2e035af + 47ac3d6 commit 5b0444a

File tree

2 files changed

+50
-45
lines changed

2 files changed

+50
-45
lines changed

CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ if(SECP256K1_DISABLE_SHARED)
3232
set(BUILD_SHARED_LIBS OFF)
3333
endif()
3434

35+
option(SECP256K1_INSTALL "Enable installation" ON)
36+
3537
option(SECP256K1_ENABLE_MODULE_ECDH "Enable ECDH module." ON)
3638
if(SECP256K1_ENABLE_MODULE_ECDH)
3739
add_definitions(-DENABLE_MODULE_ECDH=1)

src/CMakeLists.txt

+48-45
Original file line numberDiff line numberDiff line change
@@ -73,51 +73,54 @@ if(SECP256K1_BUILD_CTIME_TESTS)
7373
target_link_libraries(ctime_tests secp256k1)
7474
endif()
7575

76-
install(TARGETS secp256k1
77-
EXPORT ${PROJECT_NAME}-targets
78-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
79-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
80-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
81-
)
82-
set(${PROJECT_NAME}_headers
83-
"${PROJECT_SOURCE_DIR}/include/secp256k1.h"
84-
"${PROJECT_SOURCE_DIR}/include/secp256k1_preallocated.h"
85-
)
86-
if(SECP256K1_ENABLE_MODULE_ECDH)
87-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_ecdh.h")
88-
endif()
89-
if(SECP256K1_ENABLE_MODULE_RECOVERY)
90-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_recovery.h")
91-
endif()
92-
if(SECP256K1_ENABLE_MODULE_EXTRAKEYS)
93-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_extrakeys.h")
94-
endif()
95-
if(SECP256K1_ENABLE_MODULE_SCHNORRSIG)
96-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_schnorrsig.h")
97-
endif()
98-
install(FILES ${${PROJECT_NAME}_headers}
99-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
100-
)
76+
if(SECP256K1_INSTALL)
77+
install(TARGETS secp256k1
78+
EXPORT ${PROJECT_NAME}-targets
79+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
80+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
81+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
82+
)
83+
set(${PROJECT_NAME}_headers
84+
"${PROJECT_SOURCE_DIR}/include/secp256k1.h"
85+
"${PROJECT_SOURCE_DIR}/include/secp256k1_preallocated.h"
86+
)
87+
if(SECP256K1_ENABLE_MODULE_ECDH)
88+
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_ecdh.h")
89+
endif()
90+
if(SECP256K1_ENABLE_MODULE_RECOVERY)
91+
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_recovery.h")
92+
endif()
93+
if(SECP256K1_ENABLE_MODULE_EXTRAKEYS)
94+
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_extrakeys.h")
95+
endif()
96+
if(SECP256K1_ENABLE_MODULE_SCHNORRSIG)
97+
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_schnorrsig.h")
98+
endif()
99+
install(FILES ${${PROJECT_NAME}_headers}
100+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
101+
)
101102

102-
install(EXPORT ${PROJECT_NAME}-targets
103-
FILE ${PROJECT_NAME}-targets.cmake
104-
NAMESPACE ${PROJECT_NAME}::
105-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
106-
)
103+
install(EXPORT ${PROJECT_NAME}-targets
104+
FILE ${PROJECT_NAME}-targets.cmake
105+
NAMESPACE ${PROJECT_NAME}::
106+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
107+
)
107108

108-
include(CMakePackageConfigHelpers)
109-
configure_package_config_file(
110-
${PROJECT_SOURCE_DIR}/cmake/config.cmake.in
111-
${PROJECT_NAME}-config.cmake
112-
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
113-
NO_SET_AND_CHECK_MACRO
114-
)
115-
write_basic_package_version_file(${PROJECT_NAME}-config-version.cmake
116-
COMPATIBILITY SameMajorVersion
117-
)
118-
install(
119-
FILES
120-
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
121-
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
122-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
109+
include(CMakePackageConfigHelpers)
110+
configure_package_config_file(
111+
${PROJECT_SOURCE_DIR}/cmake/config.cmake.in
112+
${PROJECT_NAME}-config.cmake
113+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
114+
NO_SET_AND_CHECK_MACRO
115+
)
116+
write_basic_package_version_file(${PROJECT_NAME}-config-version.cmake
117+
COMPATIBILITY SameMajorVersion
118+
)
119+
120+
install(
121+
FILES
122+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
123+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
124+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
123125
)
126+
endif()

0 commit comments

Comments
 (0)