From c46944aa25b5560e6195f8cbcbc8947e9a6395c3 Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Wed, 2 Jul 2025 13:55:32 +0200 Subject: [PATCH] ggml : add version function to get lib version (ggml/1286) * ggml : add version function to get lib version This commit adds a function `ggml_version()` to the ggml library that returns the version of the library as a string. The motivation for this is that it can be useful to be able to programmatically check the version of the ggml library being used. Usage: ```c printf("GGML version: %s\n", ggml_version()); ``` Output: ```console GGML version: 0.0.2219 ``` * ggml : add ggml_commit() --------- Co-authored-by: Georgi Gerganov --- ggml/CMakeLists.txt | 7 +++++++ ggml/include/ggml.h | 3 +++ ggml/src/ggml.c | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/ggml/CMakeLists.txt b/ggml/CMakeLists.txt index 215eb2348..675f3bf75 100644 --- a/ggml/CMakeLists.txt +++ b/ggml/CMakeLists.txt @@ -360,6 +360,13 @@ write_basic_package_version_file( VERSION ${GGML_INSTALL_VERSION} COMPATIBILITY SameMajorVersion) +target_compile_definitions(ggml-base PRIVATE + GGML_VERSION="${GGML_INSTALL_VERSION}" + GGML_COMMIT="${GGML_BUILD_COMMIT}" +) +message(STATUS "ggml version: ${GGML_INSTALL_VERSION}") +message(STATUS "ggml commit: ${GGML_BUILD_COMMIT}") + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ggml-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/ggml-version.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ggml) diff --git a/ggml/include/ggml.h b/ggml/include/ggml.h index a92495dbb..4647c8f70 100644 --- a/ggml/include/ggml.h +++ b/ggml/include/ggml.h @@ -646,6 +646,9 @@ extern "C" { // misc + GGML_API const char * ggml_version(void); + GGML_API const char * ggml_commit(void); + GGML_API void ggml_time_init(void); // call this once at the beginning of the program GGML_API int64_t ggml_time_ms(void); GGML_API int64_t ggml_time_us(void); diff --git a/ggml/src/ggml.c b/ggml/src/ggml.c index f1245c50c..474e9d83f 100644 --- a/ggml/src/ggml.c +++ b/ggml/src/ggml.c @@ -473,6 +473,14 @@ bool ggml_guid_matches(ggml_guid_t guid_a, ggml_guid_t guid_b) { return memcmp(guid_a, guid_b, sizeof(ggml_guid)) == 0; } +const char * ggml_version(void) { + return GGML_VERSION; +} + +const char * ggml_commit(void) { + return GGML_COMMIT; +} + // // timing //