From 5ea5c5876897ef10c2d573df1cfcf085f1d25f5f 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 215eb234..675f3bf7 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 f8238f31..abbfcc83 100644 --- a/ggml/include/ggml.h +++ b/ggml/include/ggml.h @@ -639,6 +639,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 c51cb57c..4d31b2f0 100644 --- a/ggml/src/ggml.c +++ b/ggml/src/ggml.c @@ -458,6 +458,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 //