1
1
include (ExternalProject)
2
2
3
+ # Tell `add_library()` to default to STATIC.
4
+ # Needed because secp256k1-zkp/CMakeLists.txt sets it to ON.
5
+ set (BUILD_SHARED_LIBS OFF )
6
+
3
7
if (CMAKE_CROSSCOMPILING )
4
8
set (CONFIGURE_FLAGS
5
9
--host=${CMAKE_SYSTEM_PROCESSOR} -none-eabi
@@ -14,71 +18,19 @@ string(REPLACE "-mfloat-abi=softfp" "" MODIFIED_C_FLAGS_TMP ${CMAKE_C_FLAGS})
14
18
string (REPLACE "-mfpu=fpv4-sp-d16" "" MODIFIED_C_FLAGS ${MODIFIED_C_FLAGS_TMP} )
15
19
16
20
#----------------------
17
- # wally-core
18
-
19
- # configure flags for secp256k1 bundled in libwally core, to reduce memory consumption
20
- set (LIBWALLY_SECP256k1_FLAGS --with-ecmult-window=2 --with-ecmult-gen-precision=2 --enable-ecmult-static -precomputation --enable-module-schnorrsig --enable-module-ecdsa-adaptor)
21
- set (LIBWALLY_CONFIGURE_FLAGS --enable-static --disable-shared --disable-tests ${LIBWALLY_SECP256k1_FLAGS} )
22
- if (SANITIZE_ADDRESS)
23
- set (LIBWALLY_CFLAGS "-fsanitize=address" )
24
- endif ()
25
- if (SANITIZE_UNDEFINED)
26
- set (LIBWALLY_CFLAGS "${LIBWALLY_CFLAGS} -fsanitize=undefined" )
27
- endif ()
28
- # _DEFAULT_SOURCE enables the BSD explicit_bzero function referenced by libwally.
29
- set (LIBWALLY_CFLAGS "\
30
- ${LIBWALLY_CFLAGS} \
31
- ${MODIFIED_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE} } \
32
- -D_DEFAULT_SOURCE \
33
- -fno-strict-aliasing \
34
- " )
35
- if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
36
- string (APPEND LIBWALLY_CFLAGS " -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} " )
37
- endif ()
38
21
39
- # Hide some warnings
40
- set (LIBWALLY_CFLAGS "${LIBWALLY_CFLAGS} -Wno-cast-qual -Wno-cast-align \
41
- -Wno-missing-prototypes -Wno-redundant-decls \
42
- -Wno-switch-default -Wno-missing-declarations \
43
- -Wno-array-bounds -Wno-unused-label -Wno-sign-compare -Wno-type-limits \
44
- " )
45
- if (CMAKE_CROSSCOMPILING )
46
- set (LIBWALLY_LDFLAGS --specs=nosys.specs)
47
- endif ()
48
- set (LIBWALLY_LDFLAGS "${LIBWALLY_LDFLAGS} ${CMAKE_C_LINK_FLAGS} " )
22
+ ## secp256k1-zkp
49
23
50
- ExternalProject_Add(libwally-core
51
- PREFIX ${CMAKE_CURRENT_BINARY_DIR} /libwally-core
52
- STEP_TARGETS build -libwally
53
- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /libwally-core
54
- CONFIGURE_COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_SOURCE_DIR} /libwally-core tools/autogen.sh
55
- COMMAND ${CMAKE_COMMAND} -E env
56
- "CFLAGS=${LIBWALLY_CFLAGS} "
57
- "LDFLAGS=${LIBWALLY_LDFLAGS} "
58
- ${CMAKE_CURRENT_SOURCE_DIR} /libwally-core/configure
59
- ${CONFIGURE_FLAGS}
60
- ${LIBWALLY_CONFIGURE_FLAGS}
61
- INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
62
- COMMAND ${CMAKE_COMMAND} -E copy
63
- ${CMAKE_CURRENT_BINARY_DIR} /libwally-core/src/libwally-core-build /src/.libs/libwallycore.a
64
- ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} /libwallycore.a
65
- COMMAND ${CMAKE_COMMAND} -E copy
66
- ${CMAKE_CURRENT_BINARY_DIR} /libwally-core/src/libwally-core-build /src/secp256k1/.libs/libsecp256k1.a
67
- ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} /libsecp256k1.a
24
+ # Override
25
+ set (SECP256K1_ENABLE_MODULE_RECOVERY ON ) # needed only in Rust unit tests.
26
+ set (SECP256K1_ECMULT_WINDOW_SIZE 2 CACHE STRING "Window size for ecmult precomputation for verification, specified as integer in range [2..24]. \" AUTO\" is a reasonable setting for desktop machines (currently 15). [default=AUTO]" FORCE)
27
+ set (SECP256K1_ECMULT_GEN_PREC_BITS 2 CACHE STRING "Precision bits to tune the precomputed table size for signing, specified as integer 2, 4 or 8. \" AUTO\" is a reasonable setting for desktop machines (currently 4). [default=AUTO]" FORCE)
28
+ # Suppress all warnings in this directory, we don't have control over them.
29
+ set_directory_properties (PROPERTIES
30
+ COMPILE_OPTIONS "-w"
31
+ DIRECTORY secp256k1-zkp
68
32
)
69
-
70
- add_library (wallycore STATIC IMPORTED GLOBAL )
71
- set_property (TARGET wallycore
72
- PROPERTY IMPORTED_LOCATION ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} /libwallycore.a)
73
- set_target_properties (wallycore PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} /libwally-core/include )
74
- set_target_properties (wallycore PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} /libwally-core/include )
75
-
76
- add_library (secp256k1 STATIC IMPORTED GLOBAL )
77
- set_property (TARGET secp256k1
78
- PROPERTY IMPORTED_LOCATION ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} /libsecp256k1.a)
79
- set_target_properties (secp256k1 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} /libwally-core/src/secp256k1/include )
80
- set_target_properties (secp256k1 PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} /libwally-core/src/secp256k1/include )
81
-
33
+ add_subdirectory (secp256k1-zkp)
82
34
83
35
if (CMAKE_CROSSCOMPILING )
84
36
# Cortex Microcontroller Software Interface Standard
0 commit comments