| ... | @@ -25,8 +25,8 @@ project(zig C CXX) | ... | @@ -25,8 +25,8 @@ project(zig C CXX) |
| 25 | set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) | 25 | set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) |
| 26 | | 26 | |
| 27 | set(ZIG_VERSION_MAJOR 0) | 27 | set(ZIG_VERSION_MAJOR 0) |
| 28 | set(ZIG_VERSION_MINOR 8) | 28 | set(ZIG_VERSION_MINOR 7) |
| 29 | set(ZIG_VERSION_PATCH 0) | 29 | set(ZIG_VERSION_PATCH 1) |
| 30 | set(ZIG_VERSION "" CACHE STRING "Override Zig version string. Default is to find out with git.") | 30 | set(ZIG_VERSION "" CACHE STRING "Override Zig version string. Default is to find out with git.") |
| 31 | | 31 | |
| 32 | if("${ZIG_VERSION}" STREQUAL "") | 32 | if("${ZIG_VERSION}" STREQUAL "") |
| ... | @@ -34,31 +34,18 @@ if("${ZIG_VERSION}" STREQUAL "") | ... | @@ -34,31 +34,18 @@ if("${ZIG_VERSION}" STREQUAL "") |
| 34 | find_program(GIT_EXE NAMES git) | 34 | find_program(GIT_EXE NAMES git) |
| 35 | if(GIT_EXE) | 35 | if(GIT_EXE) |
| 36 | execute_process( | 36 | execute_process( |
| 37 | COMMAND ${GIT_EXE} -C ${CMAKE_SOURCE_DIR} describe --match *.*.* --tags | 37 | COMMAND ${GIT_EXE} -C ${CMAKE_SOURCE_DIR} name-rev HEAD --tags --name-only --no-undefined --always |
| 38 | RESULT_VARIABLE EXIT_STATUS | 38 | RESULT_VARIABLE EXIT_STATUS |
| 39 | OUTPUT_VARIABLE GIT_DESCRIBE | 39 | OUTPUT_VARIABLE ZIG_GIT_REV |
| 40 | OUTPUT_STRIP_TRAILING_WHITESPACE | 40 | OUTPUT_STRIP_TRAILING_WHITESPACE |
| 41 | ERROR_QUIET) | 41 | ERROR_QUIET) |
| 42 | if(EXIT_STATUS EQUAL "0") | 42 | if(EXIT_STATUS EQUAL "0") |
| 43 | if(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)$") | 43 | if(ZIG_GIT_REV MATCHES "\\^0$") |
| 44 | # Tagged release version. | 44 | if(NOT("${ZIG_GIT_REV}" STREQUAL "${ZIG_VERSION}^0")) |
| 45 | set(GIT_TAG ${CMAKE_MATCH_1}) | 45 | message("WARNING: Tag does not match configured Zig version") |
| 46 | if(NOT GIT_TAG VERSION_EQUAL ZIG_VERSION) | | |
| 47 | message(SEND_ERROR "Configured Zig version (${ZIG_VERSION}) does not match Git tag (${GIT_TAG}).") | | |
| 48 | endif() | 46 | endif() |
| 49 | elseif(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-(.+)$") | | |
| 50 | # Untagged pre-release. The Zig version is updated to include the number of commits | | |
| 51 | # since the last tagged version and the commit hash. The version is formatted in | | |
| 52 | # accordance with the https://semver.org specification. | | |
| 53 | set(GIT_TAG ${CMAKE_MATCH_1}) | | |
| 54 | set(GIT_COMMITS_AFTER_TAG ${CMAKE_MATCH_2}) | | |
| 55 | set(GIT_COMMIT ${CMAKE_MATCH_3}) | | |
| 56 | if(NOT ZIG_VERSION VERSION_GREATER GIT_TAG) | | |
| 57 | message(SEND_ERROR "Configured Zig version (${ZIG_VERSION}) must be greater than tagged ancestor (${GIT_TAG}).") | | |
| 58 | endif() | | |
| 59 | set(ZIG_VERSION "${ZIG_VERSION}-dev.${GIT_COMMITS_AFTER_TAG}+${GIT_COMMIT}") | | |
| 60 | else() | 47 | else() |
| 61 | message(WARNING "Failed to parse version from output of `git describe`.") | 48 | set(ZIG_VERSION "${ZIG_VERSION}+${ZIG_GIT_REV}") |
| 62 | endif() | 49 | endif() |
| 63 | endif() | 50 | endif() |
| 64 | endif() | 51 | endif() |