CoolFace
Modelpublic

Felipe97/llama-cpp-compiled

sourceHugging Faceupdated 4d agoView on Hugging Face
0likes1.1kdownloads
CMakeLists.txt187 linesDownload Raw Back to common
1find_package(Threads REQUIRED)2 3llama_add_compile_flags()4 5#6# llama-common-base7#8 9# Build info header10 11if(EXISTS "${PROJECT_SOURCE_DIR}/.git")12    set(GIT_DIR "${PROJECT_SOURCE_DIR}/.git")13 14    # Is git submodule15    if(NOT IS_DIRECTORY "${GIT_DIR}")16        file(READ ${GIT_DIR} REAL_GIT_DIR_LINK)17        string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" REAL_GIT_DIR ${REAL_GIT_DIR_LINK})18        string(FIND "${REAL_GIT_DIR}" "/" SLASH_POS)19        if (SLASH_POS EQUAL 0)20            set(GIT_DIR "${REAL_GIT_DIR}")21        else()22            set(GIT_DIR "${PROJECT_SOURCE_DIR}/${REAL_GIT_DIR}")23        endif()24    endif()25 26    if(EXISTS "${GIT_DIR}/index")27        # For build-info.cpp below28        set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${GIT_DIR}/index")29    else()30        message(WARNING "Git index not found in git repository.")31    endif()32else()33    message(WARNING "Git repository not found; to enable automatic generation of build info, make sure Git is installed and the project is a Git repository.")34endif()35 36set(TEMPLATE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/build-info.cpp.in")37set(OUTPUT_FILE   "${CMAKE_CURRENT_BINARY_DIR}/build-info.cpp")38 39configure_file(${TEMPLATE_FILE} ${OUTPUT_FILE})40 41set(TARGET llama-common-base)42add_library(${TARGET} STATIC ${OUTPUT_FILE})43 44target_include_directories(${TARGET} PUBLIC .)45 46if (BUILD_SHARED_LIBS)47    set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE ON)48endif()49 50#51# llama-common52#53 54set(TARGET llama-common)55 56include(parsers/sources.cmake)57 58add_library(${TARGET}59    ${LLAMA_CHAT_PARSERS_SOURCES}60    arg.cpp61    arg.h62    base64.hpp63    chat-auto-parser-generator.cpp64    chat-auto-parser-helpers.cpp65    chat-auto-parser.h66    chat-diff-analyzer.cpp67    chat-peg-parser.cpp68    chat-peg-parser.h69    chat.cpp70    chat.h71    common.cpp72    common.h73    console.cpp74    console.h75    debug.cpp76    debug.h77    download.cpp78    download.h79    fit.cpp80    fit.h81    hf-cache.cpp82    hf-cache.h83    http.h84    imatrix-loader.cpp85    imatrix-loader.h86    json-schema-to-grammar.cpp87    json-schema.cpp88    json-schema.h89    json.cpp90    json.h91    llguidance.cpp92    log.cpp93    log.h94    ngram-cache.cpp95    ngram-cache.h96    ngram-map.cpp97    ngram-map.h98    ngram-mod.cpp99    ngram-mod.h100    peg-parser.cpp101    peg-parser.h102    preset.cpp103    preset.h104    reasoning-budget.cpp105    reasoning-budget.h106    sampling.cpp107    sampling.h108    speculative.cpp109    speculative.h110    subproc.cpp111    subproc.h112    trie.cpp113    trie.h114    unicode.cpp115    unicode.h116    jinja/lexer.cpp117    jinja/lexer.h118    jinja/parser.cpp119    jinja/parser.h120    jinja/runtime.cpp121    jinja/runtime.h122    jinja/value.cpp123    jinja/value.h124    jinja/string.cpp125    jinja/string.h126    jinja/caps.cpp127    jinja/caps.h128    )129 130set_target_properties(${TARGET} PROPERTIES131    VERSION ${LLAMA_VERSION_BASE}132    SOVERSION ${LLAMA_VERSION_MAJOR}133    MACHO_CURRENT_VERSION 0 # keep macOS linker from seeing oversized version number134)135 136target_include_directories(${TARGET} PUBLIC .)137target_link_libraries     (${TARGET} PUBLIC vendor::nlohmann vendor::sheredom)138target_compile_features   (${TARGET} PUBLIC cxx_std_17)139 140if (LLAMA_SUBPROCESS)141    target_compile_definitions(${TARGET} PUBLIC LLAMA_SUBPROCESS)142endif()143 144if (BUILD_SHARED_LIBS)145    set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE ON)146 147    # TODO: make fine-grained exports in the future148    set_target_properties(${TARGET} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)149endif()150 151target_link_libraries(${TARGET} PUBLIC  llama-common-base)152target_link_libraries(${TARGET} PRIVATE cpp-httplib)153 154if (LLAMA_LLGUIDANCE)155    include(ExternalProject)156    set(LLGUIDANCE_SRC ${CMAKE_BINARY_DIR}/llguidance/source)157    set(LLGUIDANCE_PATH ${LLGUIDANCE_SRC}/target/release)158    set(LLGUIDANCE_LIB_NAME "${CMAKE_STATIC_LIBRARY_PREFIX}llguidance${CMAKE_STATIC_LIBRARY_SUFFIX}")159 160    ExternalProject_Add(llguidance_ext161        GIT_REPOSITORY https://github.com/guidance-ai/llguidance162        # v1.0.1:163        GIT_TAG d795912fedc7d393de740177ea9ea761e7905774164        PREFIX ${CMAKE_BINARY_DIR}/llguidance165        SOURCE_DIR ${LLGUIDANCE_SRC}166        BUILD_IN_SOURCE TRUE167        CONFIGURE_COMMAND ""168        BUILD_COMMAND cargo build --release --package llguidance169        INSTALL_COMMAND ""170        BUILD_BYPRODUCTS ${LLGUIDANCE_PATH}/${LLGUIDANCE_LIB_NAME} ${LLGUIDANCE_PATH}/llguidance.h171        UPDATE_COMMAND ""172    )173    target_compile_definitions(${TARGET} PUBLIC LLAMA_USE_LLGUIDANCE)174 175    add_library(llguidance STATIC IMPORTED)176    set_target_properties(llguidance PROPERTIES IMPORTED_LOCATION ${LLGUIDANCE_PATH}/${LLGUIDANCE_LIB_NAME})177    add_dependencies(llguidance llguidance_ext)178 179    target_include_directories(${TARGET} PRIVATE ${LLGUIDANCE_PATH})180    target_link_libraries(${TARGET} PRIVATE llguidance)181    if (WIN32)182        target_link_libraries(${TARGET} PRIVATE ws2_32 userenv ntdll bcrypt)183    endif()184endif()185 186target_link_libraries(${TARGET} PUBLIC llama Threads::Threads)187