|
1 | 1 | cmake_minimum_required(VERSION 3.14) # for add_link_options and implicit target directories. |
2 | 2 | project("ggml" C CXX ASM) |
| 3 | + |
| 4 | +### GGML Version |
| 5 | +set(GGML_VERSION_MAJOR 0) |
| 6 | +set(GGML_VERSION_MINOR 9) |
| 7 | +set(GGML_VERSION_PATCH 0) |
| 8 | +set(GGML_VERSION_DEV "-dev") # "-dev" for development, "" for releases |
| 9 | +set(GGML_VERSION_BASE "${GGML_VERSION_MAJOR}.${GGML_VERSION_MINOR}.${GGML_VERSION_PATCH}") |
| 10 | + |
| 11 | +find_program(GIT_EXE NAMES git git.exe NO_CMAKE_FIND_ROOT_PATH) |
| 12 | +if(GIT_EXE) |
| 13 | + # Get current git commit hash |
| 14 | + execute_process(COMMAND ${GIT_EXE} rev-parse --short HEAD |
| 15 | + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
| 16 | + OUTPUT_VARIABLE GGML_BUILD_COMMIT |
| 17 | + OUTPUT_STRIP_TRAILING_WHITESPACE |
| 18 | + ERROR_QUIET |
| 19 | + ) |
| 20 | + |
| 21 | + # Check if the working directory is dirty (i.e., has uncommitted changes) |
| 22 | + execute_process(COMMAND ${GIT_EXE} diff-index --quiet HEAD -- . |
| 23 | + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
| 24 | + RESULT_VARIABLE GGML_GIT_DIRTY |
| 25 | + ERROR_QUIET |
| 26 | + ) |
| 27 | +endif() |
| 28 | + |
| 29 | +# Build the version string with optional -dev suffix and dirty flag |
| 30 | +set(GGML_VERSION "${GGML_VERSION_BASE}${GGML_VERSION_DEV}") |
| 31 | +if(GGML_GIT_DIRTY AND NOT GGML_GIT_DIRTY EQUAL 0) |
| 32 | + set(GGML_VERSION "${GGML_VERSION}-dirty") |
| 33 | +endif() |
| 34 | + |
| 35 | +if(NOT GGML_BUILD_COMMIT) |
| 36 | + set(GGML_BUILD_COMMIT "unknown") |
| 37 | +endif() |
| 38 | + |
3 | 39 | include(CheckIncludeFileCXX) |
4 | 40 |
|
5 | 41 | set(CMAKE_EXPORT_COMPILE_COMMANDS ON) |
@@ -300,26 +336,6 @@ endif() |
300 | 336 | # Create CMake package |
301 | 337 | # |
302 | 338 |
|
303 | | -# Generate version info based on git commit. |
304 | | - |
305 | | -if(NOT DEFINED GGML_BUILD_NUMBER) |
306 | | - find_program(GIT_EXE NAMES git git.exe REQUIRED NO_CMAKE_FIND_ROOT_PATH) |
307 | | - execute_process(COMMAND ${GIT_EXE} rev-list --count HEAD |
308 | | - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
309 | | - OUTPUT_VARIABLE GGML_BUILD_NUMBER |
310 | | - OUTPUT_STRIP_TRAILING_WHITESPACE |
311 | | - ) |
312 | | - |
313 | | - if(GGML_BUILD_NUMBER EQUAL 1) |
314 | | - message(WARNING "GGML build version fixed at 1 likely due to a shallow clone.") |
315 | | - endif() |
316 | | - |
317 | | - execute_process(COMMAND ${GIT_EXE} rev-parse --short HEAD |
318 | | - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
319 | | - OUTPUT_VARIABLE GGML_BUILD_COMMIT |
320 | | - OUTPUT_STRIP_TRAILING_WHITESPACE |
321 | | - ) |
322 | | -endif() |
323 | 339 |
|
324 | 340 |
|
325 | 341 | # Capture variables prefixed with GGML_. |
@@ -348,7 +364,7 @@ set(GGML_VARIABLES_EXPANDED ${variable_set_statements}) |
348 | 364 |
|
349 | 365 | # Create the CMake package and set install location. |
350 | 366 |
|
351 | | -set(GGML_INSTALL_VERSION 0.0.${GGML_BUILD_NUMBER}) |
| 367 | +set(GGML_INSTALL_VERSION ${GGML_VERSION}) |
352 | 368 | set(GGML_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files") |
353 | 369 | set(GGML_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files") |
354 | 370 | set(GGML_BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Location of binary files") |
|
0 commit comments