Skip to content

Commit 8abf61c

Browse files
committed
cmake: Make installation optional
Useful for use in subprojects.
1 parent a0f4644 commit 8abf61c

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
@@ -33,6 +33,8 @@ if(NOT SECP256K1_BUILD_SHARED AND NOT SECP256K1_BUILD_STATIC)
3333
message(FATAL_ERROR "At least one of SECP256K1_BUILD_SHARED and SECP256K1_BUILD_STATIC must be enabled.")
3434
endif()
3535

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

src/CMakeLists.txt

+48-45
Original file line numberDiff line numberDiff line change
@@ -101,51 +101,54 @@ if(SECP256K1_BUILD_CTIME_TESTS)
101101
target_link_libraries(ctime_tests binary_interface link_library)
102102
endif()
103103

104-
install(TARGETS ${${PROJECT_NAME}_installables}
105-
EXPORT ${PROJECT_NAME}-targets
106-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
107-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
108-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
109-
)
110-
set(${PROJECT_NAME}_headers
111-
"${PROJECT_SOURCE_DIR}/include/secp256k1.h"
112-
"${PROJECT_SOURCE_DIR}/include/secp256k1_preallocated.h"
113-
)
114-
if(SECP256K1_ENABLE_MODULE_ECDH)
115-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_ecdh.h")
116-
endif()
117-
if(SECP256K1_ENABLE_MODULE_RECOVERY)
118-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_recovery.h")
119-
endif()
120-
if(SECP256K1_ENABLE_MODULE_EXTRAKEYS)
121-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_extrakeys.h")
122-
endif()
123-
if(SECP256K1_ENABLE_MODULE_SCHNORRSIG)
124-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_schnorrsig.h")
125-
endif()
126-
install(FILES ${${PROJECT_NAME}_headers}
127-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
128-
)
104+
if(SECP256K1_INSTALL)
105+
install(TARGETS ${${PROJECT_NAME}_installables}
106+
EXPORT ${PROJECT_NAME}-targets
107+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
108+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
109+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
110+
)
111+
set(${PROJECT_NAME}_headers
112+
"${PROJECT_SOURCE_DIR}/include/secp256k1.h"
113+
"${PROJECT_SOURCE_DIR}/include/secp256k1_preallocated.h"
114+
)
115+
if(SECP256K1_ENABLE_MODULE_ECDH)
116+
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_ecdh.h")
117+
endif()
118+
if(SECP256K1_ENABLE_MODULE_RECOVERY)
119+
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_recovery.h")
120+
endif()
121+
if(SECP256K1_ENABLE_MODULE_EXTRAKEYS)
122+
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_extrakeys.h")
123+
endif()
124+
if(SECP256K1_ENABLE_MODULE_SCHNORRSIG)
125+
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_schnorrsig.h")
126+
endif()
127+
install(FILES ${${PROJECT_NAME}_headers}
128+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
129+
)
129130

130-
install(EXPORT ${PROJECT_NAME}-targets
131-
FILE ${PROJECT_NAME}-targets.cmake
132-
NAMESPACE ${PROJECT_NAME}::
133-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
134-
)
131+
install(EXPORT ${PROJECT_NAME}-targets
132+
FILE ${PROJECT_NAME}-targets.cmake
133+
NAMESPACE ${PROJECT_NAME}::
134+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
135+
)
135136

136-
include(CMakePackageConfigHelpers)
137-
configure_package_config_file(
138-
${PROJECT_SOURCE_DIR}/cmake/config.cmake.in
139-
${PROJECT_NAME}-config.cmake
140-
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
141-
NO_SET_AND_CHECK_MACRO
142-
)
143-
write_basic_package_version_file(${PROJECT_NAME}-config-version.cmake
144-
COMPATIBILITY SameMajorVersion
145-
)
146-
install(
147-
FILES
148-
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
149-
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
150-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
137+
include(CMakePackageConfigHelpers)
138+
configure_package_config_file(
139+
${PROJECT_SOURCE_DIR}/cmake/config.cmake.in
140+
${PROJECT_NAME}-config.cmake
141+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
142+
NO_SET_AND_CHECK_MACRO
143+
)
144+
write_basic_package_version_file(${PROJECT_NAME}-config-version.cmake
145+
COMPATIBILITY SameMajorVersion
146+
)
147+
148+
install(
149+
FILES
150+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
151+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
152+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
151153
)
154+
endif()

0 commit comments

Comments
 (0)