Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
d46a02b
[civetweb] download instead of bundle and define proper CMake target,…
ferdymercury Apr 17, 2026
f795c99
[ci] explicit enable in alma10clang-ninja even if it was getting on i…
ferdymercury Apr 17, 2026
0023843
todo list
ferdymercury Apr 17, 2026
ca98d6a
fixes for SSL
ferdymercury Apr 20, 2026
a774551
fixes for SSL
ferdymercury Apr 20, 2026
81ed344
cleanup
ferdymercury Apr 20, 2026
179474e
simplify
ferdymercury Apr 20, 2026
ba3bc6b
try with installDir
ferdymercury Apr 20, 2026
8f73b75
fix asan
ferdymercury Apr 20, 2026
d25d53a
fix default
ferdymercury Apr 20, 2026
d15d1ec
mention deprecation
ferdymercury Apr 20, 2026
1755512
try fix path
ferdymercury Apr 20, 2026
14bbf72
disable SSL dynamic loading
ferdymercury Apr 20, 2026
62d7155
Update CMakeLists.txt
ferdymercury Apr 20, 2026
2c24529
fix openssl include
ferdymercury Apr 21, 2026
5a774b0
fix typo
ferdymercury Apr 21, 2026
d932036
fix builtin ssl name
ferdymercury Apr 21, 2026
d207393
fix builtin name
ferdymercury Apr 21, 2026
6cf7d35
rename builtin name
ferdymercury Apr 21, 2026
470c045
try fix openssl mac include not found
ferdymercury Apr 21, 2026
0dc5b73
Update CMakeLists.txt
ferdymercury Apr 21, 2026
4d5252c
Update cmake/modules/SearchInstalledSoftware.cmake
ferdymercury Apr 21, 2026
5d93626
Apply suggestion from @ferdymercury
ferdymercury Apr 22, 2026
4f8e516
print some debug info
ferdymercury Apr 22, 2026
1d491e0
try more debugging
ferdymercury Apr 22, 2026
0262d38
another attempt
ferdymercury Apr 22, 2026
9ef1091
avoid cache vars
ferdymercury Apr 22, 2026
763b983
fix typo
ferdymercury Apr 22, 2026
eb19e3a
more
ferdymercury Apr 22, 2026
4a76496
verbose
ferdymercury Apr 22, 2026
e55df88
vninja
ferdymercury Apr 22, 2026
11942fa
crypto
ferdymercury Apr 22, 2026
7b10024
more mssges
ferdymercury Apr 22, 2026
91bec93
fix
ferdymercury Apr 22, 2026
4371103
Update CMakeLists.txt
ferdymercury Apr 22, 2026
2614841
Update CMakeLists.txt
ferdymercury Apr 23, 2026
0b2b579
Update CMakeLists.txt
ferdymercury Apr 23, 2026
a62253a
Update CMakeLists.txt
ferdymercury Apr 23, 2026
6e9f4bf
print headers
ferdymercury Apr 23, 2026
15eeeeb
Update 0001-message-libs.patch
ferdymercury Apr 23, 2026
8ce832d
Update CMakeLists.txt
ferdymercury Apr 23, 2026
7027fdd
undo
ferdymercury Apr 23, 2026
40c025a
[net] document civetweb builtin mechanism and version link
ferdymercury Apr 27, 2026
ef2880f
[civetweb] add patches after 1.16 that solve several CVE
ferdymercury Apr 27, 2026
939de48
[cmake] force-enable builtin_civetweb since 1.16 version misses sever…
ferdymercury Apr 27, 2026
1bae486
fix patches
ferdymercury Apr 27, 2026
905a933
use git not patches
ferdymercury Apr 27, 2026
be037ed
add patches
ferdymercury Apr 27, 2026
50215a3
fix path and comments
ferdymercury Apr 27, 2026
cf33eb6
commenting
ferdymercury Apr 27, 2026
bcf7d2b
fix indent warning
ferdymercury Apr 27, 2026
0fee4db
swap order, undefine update
ferdymercury Apr 27, 2026
f102b54
[ssl] missed one parent scope
ferdymercury Apr 27, 2026
dce2d74
Update CMakeLists.txt
ferdymercury Apr 27, 2026
23b0ec3
disable builtin civetweb on Ubu26
ferdymercury May 20, 2026
da058ea
Update SearchInstalledSoftware.cmake
ferdymercury May 20, 2026
ca892b9
detect if websockets component is part of systemwide civetweb
ferdymercury May 20, 2026
62bc889
Apply suggestion from @ferdymercury
ferdymercury May 20, 2026
b92d298
correctly check for websocket civetweb at compile time
ferdymercury May 20, 2026
44d1bf6
Apply suggestion from @ferdymercury
ferdymercury May 20, 2026
e37934e
Update civetweb_check_features.c
ferdymercury May 21, 2026
f54f449
Update SearchInstalledSoftware.cmake
ferdymercury May 21, 2026
a02c54f
Update RootBuildOptions.cmake
ferdymercury May 21, 2026
4adf834
[cmake] do not error out if build dir is git dir
ferdymercury May 29, 2026
457a2ee
avoid issue with incremental patching
ferdymercury May 29, 2026
4af0e21
Create civetweb-marker.diff
ferdymercury May 29, 2026
dc1f246
xdom socket missing in ubu packages
ferdymercury Jun 3, 2026
7c8a7b9
Update TCivetweb.cxx
ferdymercury Jun 3, 2026
a9607e9
Update SearchInstalledSoftware.cmake
ferdymercury Jun 4, 2026
0017480
f
ferdymercury Jun 8, 2026
3efbeb7
enable zlib feature
ferdymercury Jun 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
CMAKE_C_COMPILER=clang
CMAKE_CXX_COMPILER=clang++
CMAKE_GENERATOR=Ninja
builtin_civetweb=ON
builtin_fftw3=ON
builtin_freetype=ON
builtin_ftgl=ON
Expand Down
45 changes: 45 additions & 0 deletions builtins/civetweb/1385.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
From 79077517e3d4ee648f47af12215dc1cf10e230a5 Mon Sep 17 00:00:00 2001
From: "V.Shkriabets" <vshcryabets@gmail.com>
Date: Wed, 22 Apr 2026 16:14:18 +0300
Subject: [PATCH] Fixed old variable names

