diff --git a/llm/ext_server/CMakeLists.txt b/llm/ext_server/CMakeLists.txt index dd1831fc..3b995eb3 100644 --- a/llm/ext_server/CMakeLists.txt +++ b/llm/ext_server/CMakeLists.txt @@ -1,15 +1,11 @@ -# Ollama specific CMakefile to include in llama.cpp/examples/server set(TARGET ext_server) option(LLAMA_SERVER_VERBOSE "Build verbose logging option for Server" ON) if (WIN32) - add_library(${TARGET} SHARED ../../../ext_server/ext_server.cpp ../../llama.cpp) + add_library(${TARGET} SHARED ext_server.cpp ../llama.cpp/llama.cpp) else() - add_library(${TARGET} STATIC ../../../ext_server/ext_server.cpp ../../llama.cpp) + add_library(${TARGET} STATIC ext_server.cpp ../llama.cpp/llama.cpp) endif() -target_include_directories(${TARGET} PRIVATE ../../common) -target_include_directories(${TARGET} PRIVATE ../..) -target_include_directories(${TARGET} PRIVATE ../../..) target_compile_features(${TARGET} PRIVATE cxx_std_11) target_compile_definitions(${TARGET} PUBLIC LLAMA_SERVER_LIBRARY=1) target_link_libraries(${TARGET} PRIVATE ggml llava common ) diff --git a/llm/ext_server/server.cpp b/llm/ext_server/server.cpp index 8fe5e0b1..20664e53 100644 --- a/llm/ext_server/server.cpp +++ b/llm/ext_server/server.cpp @@ -2770,7 +2770,7 @@ inline void signal_handler(int signal) { shutdown_handler(signal); } -int main(int argc, char **argv) +int _main(int argc, char **argv) { #if SERVER_VERBOSE != 1 log_disable(); diff --git a/llm/generate/gen_common.sh b/llm/generate/gen_common.sh index d8d906b4..7638dc02 100644 --- a/llm/generate/gen_common.sh +++ b/llm/generate/gen_common.sh @@ -61,8 +61,8 @@ git_module_setup() { apply_patches() { # Wire up our CMakefile - if ! grep ollama ${LLAMACPP_DIR}/examples/server/CMakeLists.txt; then - echo 'include (../../../ext_server/CMakeLists.txt) # ollama' >>${LLAMACPP_DIR}/examples/server/CMakeLists.txt + if ! grep ollama ${LLAMACPP_DIR}/CMakeLists.txt; then + echo 'add_subdirectory(../ext_server ext_server) # ollama' >>${LLAMACPP_DIR}/CMakeLists.txt fi if [ -n "$(ls -A ../patches/*.diff)" ]; then @@ -76,19 +76,16 @@ apply_patches() { (cd ${LLAMACPP_DIR} && git apply ${patch}) done fi - - # Avoid duplicate main symbols when we link into the cgo binary - sed -e 's/int main(/int __main(/g' <${LLAMACPP_DIR}/examples/server/server.cpp >${LLAMACPP_DIR}/examples/server/server.cpp.tmp && - mv ${LLAMACPP_DIR}/examples/server/server.cpp.tmp ${LLAMACPP_DIR}/examples/server/server.cpp } build() { cmake -S ${LLAMACPP_DIR} -B ${BUILD_DIR} ${CMAKE_DEFS} cmake --build ${BUILD_DIR} ${CMAKE_TARGETS} -j8 mkdir -p ${BUILD_DIR}/lib/ + ls ${BUILD_DIR} g++ -fPIC -g -shared -o ${BUILD_DIR}/lib/libext_server.${LIB_EXT} \ ${GCC_ARCH} \ - ${WHOLE_ARCHIVE} ${BUILD_DIR}/examples/server/libext_server.a ${NO_WHOLE_ARCHIVE} \ + ${WHOLE_ARCHIVE} ${BUILD_DIR}/ext_server/libext_server.a ${NO_WHOLE_ARCHIVE} \ ${BUILD_DIR}/common/libcommon.a \ ${BUILD_DIR}/libllama.a \ -Wl,-rpath,\$ORIGIN \ @@ -113,7 +110,7 @@ compress_libs() { # Keep the local tree clean after we're done with the build cleanup() { - (cd ${LLAMACPP_DIR}/examples/server/ && git checkout CMakeLists.txt server.cpp) + (cd ${LLAMACPP_DIR}/ && git checkout CMakeLists.txt) if [ -n "$(ls -A ../patches/*.diff)" ]; then for patch in ../patches/*.diff; do diff --git a/llm/generate/gen_windows.ps1 b/llm/generate/gen_windows.ps1 index 579b2bca..20434ff5 100644 --- a/llm/generate/gen_windows.ps1 +++ b/llm/generate/gen_windows.ps1 @@ -82,8 +82,8 @@ function git_module_setup { function apply_patches { # Wire up our CMakefile - if (!(Select-String -Path "${script:llamacppDir}/examples/server/CMakeLists.txt" -Pattern 'ollama')) { - Add-Content -Path "${script:llamacppDir}/examples/server/CMakeLists.txt" -Value 'include (../../../ext_server/CMakeLists.txt) # ollama' + if (!(Select-String -Path "${script:llamacppDir}/CMakeLists.txt" -Pattern 'ollama')) { + Add-Content -Path "${script:llamacppDir}/CMakeLists.txt" -Value 'add_subdirectory(../ext_server ext_server) # ollama' } # Apply temporary patches until fix is upstream @@ -107,11 +107,6 @@ function apply_patches { Set-Location -Path ${script:llamacppDir} git apply $patch.FullName } - - # Avoid duplicate main symbols when we link into the cgo binary - $content = Get-Content -Path "${script:llamacppDir}/examples/server/server.cpp" - $content = $content -replace 'int main\(', 'int __main(' - Set-Content -Path "${script:llamacppDir}/examples/server/server.cpp" -Value $content } function build { @@ -173,8 +168,8 @@ function cleanup { git checkout $file } } - Set-Location "${script:llamacppDir}/examples/server" - git checkout CMakeLists.txt server.cpp + Set-Location "${script:llamacppDir}/" + git checkout CMakeLists.txt }