mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-05-10 20:43:22 +00:00
Some checks failed
Bindings Tests (Ruby) / ubuntu-22 (push) Has been cancelled
CI / determine-tag (push) Has been cancelled
CI / ubuntu-22 (linux/amd64) (push) Has been cancelled
CI / ubuntu-22 (linux/ppc64le) (push) Has been cancelled
CI / ubuntu-22-arm64 (linux/arm64) (push) Has been cancelled
CI / ubuntu-22-arm-v7 (linux/arm/v7) (push) Has been cancelled
CI / macOS-latest (generic/platform=iOS) (push) Has been cancelled
CI / macOS-latest (generic/platform=macOS) (push) Has been cancelled
CI / macOS-latest (generic/platform=tvOS) (push) Has been cancelled
CI / ubuntu-22-gcc (linux/amd64, Debug) (push) Has been cancelled
CI / ubuntu-22-gcc (linux/amd64, Release) (push) Has been cancelled
CI / ubuntu-22-gcc (linux/ppc64le, Debug) (push) Has been cancelled
CI / ubuntu-22-gcc (linux/ppc64le, Release) (push) Has been cancelled
CI / ubuntu-22-gcc-arm64 (linux/arm64, Debug) (push) Has been cancelled
CI / ubuntu-22-gcc-arm64 (linux/arm64, Release) (push) Has been cancelled
CI / ubuntu-22-gcc-arm-v7 (linux/arm/v7, Debug) (push) Has been cancelled
CI / ubuntu-22-gcc-arm-v7 (linux/arm/v7, Release) (push) Has been cancelled
CI / ubuntu-22-clang (linux/amd64, Debug) (push) Has been cancelled
CI / ubuntu-22-clang (linux/amd64, Release) (push) Has been cancelled
CI / ubuntu-22-clang (linux/arm64, Debug) (push) Has been cancelled
CI / ubuntu-22-clang (linux/arm64, Release) (push) Has been cancelled
CI / ubuntu-22-clang (linux/ppc64le, Debug) (push) Has been cancelled
CI / ubuntu-22-clang (linux/ppc64le, Release) (push) Has been cancelled
CI / ubuntu-22-gcc-sanitized (linux/amd64, ADDRESS) (push) Has been cancelled
CI / ubuntu-22-gcc-sanitized (linux/amd64, THREAD) (push) Has been cancelled
CI / ubuntu-22-gcc-sanitized (linux/amd64, UNDEFINED) (push) Has been cancelled
CI / ubuntu-22-cmake-sycl (linux/amd64, icx, icpx, ON) (push) Has been cancelled
CI / ubuntu-22-cmake-sycl (linux/arm/v7, icx, icpx, ON) (push) Has been cancelled
CI / ubuntu-22-cmake-sycl (linux/arm64, icx, icpx, ON) (push) Has been cancelled
CI / ubuntu-22-cmake-sycl (linux/ppc64le, icx, icpx, ON) (push) Has been cancelled
CI / ubuntu-22-cmake-sycl-fp16 (linux/amd64, icx, icpx, ON) (push) Has been cancelled
CI / ubuntu-22-cmake-sycl-fp16 (linux/arm/v7, icx, icpx, ON) (push) Has been cancelled
CI / ubuntu-22-cmake-sycl-fp16 (linux/arm64, icx, icpx, ON) (push) Has been cancelled
CI / ubuntu-22-cmake-sycl-fp16 (linux/ppc64le, icx, icpx, ON) (push) Has been cancelled
CI / windows-msys2 (Release, clang-x86_64, CLANG64) (push) Has been cancelled
CI / windows-msys2 (Release, ucrt-x86_64, UCRT64) (push) Has been cancelled
CI / windows (Win32, Release, win32-x86, x86, 2.28.5, ON) (push) Has been cancelled
CI / windows (x64, Release, win32-x86-64, x64, 2.28.5, ON) (push) Has been cancelled
CI / windows-blas (Win32, ON, Release, x86, 2.28.5, ON) (push) Has been cancelled
CI / windows-blas (x64, ON, Release, x64, 2.28.5, ON) (push) Has been cancelled
CI / windows-cublas (x64, Release, ON, 11.8.0, ON, 2.28.5) (push) Has been cancelled
CI / windows-cublas (x64, Release, ON, 12.2.0, ON, 2.28.5) (push) Has been cancelled
CI / emscripten (Release) (push) Has been cancelled
CI / ios-xcode-build (Release) (push) Has been cancelled
CI / android (push) Has been cancelled
CI / android_java (push) Has been cancelled
CI / bindings-java (push) Has been cancelled
CI / quantize (push) Has been cancelled
CI / release (push) Has been cancelled
CI / coreml-base-en (push) Has been cancelled
Publish Docker image / Push Docker image to Docker Hub (map[dockerfile:.devops/main-musa.Dockerfile platform:linux/amd64 tag:main-musa]) (push) Has been cancelled
Publish Docker image / Push Docker image to Docker Hub (map[dockerfile:.devops/main.Dockerfile platform:linux/amd64 tag:main]) (push) Has been cancelled
Examples WASM / deploy-wasm-github-pages (push) Has been cancelled
* whisper: suppress Windows compiler warnings This commit disables compiler warnings on window using MSVC. The motivation for these changes is that some compilers generate warnings for these conversion, for example Windows MSVC, and there are quite a few of them. This makes it a little difficult to spot new warnings that may be introduced and also can be difficult for users/embedders of ggml where these warnings are hard to separate from their own warnings. * squash! whisper: suppress Windows compiler warnings Move ggml related warnings into ggml. This commit also fixes the indentation and adds a missing whitespace to the if statement.
378 lines
15 KiB
CMake
378 lines
15 KiB
CMake
cmake_minimum_required(VERSION 3.14) # for add_link_options and implicit target directories.
|
|
project("ggml" C CXX)
|
|
include(CheckIncludeFileCXX)
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
|
endif()
|
|
|
|
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
|
set(GGML_STANDALONE ON)
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
# configure project version
|
|
# TODO
|
|
else()
|
|
set(GGML_STANDALONE OFF)
|
|
endif()
|
|
|
|
if (EMSCRIPTEN)
|
|
set(BUILD_SHARED_LIBS_DEFAULT OFF)
|
|
|
|
option(GGML_WASM_SINGLE_FILE "ggml: embed WASM inside the generated ggml.js" ON)
|
|
else()
|
|
if (MINGW)
|
|
set(BUILD_SHARED_LIBS_DEFAULT OFF)
|
|
else()
|
|
set(BUILD_SHARED_LIBS_DEFAULT ON)
|
|
endif()
|
|
endif()
|
|
|
|
# remove the lib prefix on win32 mingw
|
|
if (WIN32)
|
|
set(CMAKE_STATIC_LIBRARY_PREFIX "")
|
|
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
|
set(CMAKE_SHARED_MODULE_PREFIX "")
|
|
endif()
|
|
|
|
option(BUILD_SHARED_LIBS "ggml: build shared libraries" ${BUILD_SHARED_LIBS_DEFAULT})
|
|
option(GGML_BACKEND_DL "ggml: build backends as dynamic libraries (requires BUILD_SHARED_LIBS)" OFF)
|
|
|
|
#
|
|
# option list
|
|
#
|
|
|
|
# TODO: mark all options as advanced when not GGML_STANDALONE
|
|
|
|
if (APPLE)
|
|
set(GGML_METAL_DEFAULT ON)
|
|
set(GGML_BLAS_DEFAULT ON)
|
|
set(GGML_BLAS_VENDOR_DEFAULT "Apple")
|
|
else()
|
|
set(GGML_METAL_DEFAULT OFF)
|
|
set(GGML_BLAS_DEFAULT OFF)
|
|
set(GGML_BLAS_VENDOR_DEFAULT "Generic")
|
|
endif()
|
|
|
|
if (CMAKE_CROSSCOMPILING OR DEFINED ENV{SOURCE_DATE_EPOCH})
|
|
message(STATUS "Setting GGML_NATIVE_DEFAULT to OFF")
|
|
set(GGML_NATIVE_DEFAULT OFF)
|
|
else()
|
|
set(GGML_NATIVE_DEFAULT ON)
|
|
endif()
|
|
|
|
# defaults
|
|
if (NOT GGML_LLAMAFILE_DEFAULT)
|
|
set(GGML_LLAMAFILE_DEFAULT OFF)
|
|
endif()
|
|
|
|
if (NOT GGML_CUDA_GRAPHS_DEFAULT)
|
|
set(GGML_CUDA_GRAPHS_DEFAULT OFF)
|
|
endif()
|
|
|
|
# general
|
|
option(GGML_STATIC "ggml: static link libraries" OFF)
|
|
option(GGML_NATIVE "ggml: optimize the build for the current system" ${GGML_NATIVE_DEFAULT})
|
|
option(GGML_LTO "ggml: enable link time optimization" OFF)
|
|
option(GGML_CCACHE "ggml: use ccache if available" ON)
|
|
|
|
# debug
|
|
option(GGML_ALL_WARNINGS "ggml: enable all compiler warnings" ON)
|
|
option(GGML_ALL_WARNINGS_3RD_PARTY "ggml: enable all compiler warnings in 3rd party libs" OFF)
|
|
option(GGML_GPROF "ggml: enable gprof" OFF)
|
|
|
|
# build
|
|
option(GGML_FATAL_WARNINGS "ggml: enable -Werror flag" OFF)
|
|
|
|
# sanitizers
|
|
option(GGML_SANITIZE_THREAD "ggml: enable thread sanitizer" OFF)
|
|
option(GGML_SANITIZE_ADDRESS "ggml: enable address sanitizer" OFF)
|
|
option(GGML_SANITIZE_UNDEFINED "ggml: enable undefined sanitizer" OFF)
|
|
|
|
# instruction set specific
|
|
if (GGML_NATIVE OR NOT GGML_NATIVE_DEFAULT)
|
|
set(INS_ENB OFF)
|
|
else()
|
|
set(INS_ENB ON)
|
|
endif()
|
|
|
|
message(DEBUG "GGML_NATIVE : ${GGML_NATIVE}")
|
|
message(DEBUG "GGML_NATIVE_DEFAULT : ${GGML_NATIVE_DEFAULT}")
|
|
message(DEBUG "INS_ENB : ${INS_ENB}")
|
|
|
|
option(GGML_CPU_HBM "ggml: use memkind for CPU HBM" OFF)
|
|
option(GGML_CPU_AARCH64 "ggml: use runtime weight conversion of Q4_0 to Q4_X_X" ON)
|
|
option(GGML_CPU_KLEIDIAI "ggml: use KleidiAI optimized kernels if applicable" OFF)
|
|
option(GGML_SSE42 "ggml: enable SSE 4.2" ${INS_ENB})
|
|
option(GGML_AVX "ggml: enable AVX" ${INS_ENB})
|
|
option(GGML_AVX_VNNI "ggml: enable AVX-VNNI" OFF)
|
|
option(GGML_AVX2 "ggml: enable AVX2" ${INS_ENB})
|
|
option(GGML_BMI2 "ggml: enable BMI2" ${INS_ENB})
|
|
option(GGML_AVX512 "ggml: enable AVX512F" OFF)
|
|
option(GGML_AVX512_VBMI "ggml: enable AVX512-VBMI" OFF)
|
|
option(GGML_AVX512_VNNI "ggml: enable AVX512-VNNI" OFF)
|
|
option(GGML_AVX512_BF16 "ggml: enable AVX512-BF16" OFF)
|
|
if (NOT MSVC)
|
|
# in MSVC F16C and FMA is implied with AVX2/AVX512
|
|
option(GGML_FMA "ggml: enable FMA" ${INS_ENB})
|
|
option(GGML_F16C "ggml: enable F16C" ${INS_ENB})
|
|
# MSVC does not seem to support AMX
|
|
option(GGML_AMX_TILE "ggml: enable AMX-TILE" OFF)
|
|
option(GGML_AMX_INT8 "ggml: enable AMX-INT8" OFF)
|
|
option(GGML_AMX_BF16 "ggml: enable AMX-BF16" OFF)
|
|
endif()
|
|
option(GGML_LASX "ggml: enable lasx" ON)
|
|
option(GGML_LSX "ggml: enable lsx" ON)
|
|
option(GGML_RVV "ggml: enable rvv" ON)
|
|
option(GGML_RV_ZFH "ggml: enable riscv zfh" OFF)
|
|
option(GGML_VXE "ggml: enable vxe" ON)
|
|
|
|
option(GGML_CPU_ALL_VARIANTS "ggml: build all variants of the CPU backend (requires GGML_BACKEND_DL)" OFF)
|
|
set(GGML_CPU_ARM_ARCH "" CACHE STRING "ggml: CPU architecture for ARM")
|
|
set(GGML_CPU_POWERPC_CPUTYPE "" CACHE STRING "ggml: CPU type for PowerPC")
|
|
|
|
|
|
if (WIN32)
|
|
set(GGML_WIN_VER "0x602" CACHE STRING "ggml: Windows version")
|
|
endif()
|
|
|
|
# ggml core
|
|
set(GGML_SCHED_MAX_COPIES "4" CACHE STRING "ggml: max input copies for pipeline parallelism")
|
|
option(GGML_CPU "ggml: enable CPU backend" ON)
|
|
|
|
# 3rd party libs / backends
|
|
option(GGML_ACCELERATE "ggml: enable Accelerate framework" ON)
|
|
option(GGML_BLAS "ggml: use BLAS" ${GGML_BLAS_DEFAULT})
|
|
set(GGML_BLAS_VENDOR ${GGML_BLAS_VENDOR_DEFAULT} CACHE STRING
|
|
"ggml: BLAS library vendor")
|
|
option(GGML_LLAMAFILE "ggml: use LLAMAFILE" ${GGML_LLAMAFILE_DEFAULT})
|
|
|
|
option(GGML_CUDA "ggml: use CUDA" OFF)
|
|
option(GGML_MUSA "ggml: use MUSA" OFF)
|
|
option(GGML_CUDA_FORCE_MMQ "ggml: use mmq kernels instead of cuBLAS" OFF)
|
|
option(GGML_CUDA_FORCE_CUBLAS "ggml: always use cuBLAS instead of mmq kernels" OFF)
|
|
option(GGML_CUDA_F16 "ggml: use 16 bit floats for some calculations" OFF)
|
|
set (GGML_CUDA_PEER_MAX_BATCH_SIZE "128" CACHE STRING
|
|
"ggml: max. batch size for using peer access")
|
|
option(GGML_CUDA_NO_PEER_COPY "ggml: do not use peer to peer copies" OFF)
|
|
option(GGML_CUDA_NO_VMM "ggml: do not try to use CUDA VMM" OFF)
|
|
option(GGML_CUDA_FA "ggml: compile ggml FlashAttention CUDA kernels" ON)
|
|
option(GGML_CUDA_FA_ALL_QUANTS "ggml: compile all quants for FlashAttention" OFF)
|
|
option(GGML_CUDA_GRAPHS "ggml: use CUDA graphs (llama.cpp only)" ${GGML_CUDA_GRAPHS_DEFAULT})
|
|
set (GGML_CUDA_COMPRESSION_MODE "size" CACHE STRING
|
|
"ggml: cuda link binary compression mode; requires cuda 12.8+")
|
|
set_property(CACHE GGML_CUDA_COMPRESSION_MODE PROPERTY STRINGS "none;speed;balance;size")
|
|
|
|
option(GGML_HIP "ggml: use HIP" OFF)
|
|
option(GGML_HIP_GRAPHS "ggml: use HIP graph, experimental, slow" OFF)
|
|
option(GGML_HIP_NO_VMM "ggml: do not try to use HIP VMM" ON)
|
|
option(GGML_HIP_ROCWMMA_FATTN "ggml: enable rocWMMA for FlashAttention" OFF)
|
|
option(GGML_VULKAN "ggml: use Vulkan" OFF)
|
|
option(GGML_VULKAN_CHECK_RESULTS "ggml: run Vulkan op checks" OFF)
|
|
option(GGML_VULKAN_DEBUG "ggml: enable Vulkan debug output" OFF)
|
|
option(GGML_VULKAN_MEMORY_DEBUG "ggml: enable Vulkan memory debug output" OFF)
|
|
option(GGML_VULKAN_SHADER_DEBUG_INFO "ggml: enable Vulkan shader debug info" OFF)
|
|
option(GGML_VULKAN_PERF "ggml: enable Vulkan perf output" OFF)
|
|
option(GGML_VULKAN_VALIDATE "ggml: enable Vulkan validation" OFF)
|
|
option(GGML_VULKAN_RUN_TESTS "ggml: run Vulkan tests" OFF)
|
|
option(GGML_KOMPUTE "ggml: use Kompute" OFF)
|
|
option(GGML_METAL "ggml: use Metal" ${GGML_METAL_DEFAULT})
|
|
option(GGML_METAL_USE_BF16 "ggml: use bfloat if available" OFF)
|
|
option(GGML_METAL_NDEBUG "ggml: disable Metal debugging" OFF)
|
|
option(GGML_METAL_SHADER_DEBUG "ggml: compile Metal with -fno-fast-math" OFF)
|
|
option(GGML_METAL_EMBED_LIBRARY "ggml: embed Metal library" ${GGML_METAL})
|
|
set (GGML_METAL_MACOSX_VERSION_MIN "" CACHE STRING
|
|
"ggml: metal minimum macOS version")
|
|
set (GGML_METAL_STD "" CACHE STRING "ggml: metal standard version (-std flag)")
|
|
option(GGML_OPENMP "ggml: use OpenMP" ON)
|
|
option(GGML_RPC "ggml: use RPC" OFF)
|
|
option(GGML_SYCL "ggml: use SYCL" OFF)
|
|
option(GGML_SYCL_F16 "ggml: use 16 bit floats for sycl calculations" OFF)
|
|
option(GGML_SYCL_GRAPH "ggml: enable graphs in the SYCL backend" ON)
|
|
set (GGML_SYCL_TARGET "INTEL" CACHE STRING
|
|
"ggml: sycl target device")
|
|
set (GGML_SYCL_DEVICE_ARCH "" CACHE STRING
|
|
"ggml: sycl device architecture")
|
|
|
|
option(GGML_OPENCL "ggml: use OpenCL" OFF)
|
|
option(GGML_OPENCL_PROFILING "ggml: use OpenCL profiling (increases overhead)" OFF)
|
|
option(GGML_OPENCL_EMBED_KERNELS "ggml: embed kernels" ON)
|
|
option(GGML_OPENCL_USE_ADRENO_KERNELS "ggml: use optimized kernels for Adreno" ON)
|
|
set (GGML_OPENCL_TARGET_VERSION "300" CACHE STRING
|
|
"gmml: OpenCL API version to target")
|
|
|
|
# toolchain for vulkan-shaders-gen
|
|
set (GGML_VULKAN_SHADERS_GEN_TOOLCHAIN "" CACHE FILEPATH "ggml: toolchain file for vulkan-shaders-gen")
|
|
|
|
# extra artifacts
|
|
option(GGML_BUILD_TESTS "ggml: build tests" ${GGML_STANDALONE})
|
|
option(GGML_BUILD_EXAMPLES "ggml: build examples" ${GGML_STANDALONE})
|
|
|
|
#
|
|
# dependencies
|
|
#
|
|
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_C_STANDARD_REQUIRED true)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED true)
|
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
include(GNUInstallDirs)
|
|
|
|
#
|
|
# build the library
|
|
#
|
|
|
|
add_subdirectory(src)
|
|
|
|
#
|
|
# tests and examples
|
|
#
|
|
|
|
if (GGML_BUILD_TESTS)
|
|
enable_testing()
|
|
add_subdirectory(tests)
|
|
endif ()
|
|
|
|
if (GGML_BUILD_EXAMPLES)
|
|
add_subdirectory(examples)
|
|
endif ()
|
|
|
|
#
|
|
# install
|
|
#
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
# all public headers
|
|
set(GGML_PUBLIC_HEADERS
|
|
include/ggml.h
|
|
include/ggml-cpu.h
|
|
include/ggml-alloc.h
|
|
include/ggml-backend.h
|
|
include/ggml-blas.h
|
|
include/ggml-cann.h
|
|
include/ggml-cpp.h
|
|
include/ggml-cuda.h
|
|
include/ggml-kompute.h
|
|
include/ggml-opt.h
|
|
include/ggml-metal.h
|
|
include/ggml-rpc.h
|
|
include/ggml-sycl.h
|
|
include/ggml-vulkan.h
|
|
include/gguf.h)
|
|
|
|
set_target_properties(ggml PROPERTIES PUBLIC_HEADER "${GGML_PUBLIC_HEADERS}")
|
|
#if (GGML_METAL)
|
|
# set_target_properties(ggml PROPERTIES RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/src/ggml-metal.metal")
|
|
#endif()
|
|
install(TARGETS ggml LIBRARY PUBLIC_HEADER)
|
|
install(TARGETS ggml-base LIBRARY)
|
|
|
|
if (GGML_STANDALONE)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ggml.pc.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/ggml.pc
|
|
@ONLY)
|
|
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ggml.pc
|
|
DESTINATION share/pkgconfig)
|
|
endif()
|
|
|
|
#
|
|
# Create CMake package
|
|
#
|
|
|
|
# Generate version info based on git commit.
|
|
|
|
if(NOT DEFINED GGML_BUILD_NUMBER)
|
|
find_program(GIT_EXE NAMES git git.exe REQUIRED NO_CMAKE_FIND_ROOT_PATH)
|
|
execute_process(COMMAND ${GIT_EXE} rev-list --count HEAD
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GGML_BUILD_NUMBER
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
if(GGML_BUILD_NUMBER EQUAL 1)
|
|
message(WARNING "GGML build version fixed at 1 likely due to a shallow clone.")
|
|
endif()
|
|
|
|
execute_process(COMMAND ${GIT_EXE} rev-parse --short HEAD
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GGML_BUILD_COMMIT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endif()
|
|
|
|
|
|
# Capture variables prefixed with GGML_.
|
|
|
|
set(variable_set_statements
|
|
"
|
|
####### Expanded from @GGML_VARIABLES_EXPANED@ by configure_package_config_file() #######
|
|
####### Any changes to this file will be overwritten by the next CMake run #######
|
|
|
|
")
|
|
|
|
set(GGML_SHARED_LIB ${BUILD_SHARED_LIBS})
|
|
|
|
get_cmake_property(all_variables VARIABLES)
|
|
foreach(variable_name IN LISTS all_variables)
|
|
if(variable_name MATCHES "^GGML_")
|
|
string(REPLACE ";" "\\;"
|
|
variable_value "${${variable_name}}")
|
|
|
|
set(variable_set_statements
|
|
"${variable_set_statements}set(${variable_name} \"${variable_value}\")\n")
|
|
endif()
|
|
endforeach()
|
|
|
|
set(GGML_VARIABLES_EXPANDED ${variable_set_statements})
|
|
|
|
# Create the CMake package and set install location.
|
|
|
|
set(GGML_INSTALL_VERSION 0.0.${GGML_BUILD_NUMBER})
|
|
set(GGML_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files")
|
|
set(GGML_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files")
|
|
set(GGML_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of binary files")
|
|
|
|
configure_package_config_file(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/ggml-config.cmake.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/ggml-config.cmake
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ggml
|
|
PATH_VARS GGML_INCLUDE_INSTALL_DIR
|
|
GGML_LIB_INSTALL_DIR
|
|
GGML_BIN_INSTALL_DIR)
|
|
|
|
write_basic_package_version_file(
|
|
${CMAKE_CURRENT_BINARY_DIR}/ggml-version.cmake
|
|
VERSION ${GGML_INSTALL_VERSION}
|
|
COMPATIBILITY SameMajorVersion)
|
|
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ggml-config.cmake
|
|
${CMAKE_CURRENT_BINARY_DIR}/ggml-version.cmake
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ggml)
|
|
|
|
if (MSVC)
|
|
set(MSVC_WARNING_FLAGS
|
|
/wd4005 # Macro redefinition
|
|
/wd4244 # Conversion from one type to another type, possible loss of data
|
|
/wd4267 # Conversion from 'size_t' to a smaller type, possible loss of data
|
|
)
|
|
function(disable_msvc_warnings target_name)
|
|
target_compile_options(${target_name} PRIVATE ${MSVC_WARNING_FLAGS})
|
|
endfunction()
|
|
|
|
disable_msvc_warnings(ggml-base)
|
|
disable_msvc_warnings(ggml)
|
|
disable_msvc_warnings(ggml-cpu)
|
|
endif()
|