---
src/civetweb.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/civetweb.c b/src/civetweb.c
index f6a60e214..006fa7a2b 100644
--- a/src/civetweb.c
+++ b/src/civetweb.c
@@ -19201,15 +19201,15 @@ get_request(struct mg_connection *conn, char *ebuf, size_t ebuf_len, int *err)
conn->accept_gzip = 1;
}
#endif
- h_chunk = get_header(conn->request_info.http_headers,
+ h_chunk = get_header(conn->request_info.http_headers,
conn->request_info.num_headers,
"Transfer-Encoding");
- h_len = get_header(conn->request_info.http_headers,
+ h_len = get_header(conn->request_info.http_headers,
conn->request_info.num_headers,
"Content-Length");
- if (h_chunk != NULL)
- && mg_strcasecmp(cl, "identity")) {
- if ((0!=mg_strcasecmp(cl, "chunked")) || (h_len!=NULL)) {
+ if ((h_chunk != NULL)
+ && mg_strcasecmp(h_chunk, "identity")) {
+ if ((0!=mg_strcasecmp(h_chunk, "chunked")) || (h_len!=NULL)) {
mg_snprintf(conn,
NULL, /* No truncation check for ebuf */
ebuf,
@@ -19224,8 +19224,8 @@ get_request(struct mg_connection *conn, char *ebuf, size_t ebuf_len, int *err)
} else if (h_len != NULL) {
/* Request has content length set */
char *endptr = NULL;
- conn->content_len = strtoll(cl, &endptr, 10);
- if ((endptr == cl) || (conn->content_len < 0)) {
+ conn->content_len = strtoll(h_len, &endptr, 10);
+ if ((endptr == h_len) || (conn->content_len < 0)) {
mg_snprintf(conn,
NULL, /* No truncation check for ebuf */
ebuf,
26 changes: 26 additions & 0 deletions builtins/civetweb/1389.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
From b8f93aafd3229fff5acea786b74b573202b169f3 Mon Sep 17 00:00:00 2001
From: ferdymercury <ferdymercury@users.noreply.github.com>
Date: Mon, 27 Apr 2026 12:13:45 +0200
Subject: [PATCH] Only include deprecated header when really necessary

deprecated ENGINE API is only used #if !defined(OPENSSL_API_1_1) && !defined(OPENSSL_API_3_0)
---
src/civetweb.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/civetweb.c b/src/civetweb.c
index f6a60e214..ecbd1a8a4 100644
--- a/src/civetweb.c
+++ b/src/civetweb.c
@@ -1797,7 +1797,10 @@ typedef struct SSL_CTX SSL_CTX;
#include <openssl/conf.h>
#include <openssl/crypto.h>
#include <openssl/dh.h>
-#include <openssl/engine.h>
+
+#if defined(OPENSSL_API_1_0)
+#include <openssl/engine.h> // deprecated later on
+#endif
#include <openssl/err.h>
#include <openssl/opensslv.h>
#include <openssl/pem.h>
158 changes: 158 additions & 0 deletions builtins/civetweb/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers.
# All rights reserved.
#
# For the licensing terms see $ROOTSYS/LICENSE.
# For the list of contributors see $ROOTSYS/README/CREDITS.

# **PLEASE UPDATE ALSO THE FOLLOWING LINE WHEN UPDATING THE VERSION**
# 10 Apr 2023, https://github.com/civetweb/civetweb/releases/tag/v1.16
set(ROOT_CIVETWEB_VERSION 1.16) # with some patches, so almost 1.17
# set(ROOT_CIVETWEB_HASH "f0e471c1bf4e7804a6cfb41ea9d13e7d623b2bcc7bc1e2a4dd54951a24d60285")
set(ROOT_CIVETWEB_PREFIX ${CMAKE_BINARY_DIR}/builtins/CIVETWEB-prefix)
set(ROOT_CIVETWEB_LIBRARY ${ROOT_CIVETWEB_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}civetweb${CMAKE_STATIC_LIBRARY_SUFFIX})

if (NOT DEFINED GIT_EXECUTABLE)
set(GIT_EXECUTABLE "git")
endif()
# check if the patch has already been applied
if(NOT EXISTS "${ROOT_CIVETWEB_PREFIX}/src/BUILTIN_CIVETWEB/._patched")
set(ROOT_CIVETWEB_PATCH_COMMAND PATCH_COMMAND ${GIT_EXECUTABLE} init COMMAND ${GIT_EXECUTABLE} apply
${CMAKE_CURRENT_SOURCE_DIR}/1385.patch # https://github.com/civetweb/civetweb/pull/1385
${CMAKE_CURRENT_SOURCE_DIR}/1389.patch # https://github.com/civetweb/civetweb/pull/1389
${CMAKE_CURRENT_SOURCE_DIR}/civetweb-marker.diff)
endif()

include(ExternalProject)

# Clear cache variables set by find_package(CIVETWEB)
# to ensure that we use the builtin version
foreach(var CIVETWEB_LIBRARIES CIVETWEB_LIBRARY CIVETWEB_LIBRARY_DEBUG CIVETWEB_LIBRARY_RELEASE CIVETWEB_FOUND CIVETWEB_VERSION CIVETWEB_INCLUDE_DIR CIVETWEB_LIBRARY CIVETWEB_LIBRARIES)
unset(${var})
unset(${var} CACHE)
endforeach()

if(WIN32 AND NOT CMAKE_GENERATOR MATCHES Ninja)
if(winrtdebug)
set(ROOT_CIVETWEB_BUILD_COMMAND_FLAGS "--config Debug")
else()
set(ROOT_CIVETWEB_BUILD_COMMAND_FLAGS "--config $<IF:$<CONFIG:Debug,RelWithDebInfo>,RelWithDebInfo,Release>")
endif()
endif()

if(ssl)
if(OPENSSL_VERSION)
string(REPLACE "." ";" lst ${OPENSSL_VERSION})
list(GET lst 0 ssl_major)
list(GET lst 1 ssl_minor)
else()
MESSAGE(SEND_ERROR "No openSSL version defined.")
endif()

if((${ssl_major} EQUAL "1") AND (${ssl_minor} EQUAL "1"))
MESSAGE(STATUS "Use SSL API VERSION 1.1 for civetweb")
set(ROOT_SSL_API "-DCIVETWEB_SSL_OPENSSL_API_1_1=ON" "-DCIVETWEB_SSL_OPENSSL_API_3_0=OFF" "-DCIVETWEB_SSL_OPENSSL_API_1_0=OFF" "-DCIVETWEB_ENABLE_SSL=ON")
elseif((${ssl_major} EQUAL "3"))
MESSAGE(STATUS "Use SSL API VERSION 3.${ssl_minor} for civetweb")
set(ROOT_SSL_API "-DCIVETWEB_SSL_OPENSSL_API_3_0=ON" "-DCIVETWEB_SSL_OPENSSL_API_1_1=OFF" "-DCIVETWEB_SSL_OPENSSL_API_1_0=OFF" "-DCIVETWEB_ENABLE_SSL=ON")
elseif((${ssl_major} EQUAL "1") AND (${ssl_minor} EQUAL "0"))
MESSAGE(STATUS "Use SSL API VERSION 1.0 for civetweb")
set(ROOT_SSL_API "-DCIVETWEB_SSL_OPENSSL_API_1_0=ON" "-DCIVETWEB_SSL_OPENSSL_API_3_0=OFF" "-DCIVETWEB_SSL_OPENSSL_API_1_1=OFF" "-DCIVETWEB_ENABLE_SSL=ON")
else()
MESSAGE(WARNING "Not able to recognize SSL version ${OPENSSL_VERSION}, disable SSL")
set(ROOT_SSL_API "-DCIVETWEB_ENABLE_SSL=OFF")
endif()
else()
set(ROOT_SSL_API "-DCIVETWEB_ENABLE_SSL=OFF")
endif()
if(NOT MSVC)
set(ROOT_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_X_DOM_SOCKET")
else()
set(ROOT_C_FLAGS ${CMAKE_C_FLAGS})
endif()
if (CMAKE_OSX_SYSROOT)
set(ROOT_C_FLAGS "${ROOT_C_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}")
endif()

ExternalProject_Add(BUILTIN_CIVETWEB
PREFIX ${ROOT_CIVETWEB_PREFIX}
# URL ${lcgpackages}/civetweb-${ROOT_CIVETWEB_VERSION}.tar.gz
# URL https://github.com/civetweb/civetweb/archive/refs/tags/v${ROOT_CIVETWEB_VERSION}.tar.gz # TODO move to LCG
# URL_HASH SHA256=${ROOT_CIVETWEB_HASH}
# TODO: once 1.17 released, review _EXTERNAL_CIVETWEB workaround and bump SearchInstalledSoftware find_package to 1.17 plus remove builtin_ force-enable workaround with fail-on-missing
# and potentially install libcivetweb-dev in root-ci-images and change RootBuildOptions default builtin_civetweb to OFF, if random crashes seen by linev are gone
GIT_REPOSITORY https://github.com/civetweb/civetweb.git
GIT_TAG 588860e30721bf5453b0440c390865a8e85dcae5 # v1.17.0 not yet released, v1.16.0 has missing CVE fixes
${ROOT_CIVETWEB_PATCH_COMMAND}
UPDATE_COMMAND ""
LOG_DOWNLOAD TRUE
LOG_CONFIGURE FALSE
LOG_BUILD FALSE
LOG_PATCH FALSE
LOG_INSTALL FALSE
LOG_OUTPUT_ON_FAILURE FALSE
USES_TERMINAL_DOWNLOAD true
USES_TERMINAL_UPDATE true
USES_TERMINAL_BUILD true
USES_TERMINAL_INSTALL true
USES_TERMINAL_TEST true
INSTALL_DIR ${ROOT_CIVETWEB_PREFIX}
CMAKE_ARGS -G ${CMAKE_GENERATOR}
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DCMAKE_INSTALL_LIBDIR:PATH=<INSTALL_DIR>/lib
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_FLAGS=${ROOT_C_FLAGS}
-DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS}
-DBUILD_SHARED_LIBS:BOOL=FALSE
-DBUILD_TESTING=FALSE
-DCIVETWEB_ENABLE_ASAN=OFF # If set to ON, you need to set below link_library interface to UBSAN libs
-DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=OFF # If set to ON, you need to set below link_library interface to CMAKE_DL_LIBS
-DCIVETWEB_BUILD_TESTING=FALSE
-DCIVETWEB_ENABLE_ZLIB=ON
-DCIVETWEB_ENABLE_WEBSOCKETS=ON
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=TRUE
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
-DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}
-DOPENSSL_CRYPTO_LIBRARY=${OPENSSL_CRYPTO_LIBRARY}
-DOPENSSL_SSL_LIBRARY=${OPENSSL_SSL_LIBRARY}
-DOPENSSL_LIBRARIES=${OPENSSL_LIBRARIES}
#-DCMAKE_PREFIX_PATH:STRING=${OPENSSL_PREFIX}
-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}
#-DOPENSSL_FOUND=TRUE
#-DOpenSSL_FOUND=TRUE
#-DOpenSSL_ROOT=${OPENSSL_ROOT} #For CMake <3.27
#-DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}
#-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
# -DCMAKE_INSTALL_RPATH:STRING=${rpath_origin}
${ROOT_SSL_API}
BUILD_COMMAND ${CMAKE_COMMAND} --build . ${ROOT_CIVETWEB_BUILD_COMMAND_FLAGS}
INSTALL_COMMAND ${CMAKE_COMMAND} --build . ${ROOT_CIVETWEB_BUILD_COMMAND_FLAGS} --target install
BUILD_BYPRODUCTS
${ROOT_CIVETWEB_LIBRARY}
TIMEOUT 600
)

file(MAKE_DIRECTORY ${ROOT_CIVETWEB_PREFIX}/include)
add_library(civetweb::civetweb IMPORTED STATIC GLOBAL)
add_dependencies(civetweb::civetweb BUILTIN_CIVETWEB)
if(builtin_openssl)
add_dependencies(BUILTIN_CIVETWEB BUILTIN_OPENSSL)
endif()
if(builtin_zlib)
add_dependencies(BUILTIN_CIVETWEB BUILTIN_ZLIB)
endif()
set_target_properties(civetweb::civetweb PROPERTIES
IMPORTED_LOCATION ${ROOT_CIVETWEB_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${ROOT_CIVETWEB_PREFIX}/include)
target_compile_definitions(civetweb::civetweb INTERFACE CIVETWEB_LIBRARY_STATIC) # needed for Win32 since public flag is not correctly propagated to parent scope (BUILD_SHARED_LIBS works fine for building but when installing, flag info is lost)
if (ssl)
target_link_libraries(civetweb::civetweb INTERFACE OpenSSL::SSL ZLIB::ZLIB)
endif()

# Set the canonical output of find_package according to
# https://cmake.org/cmake/help/latest/manual/cmake-developer.7.html#standard-variable-names
set(civetweb_INCLUDE_DIRS ${ROOT_CIVETWEB_PREFIX}/include PARENT_SCOPE)
set(civetweb_LIBRARIES ${ROOT_CIVETWEB_LIBRARY} PARENT_SCOPE)
set(civetweb_FOUND TRUE PARENT_SCOPE)
set(civetweb_VERSION ${ROOT_CIVETWEB_VERSION} PARENT_SCOPE)
4 changes: 4 additions & 0 deletions builtins/civetweb/civetweb-marker.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
--- /dev/null 2026-03-12 08:23:04
+++ ._patched 2026-04-28 08:20:11
@@ -0,0 +1,1 @@
+civetweb has been patched
33 changes: 20 additions & 13 deletions builtins/openssl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ else()
set(OPENSSL_CONFIG_CMD ./config)
endif()

ExternalProject_Add(OPENSSL
ExternalProject_Add(BUILTIN_OPENSSL
URL ${OPENSSL_URL} URL_HASH ${OPENSSL_URLHASH}
INSTALL_DIR ${OPENSSL_PREFIX}
CONFIGURE_COMMAND ${OPENSSL_CONFIG_CMD} no-shared --prefix=<INSTALL_DIR> --openssldir=<INSTALL_DIR>
Expand All @@ -48,28 +48,24 @@ ExternalProject_Add(OPENSSL
BUILD_BYPRODUCTS ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_SSL_LIBRARY}
TIMEOUT 600)

set(OPENSSL_FOUND TRUE CACHE BOOL "" FORCE)
set(OPENSSL_VERSION ${OPENSSL_VERSION} CACHE INTERNAL "" FORCE)
set(OPENSSL_VERSION_STRING "${OPENSSL_VERSION}" CACHE INTERNAL "" FORCE)
set(OPENSSL_INCLUDE_DIR ${OPENSSL_PREFIX}/include CACHE INTERNAL "" FORCE)
set(OPENSSL_INCLUDE_DIRS ${OPENSSL_PREFIX}/include CACHE INTERNAL "" FORCE)
set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_CRYPTO_LIBRARY} CACHE INTERNAL "" FORCE)
set(OPENSSL_SSL_LIBRARY ${OPENSSL_SSL_LIBRARY} CACHE INTERNAL "" FORCE)
set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} ${CMAKE_DL_LIBS} CACHE INTERNAL "" FORCE)
set(OPENSSL_ROOT ${OPENSSL_PREFIX} CACHE INTERNAL "Location of the builtin OpenSSL installation" FORCE)
set(OPENSSL_FOUND TRUE)
set(OPENSSL_INCLUDE_DIR ${OPENSSL_PREFIX}/include)
set(OPENSSL_INCLUDE_DIRS ${OPENSSL_PREFIX}/include)
set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} ${CMAKE_DL_LIBS})
set(OPENSSL_ROOT ${OPENSSL_PREFIX})

# Dependent libraries might check for the existence of the include directories
file(MAKE_DIRECTORY ${OPENSSL_INCLUDE_DIR})

add_library(builtin_crypto INTERFACE)
target_include_directories(builtin_crypto INTERFACE $<BUILD_INTERFACE:${OPENSSL_INCLUDE_DIR}>)
target_link_libraries(builtin_crypto INTERFACE $<BUILD_INTERFACE:${OPENSSL_CRYPTO_LIBRARY}>)
add_dependencies(builtin_crypto OPENSSL)
add_dependencies(builtin_crypto BUILTIN_OPENSSL)

add_library(builtin_ssl INTERFACE)
target_include_directories(builtin_ssl INTERFACE $<BUILD_INTERFACE:${OPENSSL_INCLUDE_DIR}>)
target_link_libraries(builtin_ssl INTERFACE $<BUILD_INTERFACE:${OPENSSL_LIBRARIES}>)
add_dependencies(builtin_ssl OPENSSL)
add_dependencies(builtin_ssl BUILTIN_OPENSSL)

add_library(OpenSSL::Crypto ALIAS builtin_crypto)
add_library(OpenSSL::SSL ALIAS builtin_ssl)
Expand All @@ -86,4 +82,15 @@ find_package_handle_standard_args(OpenSSL
OPENSSL_VERSION_STRING
)

set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS OPENSSL)
set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS BUILTIN_OPENSSL)

set(OPENSSL_FOUND TRUE)
set(OPENSSL_VERSION ${OPENSSL_VERSION} PARENT_SCOPE) # CMake 4.2 changes to small case
set(OPENSSL_VERSION_STRING ${OPENSSL_VERSION_STRING} PARENT_SCOPE)
set(OPENSSL_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR} PARENT_SCOPE)
set(OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIRS} PARENT_SCOPE)
set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_CRYPTO_LIBRARY} PARENT_SCOPE)
set(OPENSSL_SSL_LIBRARY ${OPENSSL_SSL_LIBRARY} PARENT_SCOPE)
set(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} PARENT_SCOPE)
set(OPENSSL_ROOT ${OPENSSL_ROOT} PARENT_SCOPE)
set(OPENSSL_ROOT_DIR ${OPENSSL_ROOT} PARENT_SCOPE)
15 changes: 10 additions & 5 deletions builtins/xrootd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ set(XROOTD_PREFIX ${CMAKE_BINARY_DIR}/XROOTD-prefix)

