CMakeLists.txt 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. set(TARGET server)
  2. option(LLAMA_SERVER_VERBOSE "Build verbose logging option for Server" ON)
  3. option(LLAMA_SERVER_SSL "Build SSL support for the server" OFF)
  4. include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
  5. set(TARGET_SRCS
  6. server.cpp
  7. utils.hpp
  8. httplib.h
  9. )
  10. set(PUBLIC_ASSETS
  11. colorthemes.css
  12. style.css
  13. theme-beeninorder.css
  14. theme-ketivah.css
  15. theme-mangotango.css
  16. theme-playground.css
  17. theme-polarnight.css
  18. theme-snowstorm.css
  19. index.html
  20. index-new.html
  21. index.js
  22. completion.js
  23. system-prompts.js
  24. prompt-formats.js
  25. json-schema-to-grammar.mjs
  26. )
  27. foreach(asset ${PUBLIC_ASSETS})
  28. set(input "${CMAKE_CURRENT_SOURCE_DIR}/public/${asset}")
  29. set(output "${CMAKE_CURRENT_BINARY_DIR}/${asset}.hpp")
  30. list(APPEND TARGET_SRCS ${output})
  31. add_custom_command(
  32. DEPENDS "${input}"
  33. OUTPUT "${output}"
  34. COMMAND "${CMAKE_COMMAND}" "-DINPUT=${input}" "-DOUTPUT=${output}" -P "${PROJECT_SOURCE_DIR}/scripts/xxd.cmake"
  35. )
  36. endforeach()
  37. add_executable(${TARGET} ${TARGET_SRCS})
  38. install(TARGETS ${TARGET} RUNTIME)
  39. target_compile_definitions(${TARGET} PRIVATE
  40. SERVER_VERBOSE=$<BOOL:${LLAMA_SERVER_VERBOSE}>
  41. )
  42. target_link_libraries(${TARGET} PRIVATE common ${CMAKE_THREAD_LIBS_INIT})
  43. if (LLAMA_SERVER_SSL)
  44. find_package(OpenSSL REQUIRED)
  45. target_link_libraries(${TARGET} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
  46. target_compile_definitions(${TARGET} PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
  47. endif()
  48. if (WIN32)
  49. TARGET_LINK_LIBRARIES(${TARGET} PRIVATE ws2_32)
  50. endif()
  51. target_compile_features(${TARGET} PRIVATE cxx_std_11)