@@ -22,8 +22,9 @@ target_compile_definitions(${TARGET} PRIVATE
2222 CPPHTTPLIB_TCP_NODELAY=1
2323)
2424
25+ set (OPENSSL_NO_ASM ON CACHE BOOL "Disable OpenSSL ASM code when building BoringSSL or LibreSSL" )
26+
2527if (LLAMA_BUILD_BORINGSSL)
26- set (OPENSSL_NO_ASM ON CACHE BOOL "Disable OpenSSL ASM code (BoringSSL)" )
2728 set (FIPS OFF CACHE BOOL "Enable FIPS (BoringSSL)" )
2829
2930 set (BORINGSSL_GIT "https://boringssl.googlesource.com/boringssl" CACHE STRING "BoringSSL git repository" )
@@ -64,6 +65,47 @@ if (LLAMA_BUILD_BORINGSSL)
6465 set (CPPHTTPLIB_OPENSSL_SUPPORT TRUE )
6566 target_link_libraries (${TARGET} PUBLIC ssl crypto)
6667
68+ elseif (LLAMA_BUILD_LIBRESSL)
69+ set (LIBRESSL_VERSION "4.2.1" CACHE STRING "LibreSSL version" )
70+
71+ message (STATUS "Fetching LibreSSL version ${LIBRESSL_VERSION} " )
72+
73+ set (LIBRESSL_ARGS
74+ URL "https://cdn.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${LIBRESSL_VERSION} .tar.gz"
75+ )
76+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
77+ list (APPEND LIBRESSL_ARGS DOWNLOAD_EXTRACT_TIMESTAMP TRUE )
78+ endif ()
79+
80+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
81+ list (APPEND LIBRESSL_ARGS EXCLUDE_FROM_ALL )
82+ endif ()
83+
84+ include (FetchContent)
85+ FetchContent_Declare(libressl ${LIBRESSL_ARGS} )
86+
87+ set (SAVED_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS} )
88+ set (SAVED_BUILD_TESTING ${BUILD_TESTING} )
89+
90+ set (BUILD_SHARED_LIBS OFF )
91+ set (BUILD_TESTING OFF )
92+
93+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
94+ FetchContent_MakeAvailable(libressl)
95+ else ()
96+ FetchContent_GetProperties(libressl)
97+ if (NOT libressl_POPULATED)
98+ FetchContent_Populate(libressl)
99+ add_subdirectory (${libressl_SOURCE_DIR} ${libressl_BINARY_DIR} EXCLUDE_FROM_ALL )
100+ endif ()
101+ endif ()
102+
103+ set (BUILD_SHARED_LIBS ${SAVED_BUILD_SHARED_LIBS} )
104+ set (BUILD_TESTING ${SAVED_BUILD_TESTING} )
105+
106+ set (CPPHTTPLIB_OPENSSL_SUPPORT TRUE )
107+ target_link_libraries (${TARGET} PUBLIC ssl crypto)
108+
67109elseif (LLAMA_OPENSSL)
68110 find_package (OpenSSL)
69111 if (OpenSSL_FOUND)
0 commit comments