message(STATUS "Downloading and building XROOTD version ${XROOTD_VERSION}")

set(XROOTD_INCLUDE_DIRS ${XROOTD_PREFIX}/include/xrootd CACHE INTERNAL "" FORCE)
set(XROOTD_INCLUDE_DIRS ${XROOTD_PREFIX}/include/xrootd)
set(XRDCL_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}XrdCl${CMAKE_SHARED_LIBRARY_SUFFIX})
set(XRDUTILS_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}XrdUtils${CMAKE_SHARED_LIBRARY_SUFFIX})
set(XROOTD_CLIENT_LIBRARIES ${XROOTD_PREFIX}/lib/${XRDCL_NAME} CACHE INTERNAL "" FORCE)
set(XROOTD_UTILS_LIBRARIES ${XROOTD_PREFIX}/lib/${XRDUTILS_NAME} CACHE INTERNAL "" FORCE)
set(XROOTD_LIBRARIES ${XROOTD_PREFIX}/lib/${XRDCL_NAME} CACHE INTERNAL "" FORCE)
set(XROOTD_CLIENT_LIBRARIES ${XROOTD_PREFIX}/lib/${XRDCL_NAME})
set(XROOTD_UTILS_LIBRARIES ${XROOTD_PREFIX}/lib/${XRDUTILS_NAME})
set(XROOTD_LIBRARIES ${XROOTD_PREFIX}/lib/${XRDCL_NAME})

