| include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) | |
| # server-context containing the core server logic, used by llama-server and CLI | |
| set(TARGET server-context) | |
| add_library(${TARGET} STATIC | |
| server-task.cpp | |
| server-task.h | |
| server-queue.cpp | |
| server-queue.h | |
| server-common.cpp | |
| server-common.h | |
| server-context.cpp | |
| server-context.h | |
| ) | |
| if (BUILD_SHARED_LIBS) | |
| set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE ON) | |
| endif() | |
| target_include_directories(${TARGET} PRIVATE ../mtmd) | |
| target_include_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}) | |
| target_link_libraries(${TARGET} PUBLIC common mtmd ${CMAKE_THREAD_LIBS_INIT}) | |
| # llama-server executable | |
| set(TARGET llama-server) | |
| set(TARGET_SRCS | |
| server.cpp | |
| server-http.cpp | |
| server-http.h | |
| server-models.cpp | |
| server-models.h | |
| ) | |
| set(PUBLIC_ASSETS | |
| index.html.gz | |
| loading.html | |
| ) | |
| foreach(asset ${PUBLIC_ASSETS}) | |
| set(input "${CMAKE_CURRENT_SOURCE_DIR}/public/${asset}") | |
| set(output "${CMAKE_CURRENT_BINARY_DIR}/${asset}.hpp") | |
| list(APPEND TARGET_SRCS ${output}) | |
| add_custom_command( | |
| DEPENDS "${input}" | |
| OUTPUT "${output}" | |
| COMMAND "${CMAKE_COMMAND}" "-DINPUT=${input}" "-DOUTPUT=${output}" -P "${PROJECT_SOURCE_DIR}/scripts/xxd.cmake" | |
| ) | |
| set_source_files_properties(${output} PROPERTIES GENERATED TRUE) | |
| endforeach() | |
| add_executable(${TARGET} ${TARGET_SRCS}) | |
| install(TARGETS ${TARGET} RUNTIME) | |
| target_include_directories(${TARGET} PRIVATE ../mtmd) | |
| target_include_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}) | |
| target_link_libraries(${TARGET} PRIVATE server-context PUBLIC common cpp-httplib ${CMAKE_THREAD_LIBS_INIT}) | |
| target_compile_features(${TARGET} PRIVATE cxx_std_17) | |