CMakeLists.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. set(TARGET cpp-httplib)
  2. find_package(Threads REQUIRED)
  3. add_library(${TARGET} STATIC httplib.cpp httplib.h)
  4. if (NOT MSVC)
  5. # disable warnings in 3rd party code
  6. target_compile_options(${TARGET} PRIVATE -w)
  7. endif()
  8. target_link_libraries (${TARGET} PRIVATE Threads::Threads)
  9. target_compile_features(${TARGET} PRIVATE cxx_std_17)
  10. target_compile_definitions(${TARGET} PRIVATE
  11. # increase max payload length to allow use of larger context size
  12. CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH=1048576
  13. # increase backlog size to avoid connection resets for >> 1 slots
  14. CPPHTTPLIB_LISTEN_BACKLOG=512
  15. # increase max URI length to handle longer prompts in query string
  16. CPPHTTPLIB_REQUEST_URI_MAX_LENGTH=32768
  17. # disable Nagle's algorithm
  18. CPPHTTPLIB_TCP_NODELAY=1
  19. )
  20. if (LLAMA_OPENSSL)
  21. find_package(OpenSSL)
  22. if (OpenSSL_FOUND)
  23. include(CheckCSourceCompiles)
  24. set(SAVED_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
  25. set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
  26. check_c_source_compiles("
  27. #include <openssl/opensslv.h>
  28. #if defined(OPENSSL_IS_BORINGSSL) || defined(LIBRESSL_VERSION_NUMBER)
  29. # if OPENSSL_VERSION_NUMBER < 0x1010107f
  30. # error bad version
  31. # endif
  32. #else
  33. # if OPENSSL_VERSION_NUMBER < 0x30000000L
  34. # error bad version
  35. # endif
  36. #endif
  37. int main() { return 0; }
  38. " OPENSSL_VERSION_SUPPORTED)
  39. set(CMAKE_REQUIRED_INCLUDES ${SAVED_CMAKE_REQUIRED_INCLUDES})
  40. if (OPENSSL_VERSION_SUPPORTED)
  41. message(STATUS "OpenSSL found: ${OPENSSL_VERSION}")
  42. target_compile_definitions(${TARGET} PUBLIC CPPHTTPLIB_OPENSSL_SUPPORT)
  43. target_link_libraries(${TARGET} PUBLIC OpenSSL::SSL OpenSSL::Crypto)
  44. if (APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin")
  45. target_compile_definitions(${TARGET} PUBLIC CPPHTTPLIB_USE_CERTS_FROM_MACOSX_KEYCHAIN)
  46. find_library(CORE_FOUNDATION_FRAMEWORK CoreFoundation REQUIRED)
  47. find_library(SECURITY_FRAMEWORK Security REQUIRED)
  48. target_link_libraries(${TARGET} PUBLIC ${CORE_FOUNDATION_FRAMEWORK} ${SECURITY_FRAMEWORK})
  49. endif()
  50. endif()
  51. else()
  52. message(STATUS "OpenSSL not found, SSL support disabled")
  53. endif()
  54. endif()