if(APPLE)
set(rpath_origin "@loader_path")
Expand Down Expand Up @@ -57,11 +57,16 @@ ExternalProject_Add(
file(MAKE_DIRECTORY ${XROOTD_PREFIX}/include/xrootd)

if(builtin_openssl)
add_dependencies(BUILTIN_XROOTD OPENSSL)
add_dependencies(BUILTIN_XROOTD BUILTIN_OPENSSL)
endif()

install(DIRECTORY ${XROOTD_PREFIX}/lib/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "libXrd*")
install(DIRECTORY ${XROOTD_PREFIX}/include/xrootd/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/xrootd COMPONENT headers)
set(CMAKE_BUILD_RPATH ${CMAKE_BUILD_RPATH} ${XROOTD_PREFIX}/lib PARENT_SCOPE)

set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS BUILTIN_XROOTD)

set(XROOTD_INCLUDE_DIRS ${XROOTD_INCLUDE_DIRS} PARENT_SCOPE)
set(XROOTD_CLIENT_LIBRARIES ${XROOTD_CLIENT_LIBRARIES} PARENT_SCOPE)
set(XROOTD_UTILS_LIBRARIES ${XROOTD_UTILS_LIBRARIES} PARENT_SCOPE)
set(XROOTD_LIBRARIES ${XROOTD_LIBRARIES} PARENT_SCOPE)
7 changes: 7 additions & 0 deletions cmake/modules/FindFastCGI.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,11 @@ if(FASTCGI_FOUND)
if(NOT FASTCGI_LIBRARIES)
set(FASTCGI_LIBRARIES ${FASTCGI_LIBRARY})
endif()

