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).
610if (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)
813endif ()
914
1015if (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)
1622endif ()
1723
1824if (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)
2431endif ()
2532
2633if (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)
2836endif ()
2937
3038if (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)
3241endif ()
3342
3443if (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)
3646endif ()
3747
3848add_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
4757add_library (secp256k1_asm INTERFACE )
4858if (SECP256K1_ASM STREQUAL "arm32" )
@@ -68,7 +78,6 @@ set_target_properties(secp256k1_precomputed PROPERTIES POSITION_INDEPENDENT_CODE
6878target_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)
136145endif ()
137146
138147if (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