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+ )
7+
8+ # Processing must be done in a topological sorting of the dependency graph
9+ # (dependent module first).
10+ if (SECP256K1_ENABLE_MODULE_ELLSWIFT)
11+ add_compile_definitions (ENABLE_MODULE_ELLSWIFT=1)
12+ set_property (TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR} /include /secp256k1_ellswift.h)
13+ endif ()
14+
15+ if (SECP256K1_ENABLE_MODULE_MUSIG)
16+ if (DEFINED SECP256K1_ENABLE_MODULE_SCHNORRSIG AND NOT SECP256K1_ENABLE_MODULE_SCHNORRSIG)
17+ message (FATAL_ERROR "Module dependency error: You have disabled the schnorrsig module explicitly, but it is required by the musig module." )
18+ endif ()
19+ set (SECP256K1_ENABLE_MODULE_SCHNORRSIG ON )
20+ add_compile_definitions (ENABLE_MODULE_MUSIG=1)
21+ set_property (TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR} /include /secp256k1_musig.h)
22+ endif ()
23+
24+ if (SECP256K1_ENABLE_MODULE_SCHNORRSIG)
25+ if (DEFINED SECP256K1_ENABLE_MODULE_EXTRAKEYS AND NOT SECP256K1_ENABLE_MODULE_EXTRAKEYS)
26+ message (FATAL_ERROR "Module dependency error: You have disabled the extrakeys module explicitly, but it is required by the schnorrsig module." )
27+ endif ()
28+ set (SECP256K1_ENABLE_MODULE_EXTRAKEYS ON )
29+ add_compile_definitions (ENABLE_MODULE_SCHNORRSIG=1)
30+ set_property (TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR} /include /secp256k1_schnorrsig.h)
31+ endif ()
32+
33+ if (SECP256K1_ENABLE_MODULE_EXTRAKEYS)
34+ add_compile_definitions (ENABLE_MODULE_EXTRAKEYS=1)
35+ set_property (TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR} /include /secp256k1_extrakeys.h)
36+ endif ()
37+
38+ if (SECP256K1_ENABLE_MODULE_RECOVERY)
39+ add_compile_definitions (ENABLE_MODULE_RECOVERY=1)
40+ set_property (TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR} /include /secp256k1_recovery.h)
41+ endif ()
42+
43+ if (SECP256K1_ENABLE_MODULE_ECDH)
44+ add_compile_definitions (ENABLE_MODULE_ECDH=1)
45+ set_property (TARGET secp256k1 APPEND PROPERTY PUBLIC_HEADER ${PROJECT_SOURCE_DIR} /include /secp256k1_ecdh.h)
46+ endif ()
347
448add_library (secp256k1_precomputed OBJECT EXCLUDE_FROM_ALL
549 precomputed_ecmult.c
@@ -8,7 +52,7 @@ add_library(secp256k1_precomputed OBJECT EXCLUDE_FROM_ALL
852
953# Add objects explicitly rather than linking to the object libs to keep them
1054# from being exported.
11- add_library (secp256k1 secp256k1.c $<TARGET_OBJECTS:secp256k1_precomputed>)
55+ target_sources (secp256k1 PRIVATE secp256k1.c $<TARGET_OBJECTS:secp256k1_precomputed>)
1256
1357add_library (secp256k1_asm INTERFACE )
1458if (SECP256K1_ASM STREQUAL "arm32" )
@@ -34,7 +78,6 @@ set_target_properties(secp256k1_precomputed PROPERTIES POSITION_INDEPENDENT_CODE
3478target_include_directories (secp256k1 INTERFACE
3579 # Add the include path for parent projects so that they don't have to manually add it.
3680 $<BUILD_INTERFACE:$<$<NOT :$<BOOL :${PROJECT_IS_TOP_LEVEL} >>:${PROJECT_SOURCE_DIR} /include >>
37- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
3881)
3982
4083# This emulates Libtool to make sure Libtool and CMake agree on the ABI version,
@@ -102,36 +145,16 @@ if(SECP256K1_BUILD_CTIME_TESTS)
102145endif ()
103146
104147if (SECP256K1_INSTALL)
148+ include (GNUInstallDirs)
149+ target_include_directories (secp256k1 INTERFACE
150+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
151+ )
105152 install (TARGETS secp256k1
106153 EXPORT ${PROJECT_NAME} -targets
107154 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
108155 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
109156 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- if (SECP256K1_ENABLE_MODULE_MUSIG)
128- list (APPEND ${PROJECT_NAME} _headers "${PROJECT_SOURCE_DIR} /include/secp256k1_musig.h" )
129- endif ()
130- if (SECP256K1_ENABLE_MODULE_ELLSWIFT)
131- list (APPEND ${PROJECT_NAME} _headers "${PROJECT_SOURCE_DIR} /include/secp256k1_ellswift.h" )
132- endif ()
133- install (FILES ${${PROJECT_NAME} _headers}
134- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
157+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
135158 )
136159
137160 install (EXPORT ${PROJECT_NAME} -targets
0 commit comments