if(NOT TARGET FastCGI::FastCGI)
add_library(FastCGI::FastCGI UNKNOWN IMPORTED)
set_target_properties(FastCGI::FastCGI PROPERTIES
IMPORTED_LOCATION "${FASTCGI_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${FASTCGI_INCLUDE_DIR}")
endif()
endif()
2 changes: 1 addition & 1 deletion cmake/modules/RootBuildOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ ROOT_BUILD_OPTION(builtin_cfitsio OFF "Build CFITSIO internally (requires networ
ROOT_BUILD_OPTION(builtin_clang ON "Build bundled copy of Clang")
ROOT_BUILD_OPTION(builtin_cling ON "Build bundled copy of Cling. Only build with an external cling if you know what you are doing: associating ROOT commits with cling commits is tricky.")
MARK_AS_ADVANCED(builtin_cling)
ROOT_BUILD_OPTION(builtin_civetweb ON "Use civetweb distributed with ROOT")
ROOT_BUILD_OPTION(builtin_civetweb ON "Build civetweb (with -DCIVETWEB_ENABLE_WEBSOCKETS=ON -DCIVETWEB_ENABLE_X_DOM_SOCKET=ON) internally (requires network).") # TODO change default to OFF
ROOT_BUILD_OPTION(builtin_fftw3 OFF "Build FFTW3 internally (requires network) [GPL]")
ROOT_BUILD_OPTION(builtin_freetype OFF "Build bundled copy of freetype")
ROOT_BUILD_OPTION(builtin_ftgl OFF "Build bundled copy of FTGL")
Expand Down
Loading
Loading