authorgravatar for topolarity@tapscott.meCody Tapscott <topolarity@tapscott.me> 2022-10-31 13:12:52-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-11-10 19:34:56-05:00
logb605cb2742092530b7edf4c9d95c0ae28051ce95
tree36c5f4ea4fb635f449cfde34ef2f218a2ba52f6c
parent892fb0fc8830007542381fe845e618dc47493622

cmake: Mark <root>/.git/HEAD as a configure dependency

This ensures that the Zig version will be re-computed when jumping through the source tree, which is especially important if bisecting across AstGen- or other changes that must not use the old cache.

3 files changed, 13 insertions(+), 10 deletions(-)

CMakeLists.txt+11-8
......@@ -46,7 +46,7 @@ set(ZIG_VERSION_PATCH 0)
4646set(ZIG_VERSION "" CACHE STRING "Override Zig version string. Default is to find out with git.")
4747
4848if("${ZIG_VERSION}" STREQUAL "")
49 set(ZIG_VERSION "${ZIG_VERSION_MAJOR}.${ZIG_VERSION_MINOR}.${ZIG_VERSION_PATCH}")
49 set(RESOLVED_ZIG_VERSION "${ZIG_VERSION_MAJOR}.${ZIG_VERSION_MINOR}.${ZIG_VERSION_PATCH}")
5050 find_program(GIT_EXE NAMES git NAMES_PER_DIR)
5151 if(GIT_EXE)
5252 execute_process(
......@@ -56,11 +56,12 @@ if("${ZIG_VERSION}" STREQUAL "")
5656 OUTPUT_STRIP_TRAILING_WHITESPACE
5757 ERROR_QUIET)
5858 if(EXIT_STATUS EQUAL "0")
59 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/.git/HEAD)
5960 if(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)$")
6061 # Tagged release version.
6162 set(GIT_TAG ${CMAKE_MATCH_1})
62 if(NOT GIT_TAG VERSION_EQUAL ZIG_VERSION)
63 message(SEND_ERROR "Zig version (${ZIG_VERSION}) does not match Git tag (${GIT_TAG}).")
63 if(NOT GIT_TAG VERSION_EQUAL RESOLVED_ZIG_VERSION)
64 message(SEND_ERROR "Zig version (${RESOLVED_ZIG_VERSION}) does not match Git tag (${GIT_TAG}).")
6465 endif()
6566 elseif(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-g(.+)$")
6667 # Untagged pre-release. The Zig version is updated to include the number of commits
......@@ -69,17 +70,19 @@ if("${ZIG_VERSION}" STREQUAL "")
6970 set(GIT_TAG ${CMAKE_MATCH_1})
7071 set(GIT_COMMITS_AFTER_TAG ${CMAKE_MATCH_2})
7172 set(GIT_COMMIT ${CMAKE_MATCH_3})
72 if(NOT ZIG_VERSION VERSION_GREATER GIT_TAG)
73 message(SEND_ERROR "Zig version (${ZIG_VERSION}) must be greater than tagged ancestor (${GIT_TAG}).")
73 if(NOT RESOLVED_ZIG_VERSION VERSION_GREATER GIT_TAG)
74 message(SEND_ERROR "Zig version (${RESOLVED_ZIG_VERSION}) must be greater than tagged ancestor (${GIT_TAG}).")
7475 endif()
75 set(ZIG_VERSION "${ZIG_VERSION}-dev.${GIT_COMMITS_AFTER_TAG}+${GIT_COMMIT}")
76 set(RESOLVED_ZIG_VERSION "${RESOLVED_ZIG_VERSION}-dev.${GIT_COMMITS_AFTER_TAG}+${GIT_COMMIT}")
7677 else()
7778 message(WARNING "Failed to parse version from output of `git describe`.")
7879 endif()
7980 endif()
8081 endif()
82else()
83 set(RESOLVED_ZIG_VERSION "${ZIG_VERSION}")
8184endif()
82message(STATUS "Configuring zig version ${ZIG_VERSION}")
85message(STATUS "Configuring zig version ${RESOLVED_ZIG_VERSION}")
8386
8487set(ZIG_NO_LIB off CACHE BOOL
8588 "Disable copying lib/ files to install prefix during the build phase")
......@@ -1090,7 +1093,7 @@ set(ZIG_BUILD_ARGS
10901093 ${ZIG_SINGLE_THREADED_ARG}
10911094 "-Dtarget=${ZIG_TARGET_TRIPLE}"
10921095 "-Dcpu=${ZIG_TARGET_MCPU}"
1093 "-Dversion-string=${ZIG_VERSION}"
1096 "-Dversion-string=${RESOLVED_ZIG_VERSION}"
10941097)
10951098
10961099add_custom_target(stage3 ALL
src/config.zig.in+1-1
......@@ -2,7 +2,7 @@ pub const have_llvm = true;
22pub const llvm_has_m68k = false;
33pub const llvm_has_csky = false;
44pub const llvm_has_arc = false;
5pub const version: [:0]const u8 = "@ZIG_VERSION@";
5pub const version: [:0]const u8 = "@RESOLVED_ZIG_VERSION@";
66pub const semver = @import("std").SemanticVersion.parse(version) catch unreachable;
77pub const enable_logging: bool = @ZIG_ENABLE_LOGGING_BOOL@;
88pub const enable_link_snapshots: bool = false;
src/stage1/config.h.in+1-1
......@@ -12,7 +12,7 @@
1212#define ZIG_VERSION_MAJOR @ZIG_VERSION_MAJOR@
1313#define ZIG_VERSION_MINOR @ZIG_VERSION_MINOR@
1414#define ZIG_VERSION_PATCH @ZIG_VERSION_PATCH@
15#define ZIG_VERSION_STRING "@ZIG_VERSION@"
15#define ZIG_VERSION_STRING "@RESOLVED_ZIG_VERSION@"
1616
1717// Used by build.zig for communicating build information to self hosted build.
1818#define ZIG_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@"