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 ()
3
47
4
48
add_library (secp256k1_precomputed OBJECT EXCLUDE_FROM_ALL
5
49
precomputed_ecmult.c
@@ -8,7 +52,7 @@ add_library(secp256k1_precomputed OBJECT EXCLUDE_FROM_ALL
8
52
9
53
# Add objects explicitly rather than linking to the object libs to keep them
10
54
# from being exported.
11
- add_library (secp256k1 secp256k1.c $< TARGET_OBJECTS:secp256k1_precomputed> )
55
+ target_sources (secp256k1 PRIVATE secp256k1.c $< TARGET_OBJECTS:secp256k1_precomputed> )
12
56
13
57
add_library (secp256k1_asm INTERFACE )
14
58
if (SECP256K1_ASM STREQUAL "arm32" )
@@ -34,7 +78,6 @@ set_target_properties(secp256k1_precomputed PROPERTIES POSITION_INDEPENDENT_CODE
34
78
target_include_directories (secp256k1 INTERFACE
35
79
# Add the include path for parent projects so that they don't have to manually add it.
36
80
$< BUILD_INTERFACE:$< $< NOT:$< BOOL:${PROJECT_IS_TOP_LEVEL} > > :${PROJECT_SOURCE_DIR} /include> >
37
- $< INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
38
81
)
39
82
40
83
# This emulates Libtool to make sure Libtool and CMake agree on the ABI version,
@@ -102,36 +145,16 @@ if(SECP256K1_BUILD_CTIME_TESTS)
102
145
endif ()
103
146
104
147
if (SECP256K1_INSTALL )
148
+ include (GNUInstallDirs )
149
+ target_include_directories (secp256k1 INTERFACE
150
+ $< INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
151
+ )
105
152
install (TARGETS secp256k1
106
153
EXPORT ${PROJECT_NAME} -targets
107
154
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
108
155
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
109
156
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}
135
158
)
136
159
137
160
install (EXPORT ${PROJECT_NAME} -targets
0 commit comments