Skip to content

Commit 0a4aeb9

Browse files
authored
cmake : add option to build and link LibreSSL (ggml-org#17552)
Signed-off-by: Adrien Gallouët <[email protected]>
1 parent 2ba7195 commit 0a4aeb9

File tree

1 file changed

+43
-1
lines changed

1 file changed

+43
-1
lines changed

vendor/cpp-httplib/CMakeLists.txt

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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+
2527
if (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+
67109
elseif (LLAMA_OPENSSL)
68110
find_package(OpenSSL)
69111
if (OpenSSL_FOUND)

0 commit comments

Comments
 (0)