v31.1-roots.1 · Commit 1: [PATCH 01/17] build(roots): establish v31 portability foundation
cmake/module/CheckSystemSecp256k1.cmake
Before: /dev/null · After: cmake/module/CheckSystemSecp256k1.cmake
File metadata
new file mode 100644 index 0000000000000000000000000000000000000000..c38661dd515d86db5e1df2a051c5e6b83d43307e
Download original patch · Release notes
Diff rows 1–47 of 47. Line numbers refer to the original before/after files.
+ Added− RemovedUnmarked lines are context.
Scroll the code area horizontally to read long lines. The two line-number columns refer to before and after.
cmake/module/CheckSystemSecp256k1.cmake
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Copyright (c) 2025-present The Bitcoin Roots developers
|
|
2
|
+
# Distributed under the MIT software license, see the accompanying
|
|
3
|
+
# file COPYING or https://opensource.org/license/mit/.
|
|
4
|
+
|
|
5
|
+
# Adapted from the Roots system-library checks for Core v31's MuSig API.
|
|
6
|
+
find_package(PkgConfig REQUIRED)
|
|
7
|
+
# Refresh this project's pkg-config prefix when an operator changes package
|
|
8
|
+
# search paths in an existing build. Symbol probes alone would otherwise keep
|
|
9
|
+
# checking the previously cached headers and library.
|
|
10
|
+
unset(__pkg_config_checked_libsecp256k1 CACHE)
|
|
11
|
+
get_cmake_property(secp_cache_variables CACHE_VARIABLES)
|
|
12
|
+
foreach(cache_variable IN LISTS secp_cache_variables)
|
|
13
|
+
if(cache_variable MATCHES "^pkgcfg_lib_libsecp256k1_")
|
|
14
|
+
unset(${cache_variable} CACHE)
|
|
15
|
+
endif()
|
|
16
|
+
endforeach()
|
|
17
|
+
unset(secp_cache_variables)
|
|
18
|
+
unset(cache_variable)
|
|
19
|
+
pkg_check_modules(libsecp256k1 REQUIRED IMPORTED_TARGET libsecp256k1)
|
|
20
|
+
|
|
21
|
+
include(CheckCXXSymbolExists)
|
|
22
|
+
include(CMakePushCheckState)
|
|
23
|
+
cmake_push_check_state(RESET)
|
|
24
|
+
set(CMAKE_REQUIRED_LIBRARIES PkgConfig::libsecp256k1)
|
|
25
|
+
set(missing_symbols)
|
|
26
|
+
macro(check_secp256k1_symbol header symbol)
|
|
27
|
+
string(TOUPPER "${symbol}" check_name)
|
|
28
|
+
set(check_name "libsecp256k1_HAS_${check_name}")
|
|
29
|
+
# Recheck after the selected package changes in an existing build directory.
|
|
30
|
+
unset(${check_name} CACHE)
|
|
31
|
+
check_cxx_symbol_exists(${symbol} ${header} ${check_name})
|
|
32
|
+
if(NOT ${check_name})
|
|
33
|
+
list(APPEND missing_symbols ${symbol})
|
|
34
|
+
endif()
|
|
35
|
+
endmacro()
|
|
36
|
+
check_secp256k1_symbol(secp256k1_ellswift.h secp256k1_ellswift_create)
|
|
37
|
+
check_secp256k1_symbol(secp256k1_extrakeys.h secp256k1_xonly_pubkey_parse)
|
|
38
|
+
check_secp256k1_symbol(secp256k1_recovery.h secp256k1_ecdsa_recover)
|
|
39
|
+
check_secp256k1_symbol(secp256k1_schnorrsig.h secp256k1_schnorrsig_verify)
|
|
40
|
+
check_secp256k1_symbol(secp256k1_musig.h secp256k1_musig_pubkey_agg)
|
|
41
|
+
check_secp256k1_symbol(secp256k1_musig.h secp256k1_musig_pubkey_get)
|
|
42
|
+
cmake_pop_check_state()
|
|
43
|
+
if(missing_symbols)
|
|
44
|
+
list(JOIN missing_symbols ", " missing_symbols)
|
|
45
|
+
message(FATAL_ERROR "System libsecp256k1 lacks required v31 APIs: ${missing_symbols}.")
|
|
46
|
+
endif()
|
|
47
|
+
add_library(secp256k1 ALIAS PkgConfig::libsecp256k1)
|