Skip to content

Commit 6f67151

Browse files
committed
cmake: Use PUBLIC_HEADER target property
This change simplifies the installation logic.
1 parent c32715b commit 6f67151

File tree

1 file changed

+18
-29
lines changed

1 file changed

+18
-29
lines changed

src/CMakeLists.txt

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1-
# Must be included before CMAKE_INSTALL_INCLUDEDIR is used.
2-
include(GNUInstallDirs)
1+
add_library(secp256k1)
2+
3+
set_property(TARGET secp256k1 PROPERTY PUBLIC_HEADER
4+
${PROJECT_SOURCE_DIR}/include/secp256k1.h
5+
${PROJECT_SOURCE_DIR}/include/secp256k1_preallocated.h
6+
)
37

48
# Processing must be done in a topological sorting of the dependency graph
59
# (dependent module first).
610
if(SECP256K1_ENABLE_MODULE_ELLSWIFT)
711
add_compile_definitions(ENABLE_MODULE_ELLSWIFT=1)
12+
set_property(TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR}/include/secp256k1_ellswift.h)
813
endif()
914

1015
if(SECP256K1_ENABLE_MODULE_MUSIG)
@@ -13,6 +18,7 @@ if(SECP256K1_ENABLE_MODULE_MUSIG)
1318
endif()
1419
set(SECP256K1_ENABLE_MODULE_SCHNORRSIG ON)
1520
add_compile_definitions(ENABLE_MODULE_MUSIG=1)
21+
set_property(TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR}/include/secp256k1_musig.h)
1622
endif()
1723

1824
if(SECP256K1_ENABLE_MODULE_SCHNORRSIG)
@@ -21,18 +27,22 @@ if(SECP256K1_ENABLE_MODULE_SCHNORRSIG)
2127
endif()
2228
set(SECP256K1_ENABLE_MODULE_EXTRAKEYS ON)
2329
add_compile_definitions(ENABLE_MODULE_SCHNORRSIG=1)
30+
set_property(TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR}/include/secp256k1_schnorrsig.h)
2431
endif()
2532

2633
if(SECP256K1_ENABLE_MODULE_EXTRAKEYS)
2734
add_compile_definitions(ENABLE_MODULE_EXTRAKEYS=1)
35+
set_property(TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR}/include/secp256k1_extrakeys.h)
2836
endif()
2937

3038
if(SECP256K1_ENABLE_MODULE_RECOVERY)
3139
add_compile_definitions(ENABLE_MODULE_RECOVERY=1)
40+
set_property(TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR}/include/secp256k1_recovery.h)
3241
endif()
3342

3443
if(SECP256K1_ENABLE_MODULE_ECDH)
3544
add_compile_definitions(ENABLE_MODULE_ECDH=1)
45+
set_property(TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR}/include/secp256k1_ecdh.h)
3646
endif()
3747

3848
add_library(secp256k1_precomputed OBJECT EXCLUDE_FROM_ALL
@@ -42,7 +52,7 @@ add_library(secp256k1_precomputed OBJECT EXCLUDE_FROM_ALL
4252

4353
# Add objects explicitly rather than linking to the object libs to keep them
4454
# from being exported.
45-
add_library(secp256k1 secp256k1.c $<TARGET_OBJECTS:secp256k1_precomputed>)
55+
target_sources(secp256k1 PRIVATE secp256k1.c $<TARGET_OBJECTS:secp256k1_precomputed>)
4656

4757
add_library(secp256k1_asm INTERFACE)
4858
if(SECP256K1_ASM STREQUAL "arm32")
@@ -68,7 +78,6 @@ set_target_properties(secp256k1_precomputed PROPERTIES POSITION_INDEPENDENT_CODE
6878
target_include_directories(secp256k1 INTERFACE
6979
# Add the include path for parent projects so that they don't have to manually add it.
7080
$<BUILD_INTERFACE:$<$<NOT:$<BOOL:${PROJECT_IS_TOP_LEVEL}>>:${PROJECT_SOURCE_DIR}/include>>
71-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
7281
)
7382

7483
# This emulates Libtool to make sure Libtool and CMake agree on the ABI version,
@@ -136,36 +145,16 @@ if(SECP256K1_BUILD_CTIME_TESTS)
136145
endif()
137146

138147
if(SECP256K1_INSTALL)
148+
include(GNUInstallDirs)
149+
target_include_directories(secp256k1 INTERFACE
150+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
151+
)
139152
install(TARGETS secp256k1
140153
EXPORT ${PROJECT_NAME}-targets
141154
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
142155
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
143156
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
144-
)
145-
set(${PROJECT_NAME}_headers
146-
"${PROJECT_SOURCE_DIR}/include/secp256k1.h"
147-
"${PROJECT_SOURCE_DIR}/include/secp256k1_preallocated.h"
148-
)
149-
if(SECP256K1_ENABLE_MODULE_ECDH)
150-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_ecdh.h")
151-
endif()
152-
if(SECP256K1_ENABLE_MODULE_RECOVERY)
153-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_recovery.h")
154-
endif()
155-
if(SECP256K1_ENABLE_MODULE_EXTRAKEYS)
156-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_extrakeys.h")
157-
endif()
158-
if(SECP256K1_ENABLE_MODULE_SCHNORRSIG)
159-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_schnorrsig.h")
160-
endif()
161-
if(SECP256K1_ENABLE_MODULE_MUSIG)
162-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_musig.h")
163-
endif()
164-
if(SECP256K1_ENABLE_MODULE_ELLSWIFT)
165-
list(APPEND ${PROJECT_NAME}_headers "${PROJECT_SOURCE_DIR}/include/secp256k1_ellswift.h")
166-
endif()
167-
install(FILES ${${PROJECT_NAME}_headers}
168-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
157+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
169158
)
170159

171160
install(EXPORT ${PROJECT_NAME}-targets

0 commit comments

Comments
 (0)