char-fork/llama.cpp

git clone https://git.t4t.associates/char-fork/llama.cpp

Alessandro de Oliveira Faria (A.K.A.CABELO)vendor: update BoringSSL to 0.20260903.0 (#28354)38521ec33

char/aliceai-t5-moe
6.7 KiB197 linesraw
1set(TARGET cpp-httplib)
2license_add_file("cpp-httplib" "LICENSE")
3
4find_package(Threads REQUIRED)
5
6llama_add_compile_flags()
7
8set(CMAKE_POSITION_INDEPENDENT_CODE ON)
9
10add_library(${TARGET} STATIC httplib.cpp httplib.h)
11
12add_library(vendor::cpp-httplib ALIAS ${TARGET})
13
14# disable warnings in 3rd party code
15if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
16    target_compile_options(${TARGET} PRIVATE /w)
17else()
18    target_compile_options(${TARGET} PRIVATE -w)
19endif()
20
21target_link_libraries(${TARGET} PRIVATE Threads::Threads)
22
23if (WIN32 AND NOT MSVC)
24    target_link_libraries(${TARGET} PUBLIC ws2_32)
25endif()
26
27target_compile_features(${TARGET} PRIVATE cxx_std_17)
28
29target_compile_definitions(${TARGET} PRIVATE
30    # increase max payload length to allow use of larger context size
31    CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH=1048576
32    # increase backlog size to avoid connection resets for >> 1 slots
33    CPPHTTPLIB_LISTEN_BACKLOG=512
34    # increase max URI length to handle longer prompts in query string
35    CPPHTTPLIB_REQUEST_URI_MAX_LENGTH=32768
36    # disable Nagle's algorithm
37    CPPHTTPLIB_TCP_NODELAY=1
38)
39
40set(OPENSSL_NO_ASM ON CACHE BOOL "Disable OpenSSL ASM code when building BoringSSL or LibreSSL")
41
42if (LLAMA_BUILD_BORINGSSL)
43    set(FIPS OFF CACHE BOOL "Enable FIPS (BoringSSL)")
44
45    set(BORINGSSL_GIT "https://boringssl.googlesource.com/boringssl" CACHE STRING "BoringSSL git repository")
46    set(BORINGSSL_VERSION "0.20260903.0" CACHE STRING "BoringSSL version")
47
48    message(STATUS "Fetching BoringSSL version ${BORINGSSL_VERSION}")
49
50    set(BORINGSSL_ARGS
51        GIT_REPOSITORY ${BORINGSSL_GIT}
52        GIT_TAG        ${BORINGSSL_VERSION}
53    )
54    if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
55        list(APPEND BORINGSSL_ARGS EXCLUDE_FROM_ALL)
56    endif()
57
58    include(FetchContent)
59    FetchContent_Declare(boringssl ${BORINGSSL_ARGS})
60
61    set(SAVED_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
62    set(SAVED_BUILD_TESTING ${BUILD_TESTING})
63
64    set(BUILD_SHARED_LIBS OFF)
65    set(BUILD_TESTING OFF)
66
67    if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
68        FetchContent_MakeAvailable(boringssl)
69    else()
70        FetchContent_GetProperties(boringssl)
71        if(NOT boringssl_POPULATED)
72            FetchContent_Populate(boringssl)
73            add_subdirectory(${boringssl_SOURCE_DIR} ${boringssl_BINARY_DIR} EXCLUDE_FROM_ALL)
74        endif()
75    endif()
76
77    set(BUILD_SHARED_LIBS ${SAVED_BUILD_SHARED_LIBS})
78    set(BUILD_TESTING ${SAVED_BUILD_TESTING})
79
80    license_add_file("BoringSSL" "${boringssl_SOURCE_DIR}/LICENSE")
81
82    set(CPPHTTPLIB_OPENSSL_SUPPORT TRUE)
83    target_link_libraries(${TARGET} PUBLIC ssl crypto)
84
85elseif (LLAMA_BUILD_LIBRESSL)
86    set(LIBRESSL_VERSION "4.3.2" CACHE STRING "LibreSSL version")
87
88    message(STATUS "Fetching LibreSSL version ${LIBRESSL_VERSION}")
89
90    set(LIBRESSL_ARGS
91        URL "https://cdn.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${LIBRESSL_VERSION}.tar.gz"
92    )
93    if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
94        list(APPEND LIBRESSL_ARGS DOWNLOAD_EXTRACT_TIMESTAMP TRUE)
95    endif()
96
97    if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
98        list(APPEND LIBRESSL_ARGS EXCLUDE_FROM_ALL)
99    endif()
100
101    include(FetchContent)
102    FetchContent_Declare(libressl ${LIBRESSL_ARGS})
103
104    set(SAVED_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
105    set(SAVED_BUILD_TESTING ${BUILD_TESTING})
106
107    set(BUILD_SHARED_LIBS OFF)
108    set(BUILD_TESTING OFF)
109
110    if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
111        FetchContent_MakeAvailable(libressl)
112    else()
113        FetchContent_GetProperties(libressl)
114        if(NOT libressl_POPULATED)
115            FetchContent_Populate(libressl)
116            add_subdirectory(${libressl_SOURCE_DIR} ${libressl_BINARY_DIR} EXCLUDE_FROM_ALL)
117        endif()
118    endif()
119
120    set(BUILD_SHARED_LIBS ${SAVED_BUILD_SHARED_LIBS})
121    set(BUILD_TESTING ${SAVED_BUILD_TESTING})
122
123    license_add_file("LibreSSL" "${libressl_SOURCE_DIR}/COPYING")
124
125    set(CPPHTTPLIB_OPENSSL_SUPPORT TRUE)
126    target_link_libraries(${TARGET} PUBLIC ssl crypto)
127
128elseif (LLAMA_OPENSSL)
129    find_package(OpenSSL)
130    if (OpenSSL_FOUND)
131        include(CheckCSourceCompiles)
132        set(SAVED_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
133        set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
134        check_c_source_compiles("
135        #include <openssl/opensslv.h>
136        #if defined(OPENSSL_IS_BORINGSSL) || defined(LIBRESSL_VERSION_NUMBER)
137        #    if OPENSSL_VERSION_NUMBER < 0x1010107f
138        #        error bad version
139        #    endif
140        #else
141        #    if OPENSSL_VERSION_NUMBER < 0x30000000L
142        #        error bad version
143        #    endif
144        #endif
145        int main() { return 0; }
146        " OPENSSL_VERSION_SUPPORTED)
147        set(CMAKE_REQUIRED_INCLUDES ${SAVED_CMAKE_REQUIRED_INCLUDES})
148        if (OPENSSL_VERSION_SUPPORTED)
149            message(STATUS "OpenSSL found: ${OPENSSL_VERSION}")
150            set(CPPHTTPLIB_OPENSSL_SUPPORT TRUE)
151            target_link_libraries(${TARGET} PUBLIC OpenSSL::SSL OpenSSL::Crypto)
152        endif()
153    else()
154        message(WARNING "OpenSSL not found, HTTPS support disabled")
155    endif()
156endif()
157
158# disable warnings in 3rd party code
159if(LLAMA_BUILD_BORINGSSL OR LLAMA_BUILD_LIBRESSL)
160    if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
161        target_compile_options(ssl PRIVATE /w)
162        target_compile_options(crypto PRIVATE /w)
163        if(LLAMA_BUILD_BORINGSSL)
164            target_compile_options(fipsmodule PRIVATE /w)
165        endif()
166        if(LLAMA_BUILD_LIBRESSL)
167            target_compile_options(ssl_obj PRIVATE /w)
168            target_compile_options(bs_obj PRIVATE /w)
169            target_compile_options(compat_obj PRIVATE /w)
170            target_compile_options(crypto_obj PRIVATE /w)
171        endif()
172    else()
173        target_compile_options(ssl PRIVATE -w)
174        target_compile_options(crypto PRIVATE -w)
175        if(LLAMA_BUILD_BORINGSSL)
176            target_compile_options(fipsmodule PRIVATE -w)
177        endif()
178        if(LLAMA_BUILD_LIBRESSL)
179            target_compile_options(ssl_obj PRIVATE -w)
180            target_compile_options(bs_obj PRIVATE -w)
181            target_compile_options(compat_obj PRIVATE -w)
182            target_compile_options(crypto_obj PRIVATE -w)
183        endif()
184    endif()
185endif()
186
187if (CPPHTTPLIB_OPENSSL_SUPPORT)
188    target_compile_definitions(${TARGET} PUBLIC CPPHTTPLIB_OPENSSL_SUPPORT) # used in server.cpp
189    if (APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin")
190        find_library(CORE_FOUNDATION_FRAMEWORK CoreFoundation REQUIRED)
191        find_library(SECURITY_FRAMEWORK Security REQUIRED)
192        target_link_libraries(${TARGET} PUBLIC ${CORE_FOUNDATION_FRAMEWORK} ${SECURITY_FRAMEWORK})
193    endif()
194    if (WIN32 AND NOT MSVC)
195        target_link_libraries(${TARGET} PUBLIC crypt32)
196    endif()
197endif()