Brunobkr/llama.cpp_AlgMor24_github
ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.
03.1k
1cmake_minimum_required(VERSION 3.14...3.28) # for add_link_options and implicit target directories.2project("llama.cpp" C CXX)3include(CheckIncludeFileCXX)4 5#set(CMAKE_WARN_DEPRECATED YES)6set(CMAKE_WARN_UNUSED_CLI YES)7 8set(CMAKE_EXPORT_COMPILE_COMMANDS ON)9 10if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE)11 set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)12 set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")13endif()14 15message("CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")16 17# Add path to modules18list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")19 20set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)21set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)22 23if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)24 set(LLAMA_STANDALONE ON)25 26 include(git-vars)27 28 # configure project version29 # TODO30else()31 set(LLAMA_STANDALONE OFF)32endif()33 34option(LLAMA_USE_SYSTEM_GGML "Use system libggml" OFF)35 36option(LLAMA_WASM_MEM64 "llama: use 64-bit memory in WASM builds" ON)37 38if (EMSCRIPTEN)39 set(BUILD_SHARED_LIBS_DEFAULT OFF)40 41 # Use 64-bit memory to support backend_get_memory queries42 # TODO: analyze performance impact, see https://spidermonkey.dev/blog/2025/01/15/is-memory64-actually-worth-using43 if (LLAMA_WASM_MEM64)44 add_compile_options("-sMEMORY64=1")45 add_link_options("-sMEMORY64=1")46 endif()47 add_link_options("-sALLOW_MEMORY_GROWTH=1")48 49 option(LLAMA_WASM_SINGLE_FILE "llama: embed WASM inside the generated llama.js" OFF)50 option(LLAMA_BUILD_HTML "llama: build HTML file" ON)51 if (LLAMA_BUILD_HTML)52 set(CMAKE_EXECUTABLE_SUFFIX ".html")53 endif()54else()55 if (MINGW)56 set(BUILD_SHARED_LIBS_DEFAULT OFF)57 else()58 set(BUILD_SHARED_LIBS_DEFAULT ON)59 endif()60endif()61 62option(BUILD_SHARED_LIBS "build shared libraries" ${BUILD_SHARED_LIBS_DEFAULT})63 64if (WIN32)65 add_compile_definitions(_CRT_SECURE_NO_WARNINGS)66endif()67 68if (MSVC)69 add_compile_options("$<$<COMPILE_LANGUAGE:C>:/utf-8>")70 add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:/utf-8>")71 add_compile_options("$<$<COMPILE_LANGUAGE:C>:/bigobj>")72 add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:/bigobj>")73endif()74 75if (LLAMA_STANDALONE)76 # enable parallel builds for msbuild77 list(APPEND CMAKE_VS_GLOBALS UseMultiToolTask=true)78 list(APPEND CMAKE_VS_GLOBALS EnforceProcessCountAcrossBuilds=true)79endif()80 81if (CMAKE_SYSTEM_NAME STREQUAL "iOS")82 set(LLAMA_TOOLS_INSTALL_DEFAULT OFF)83else()84 set(LLAMA_TOOLS_INSTALL_DEFAULT ${LLAMA_STANDALONE})85endif()86 87# subprocess spawning isn't a supported/sandbox-friendly operation on mobile OSes or in WASM88if (CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_SYSTEM_NAME STREQUAL "Android" OR ANDROID89 OR CMAKE_SYSTEM_NAME STREQUAL "Emscripten" OR EMSCRIPTEN)90 set(LLAMA_SUBPROCESS_DEFAULT OFF)91else()92 set(LLAMA_SUBPROCESS_DEFAULT ON)93endif()94 95#96# option list97#98 99# debug100option(LLAMA_ALL_WARNINGS "llama: enable all compiler warnings" ON)101option(LLAMA_ALL_WARNINGS_3RD_PARTY "llama: enable all compiler warnings in 3rd party libs" OFF)102 103# build104option(LLAMA_FATAL_WARNINGS "llama: enable -Werror flag" OFF)105 106# sanitizers107option(LLAMA_SANITIZE_THREAD "llama: enable thread sanitizer" OFF)108option(LLAMA_SANITIZE_ADDRESS "llama: enable address sanitizer" OFF)109option(LLAMA_SANITIZE_UNDEFINED "llama: enable undefined sanitizer" OFF)110 111# utils112option(LLAMA_BUILD_COMMON "llama: build common utils library" ${LLAMA_STANDALONE})113 114# extra artifacts115option(LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALONE})116option(LLAMA_BUILD_TOOLS "llama: build tools" ${LLAMA_STANDALONE})117option(LLAMA_BUILD_EXAMPLES "llama: build examples" ${LLAMA_STANDALONE})118option(LLAMA_BUILD_SERVER "llama: build server example" ${LLAMA_STANDALONE})119option(LLAMA_BUILD_APP "llama: build the unified binary" ${LLAMA_STANDALONE})120option(LLAMA_BUILD_UI "llama: build the embedded Web UI for server" ON)121option(LLAMA_USE_PREBUILT_UI "llama: use prebuilt UI from HF Bucket when available (requires LLAMA_BUILD_UI=ON)" ON)122 123option(LLAMA_TOOLS_INSTALL "llama: install tools" ${LLAMA_TOOLS_INSTALL_DEFAULT})124option(LLAMA_TESTS_INSTALL "llama: install tests" ON)125 126# 3rd party libs127option(LLAMA_OPENSSL "llama: use openssl to support HTTPS" ON)128option(LLAMA_SUBPROCESS "llama-common: use subprocess, required by server tools and server router mode" ${LLAMA_SUBPROCESS_DEFAULT})129option(LLAMA_LLGUIDANCE "llama-common: include LLGuidance library for structured output in common utils" OFF)130 131 132# Required for relocatable CMake package133include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/build-info.cmake)134include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/common.cmake)135 136if (NOT DEFINED LLAMA_BUILD_NUMBER)137 set(LLAMA_BUILD_NUMBER ${BUILD_NUMBER})138endif()139if (NOT DEFINED LLAMA_BUILD_COMMIT)140 set(LLAMA_BUILD_COMMIT ${BUILD_COMMIT})141endif()142set(LLAMA_INSTALL_VERSION 0.0.${LLAMA_BUILD_NUMBER})143 144# override ggml options145set(GGML_ALL_WARNINGS ${LLAMA_ALL_WARNINGS})146set(GGML_FATAL_WARNINGS ${LLAMA_FATAL_WARNINGS})147 148# change the default for these ggml options149if (NOT DEFINED GGML_LLAMAFILE)150 set(GGML_LLAMAFILE_DEFAULT ON)151endif()152 153if (NOT DEFINED GGML_CUDA_GRAPHS)154 set(GGML_CUDA_GRAPHS_DEFAULT ON)155endif()156 157# transition helpers158function (llama_option_depr TYPE OLD)159 if (${OLD})160 set(NEW "${ARGV2}")161 if(NEW)162 message(${TYPE} "${OLD} is deprecated, use ${NEW} instead")163 set(${NEW} ON PARENT_SCOPE)164 else()165 message(${TYPE} "${OLD} is deprecated and will be ignored")166 endif()167 endif()168endfunction()169 170llama_option_depr(FATAL_ERROR LLAMA_CUBLAS GGML_CUDA)171llama_option_depr(WARNING LLAMA_CUDA GGML_CUDA)172llama_option_depr(WARNING LLAMA_METAL GGML_METAL)173llama_option_depr(WARNING LLAMA_METAL_EMBED_LIBRARY GGML_METAL_EMBED_LIBRARY)174llama_option_depr(WARNING LLAMA_NATIVE GGML_NATIVE)175llama_option_depr(WARNING LLAMA_RPC GGML_RPC)176llama_option_depr(WARNING LLAMA_SYCL GGML_SYCL)177llama_option_depr(WARNING LLAMA_SYCL_F16 GGML_SYCL_F16)178llama_option_depr(WARNING LLAMA_CANN GGML_CANN)179llama_option_depr(WARNING LLAMA_CURL)180 181include("cmake/license.cmake")182license_add_file("llama.cpp" "LICENSE")183 184#185# 3rd-party186#187 188if (LLAMA_USE_SYSTEM_GGML)189 message(STATUS "Using system-provided libggml, skipping ggml build")190 find_package(ggml REQUIRED)191 add_library(ggml ALIAS ggml::ggml)192endif()193 194if (NOT TARGET ggml AND NOT LLAMA_USE_SYSTEM_GGML)195 set(GGML_BUILD_NUMBER ${LLAMA_BUILD_NUMBER})196 set(GGML_BUILD_COMMIT ${LLAMA_BUILD_COMMIT})197 add_subdirectory(ggml)198 # ... otherwise assume ggml is added by a parent CMakeLists.txt199endif()200 201#202# build the library203#204 205add_subdirectory(src)206 207#208# utils, programs, examples and tests209#210 211if (LLAMA_BUILD_COMMON)212 add_subdirectory(common)213 add_subdirectory(vendor/cpp-httplib)214endif()215 216if (LLAMA_BUILD_COMMON AND LLAMA_BUILD_TESTS AND NOT CMAKE_JS_VERSION)217 include(CTest)218 add_subdirectory(tests)219endif()220 221if (LLAMA_BUILD_COMMON AND LLAMA_BUILD_EXAMPLES)222 add_subdirectory(examples)223 add_subdirectory(pocs)224endif()225 226if (LLAMA_BUILD_COMMON AND LLAMA_BUILD_TOOLS)227 add_subdirectory(tools)228endif()229 230if (LLAMA_BUILD_APP)231 add_subdirectory(app)232endif()233 234# Standalone libmtmd build without pulling in the rest of the tools/ tree.235# Useful when packaging just the mtmd library for language bindings (e.g. an236# Apple XCFramework, or a WASM build). When the full tools build is enabled,237# mtmd is already built by the tools/ subdirectory above; this hook only fires238# when LLAMA_BUILD_TOOLS is OFF to avoid double-adding the target.239option(LLAMA_BUILD_MTMD "llama: build tools/mtmd library standalone" OFF)240if (LLAMA_BUILD_MTMD AND NOT (LLAMA_BUILD_COMMON AND LLAMA_BUILD_TOOLS))241 add_subdirectory(tools/mtmd)242endif()243 244#245# install246#247 248include(GNUInstallDirs)249include(CMakePackageConfigHelpers)250 251set(LLAMA_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files")252set(LLAMA_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files")253set(LLAMA_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of binary files")254 255set(LLAMA_PUBLIC_HEADERS256 ${CMAKE_CURRENT_SOURCE_DIR}/include/llama.h257 ${CMAKE_CURRENT_SOURCE_DIR}/include/llama-cpp.h)258 259set_target_properties(llama260 PROPERTIES261 PUBLIC_HEADER "${LLAMA_PUBLIC_HEADERS}")262 263install(TARGETS llama LIBRARY PUBLIC_HEADER)264 265if (LLAMA_BUILD_COMMON)266 install(TARGETS llama-common LIBRARY)267endif()268 269configure_package_config_file(270 ${CMAKE_CURRENT_SOURCE_DIR}/cmake/llama-config.cmake.in271 ${CMAKE_CURRENT_BINARY_DIR}/llama-config.cmake272 INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llama273 PATH_VARS LLAMA_INCLUDE_INSTALL_DIR274 LLAMA_LIB_INSTALL_DIR275 LLAMA_BIN_INSTALL_DIR )276 277write_basic_package_version_file(278 ${CMAKE_CURRENT_BINARY_DIR}/llama-version.cmake279 VERSION ${LLAMA_INSTALL_VERSION}280 COMPATIBILITY SameMajorVersion)281 282install(FILES ${CMAKE_CURRENT_BINARY_DIR}/llama-config.cmake283 ${CMAKE_CURRENT_BINARY_DIR}/llama-version.cmake284 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/llama)285 286configure_file(cmake/llama.pc.in287 "${CMAKE_CURRENT_BINARY_DIR}/llama.pc"288 @ONLY)289 290install(FILES "${CMAKE_CURRENT_BINARY_DIR}/llama.pc"291 DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)292 