|
1 | 1 | # libsodium for minisign verify (#440 / #445). |
2 | | -# Linux + macOS link static/system libsodium. Windows MinGW verify is deferred |
3 | | -# (autotools/cmake build not wired in CI yet — download still runs, verify fails closed). |
| 2 | +# Linux + macOS: system pkg-config or autotools static build from source. |
| 3 | +# Windows MinGW: official prebuilt static libs (same 1.0.20-stable release). |
4 | 4 |
|
5 | 5 | if(TARGET qtmesh_sodium) |
6 | 6 | return() |
7 | 7 | endif() |
8 | 8 |
|
| 9 | +function(qtmesh_sodium_add_imported_static lib_path include_dir) |
| 10 | + add_library(qtmesh_sodium STATIC IMPORTED GLOBAL) |
| 11 | + set_target_properties(qtmesh_sodium PROPERTIES |
| 12 | + IMPORTED_LOCATION "${lib_path}" |
| 13 | + INTERFACE_INCLUDE_DIRECTORIES "${include_dir}" |
| 14 | + INTERFACE_COMPILE_DEFINITIONS "SODIUM_STATIC=1;QTMESH_MINISIGN_VERIFY=1" |
| 15 | + ) |
| 16 | + if(WIN32) |
| 17 | + set_property(TARGET qtmesh_sodium APPEND PROPERTY |
| 18 | + IMPORTED_LINK_INTERFACE_LIBRARIES "advapi32;bcrypt") |
| 19 | + endif() |
| 20 | +endfunction() |
| 21 | + |
9 | 22 | if(WIN32) |
10 | | - message(STATUS "libsodium: Windows MinGW verify deferred (#445 follow-up)") |
11 | | - add_library(qtmesh_sodium INTERFACE) |
12 | | - target_compile_definitions(qtmesh_sodium INTERFACE QTMESH_MINISIGN_VERIFY=0) |
| 23 | + if(NOT MINGW) |
| 24 | + message(STATUS "libsodium: Windows MSVC minisign verify not wired — verify disabled") |
| 25 | + add_library(qtmesh_sodium INTERFACE) |
| 26 | + target_compile_definitions(qtmesh_sodium INTERFACE QTMESH_MINISIGN_VERIFY=0) |
| 27 | + return() |
| 28 | + endif() |
| 29 | + |
| 30 | + include(FetchContent) |
| 31 | + |
| 32 | + set(QTMESH_LIBSODIUM_MINGW_URL |
| 33 | + "https://download.libsodium.org/libsodium/releases/libsodium-1.0.20-stable-mingw.tar.gz" |
| 34 | + CACHE STRING "Prebuilt MinGW libsodium tarball for minisign verify") |
| 35 | + set(QTMESH_LIBSODIUM_MINGW_SHA256 |
| 36 | + "19f7e5f814f62f5bfdf6ea2208244adbddb80e73362879ddb0e4844bc1f12c82" |
| 37 | + CACHE STRING "SHA256 of MinGW libsodium tarball") |
| 38 | + |
| 39 | + if(CMAKE_SIZEOF_VOID_P EQUAL 8) |
| 40 | + set(QTMESH_LIBSODIUM_MINGW_ARCH "win64") |
| 41 | + else() |
| 42 | + set(QTMESH_LIBSODIUM_MINGW_ARCH "win32") |
| 43 | + endif() |
| 44 | + |
| 45 | + message(STATUS "libsodium: using prebuilt MinGW ${QTMESH_LIBSODIUM_MINGW_ARCH} package") |
| 46 | + |
| 47 | + FetchContent_Declare( |
| 48 | + qtmesh_libsodium_mingw |
| 49 | + URL ${QTMESH_LIBSODIUM_MINGW_URL} |
| 50 | + URL_HASH SHA256=${QTMESH_LIBSODIUM_MINGW_SHA256} |
| 51 | + ) |
| 52 | + FetchContent_MakeAvailable(qtmesh_libsodium_mingw) |
| 53 | + |
| 54 | + set(QTMESH_LIBSODIUM_MINGW_ROOT |
| 55 | + "${qtmesh_libsodium_mingw_SOURCE_DIR}/libsodium-${QTMESH_LIBSODIUM_MINGW_ARCH}") |
| 56 | + set(QTMESH_LIBSODIUM_MARKER "${QTMESH_LIBSODIUM_MINGW_ROOT}/lib/libsodium.a") |
| 57 | + |
| 58 | + if(NOT EXISTS "${QTMESH_LIBSODIUM_MARKER}") |
| 59 | + message(FATAL_ERROR "libsodium MinGW package missing ${QTMESH_LIBSODIUM_MARKER}") |
| 60 | + endif() |
| 61 | + |
| 62 | + qtmesh_sodium_add_imported_static( |
| 63 | + "${QTMESH_LIBSODIUM_MARKER}" |
| 64 | + "${QTMESH_LIBSODIUM_MINGW_ROOT}/include") |
13 | 65 | return() |
14 | 66 | endif() |
15 | 67 |
|
@@ -87,9 +139,6 @@ if(NOT EXISTS "${QTMESH_LIBSODIUM_MARKER}") |
87 | 139 | endif() |
88 | 140 | endif() |
89 | 141 |
|
90 | | -add_library(qtmesh_sodium STATIC IMPORTED GLOBAL) |
91 | | -set_target_properties(qtmesh_sodium PROPERTIES |
92 | | - IMPORTED_LOCATION "${QTMESH_LIBSODIUM_MARKER}" |
93 | | - INTERFACE_INCLUDE_DIRECTORIES "${QTMESH_LIBSODIUM_PREFIX}/include" |
94 | | - INTERFACE_COMPILE_DEFINITIONS "SODIUM_STATIC=1;QTMESH_MINISIGN_VERIFY=1" |
95 | | -) |
| 142 | +qtmesh_sodium_add_imported_static( |
| 143 | + "${QTMESH_LIBSODIUM_MARKER}" |
| 144 | + "${QTMESH_LIBSODIUM_PREFIX}/include") |
0 commit comments