install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ggml.pc
DESTINATION share/pkgconfig)
endif()
+
+#
+# Create CMake package
+#
+
+# Generate version info based on git commit.
+
+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
+)
+
+# 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)
target_compile_definitions(${backend} PRIVATE GGML_BACKEND_BUILD)
target_compile_definitions(${backend} PUBLIC GGML_BACKEND_SHARED)
endif()
+
+ if(NOT GGML_AVAILABLE_BACKENDS)
+ set(GGML_AVAILABLE_BACKENDS "${backend}"
+ CACHE INTERNAL "List of backends for cmake package")
+ else()
+ list(FIND GGML_AVAILABLE_BACKENDS "${backend}" has_backend)
+ if(has_backend EQUAL -1)
+ set(GGML_AVAILABLE_BACKENDS "${GGML_AVAILABLE_BACKENDS};${backend}"
+ CACHE INTERNAL "List of backends for cmake package")
+ endif()
+ endif()
endfunction()
function(ggml_add_backend backend)