summaryrefslogtreecommitdiff
path: root/cmake/dependencies/crypt/openssl.cmake
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2026-02-02 22:50:17 +0100
committerSander Vrijders <sander@ouroboros.rocks>2026-02-04 08:17:24 +0100
commit4c64d7daef8819d644ab78a911067b16943f023d (patch)
tree7545488b224d510017f08a99006d9949367a9d77 /cmake/dependencies/crypt/openssl.cmake
parentb1687570df3e080c961cdcc0d59b708cfbdf955e (diff)
downloadouroboros-4c64d7daef8819d644ab78a911067b16943f023d.tar.gz
ouroboros-4c64d7daef8819d644ab78a911067b16943f023d.zip
build: Refactor CMake back to in-tree CMakeListsbe
This moves the build definitions back to src/ subdirectories (CMakeLists.txt per component). Configuration and dependencies are kept out of tree. Configuration options are bundled into cmake/config/ modules. Dependencies are grouped by component (system/, crypt/, eth/, coverage/, etc.). It now consistently uses target-based commands (target_include_directories, target_link_libraries) instead of global include_directories(). Proper PRIVATE/PUBLIC visibility for executable link libraries. CONFIG_OUROBOROS_DEBUG now properly set based on being a valid debug config (not just checking the string name). It also adds OuroborosTargets export for find_package() support and CMake package config files (OuroborosConfig.cmake) for easier integration with CMake projects. The build logic now follows more idiomatic CMake practices with configuration separated from target definitions. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'cmake/dependencies/crypt/openssl.cmake')
-rw-r--r--cmake/dependencies/crypt/openssl.cmake35
1 files changed, 35 insertions, 0 deletions
diff --git a/cmake/dependencies/crypt/openssl.cmake b/cmake/dependencies/crypt/openssl.cmake
new file mode 100644
index 00000000..ed07cc9d
--- /dev/null
+++ b/cmake/dependencies/crypt/openssl.cmake
@@ -0,0 +1,35 @@
+find_package(OpenSSL QUIET)
+if(OPENSSL_FOUND)
+ set(HAVE_OPENSSL_RNG TRUE)
+ if(OPENSSL_VERSION VERSION_LESS "3.0.0")
+ message(STATUS "Install version >= 3.0.0 to enable OpenSSL support "
+ "(found version \"${OPENSSL_VERSION}\")")
+ else()
+ set(DISABLE_OPENSSL FALSE CACHE BOOL "Disable OpenSSL support")
+ if(NOT DISABLE_OPENSSL)
+ message(STATUS "OpenSSL support enabled, found version ${OPENSSL_VERSION}")
+ set(HAVE_OPENSSL TRUE CACHE INTERNAL "OpenSSL cryptography support available")
+ set(DISABLE_PQC FALSE CACHE BOOL "Disable post-quantum cryptography support")
+ if(OPENSSL_VERSION VERSION_GREATER_EQUAL "3.4.0")
+ if(NOT DISABLE_PQC)
+ set(HAVE_OPENSSL_PQC TRUE CACHE INTERNAL "OpenSSL post-quantum cryptography available")
+ message(STATUS "OpenSSL PQC support enabled")
+ else()
+ message(STATUS "OpenSSL PQC support disabled by user")
+ unset(HAVE_OPENSSL_PQC CACHE)
+ endif()
+ else()
+ message(STATUS "Install OpenSSL >= 3.4.0 for PQC support")
+ endif()
+ else()
+ message(STATUS "OpenSSL support disabled")
+ unset(HAVE_OPENSSL CACHE)
+ endif()
+ endif()
+else()
+ message(STATUS "Install OpenSSL version >= 3.0.0 to enable OpenSSL support")
+ unset(HAVE_OPENSSL_RNG)
+ unset(HAVE_OPENSSL CACHE)
+endif()
+
+# Secure memory options are in cmake/config/global.cmake