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)...@@ -46,7 +46,7 @@ set(ZIG_VERSION_PATCH 0)
46set(ZIG_VERSION "" CACHE STRING "Override Zig version string. Default is to find out with git.")46set(ZIG_VERSION "" CACHE STRING "Override Zig version string. Default is to find out with git.")
4747
48if("${ZIG_VERSION}" STREQUAL "")48if("${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}")
50 find_program(GIT_EXE NAMES git NAMES_PER_DIR)50 find_program(GIT_EXE NAMES git NAMES_PER_DIR)
51 if(GIT_EXE)51 if(GIT_EXE)
52 execute_process(52 execute_process(
...@@ -56,11 +56,12 @@ if("${ZIG_VERSION}" STREQUAL "")...@@ -56,11 +56,12 @@ if("${ZIG_VERSION}" STREQUAL "")
56 OUTPUT_STRIP_TRAILING_WHITESPACE56 OUTPUT_STRIP_TRAILING_WHITESPACE
57 ERROR_QUIET)57 ERROR_QUIET)
58 if(EXIT_STATUS EQUAL "0")58 if(EXIT_STATUS EQUAL "0")
59 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/.git/HEAD)
59 if(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)$")60 if(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)$")
60 # Tagged release version.61 # Tagged release version.
61 set(GIT_TAG ${CMAKE_MATCH_1})62 set(GIT_TAG ${CMAKE_MATCH_1})
62 if(NOT GIT_TAG VERSION_EQUAL ZIG_VERSION)63 if(NOT GIT_TAG VERSION_EQUAL RESOLVED_ZIG_VERSION)
63 message(SEND_ERROR "Zig version (${ZIG_VERSION}) does not match Git tag (${GIT_TAG}).")64 message(SEND_ERROR "Zig version (${RESOLVED_ZIG_VERSION}) does not match Git tag (${GIT_TAG}).")
64 endif()65 endif()
65 elseif(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-g(.+)$")66 elseif(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-g(.+)$")
66 # Untagged pre-release. The Zig version is updated to include the number of commits67 # Untagged pre-release. The Zig version is updated to include the number of commits
...@@ -69,17 +70,19 @@ if("${ZIG_VERSION}" STREQUAL "")...@@ -69,17 +70,19 @@ if("${ZIG_VERSION}" STREQUAL "")
69 set(GIT_TAG ${CMAKE_MATCH_1})70 set(GIT_TAG ${CMAKE_MATCH_1})
70 set(GIT_COMMITS_AFTER_TAG ${CMAKE_MATCH_2})71 set(GIT_COMMITS_AFTER_TAG ${CMAKE_MATCH_2})
71 set(GIT_COMMIT ${CMAKE_MATCH_3})72 set(GIT_COMMIT ${CMAKE_MATCH_3})
72 if(NOT ZIG_VERSION VERSION_GREATER GIT_TAG)73 if(NOT RESOLVED_ZIG_VERSION VERSION_GREATER GIT_TAG)
73 message(SEND_ERROR "Zig version (${ZIG_VERSION}) must be greater than tagged ancestor (${GIT_TAG}).")74 message(SEND_ERROR "Zig version (${RESOLVED_ZIG_VERSION}) must be greater than tagged ancestor (${GIT_TAG}).")
74 endif()75 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}")
76 else()77 else()
77 message(WARNING "Failed to parse version from output of `git describe`.")78 message(WARNING "Failed to parse version from output of `git describe`.")
78 endif()79 endif()
79 endif()80 endif()
80 endif()81 endif()
82else()
83 set(RESOLVED_ZIG_VERSION "${ZIG_VERSION}")
81endif()84endif()
82message(STATUS "Configuring zig version ${ZIG_VERSION}")85message(STATUS "Configuring zig version ${RESOLVED_ZIG_VERSION}")
8386
84set(ZIG_NO_LIB off CACHE BOOL87set(ZIG_NO_LIB off CACHE BOOL
85 "Disable copying lib/ files to install prefix during the build phase")88 "Disable copying lib/ files to install prefix during the build phase")
...@@ -1090,7 +1093,7 @@ set(ZIG_BUILD_ARGS...@@ -1090,7 +1093,7 @@ set(ZIG_BUILD_ARGS
1090 ${ZIG_SINGLE_THREADED_ARG}1093 ${ZIG_SINGLE_THREADED_ARG}
1091 "-Dtarget=${ZIG_TARGET_TRIPLE}"1094 "-Dtarget=${ZIG_TARGET_TRIPLE}"
1092 "-Dcpu=${ZIG_TARGET_MCPU}"1095 "-Dcpu=${ZIG_TARGET_MCPU}"
1093 "-Dversion-string=${ZIG_VERSION}"1096 "-Dversion-string=${RESOLVED_ZIG_VERSION}"
1094)1097)
10951098
1096add_custom_target(stage3 ALL1099add_custom_target(stage3 ALL
src/config.zig.in+1-1
...@@ -2,7 +2,7 @@ pub const have_llvm = true;...@@ -2,7 +2,7 @@ pub const have_llvm = true;
2pub const llvm_has_m68k = false;2pub const llvm_has_m68k = false;
3pub const llvm_has_csky = false;3pub const llvm_has_csky = false;
4pub const llvm_has_arc = false;4pub const llvm_has_arc = false;
5pub const version: [:0]const u8 = "@ZIG_VERSION@";5pub const version: [:0]const u8 = "@RESOLVED_ZIG_VERSION@";
6pub const semver = @import("std").SemanticVersion.parse(version) catch unreachable;6pub const semver = @import("std").SemanticVersion.parse(version) catch unreachable;
7pub const enable_logging: bool = @ZIG_ENABLE_LOGGING_BOOL@;7pub const enable_logging: bool = @ZIG_ENABLE_LOGGING_BOOL@;
8pub const enable_link_snapshots: bool = false;8pub const enable_link_snapshots: bool = false;
src/stage1/config.h.in+1-1
...@@ -12,7 +12,7 @@...@@ -12,7 +12,7 @@
12#define ZIG_VERSION_MAJOR @ZIG_VERSION_MAJOR@12#define ZIG_VERSION_MAJOR @ZIG_VERSION_MAJOR@
13#define ZIG_VERSION_MINOR @ZIG_VERSION_MINOR@13#define ZIG_VERSION_MINOR @ZIG_VERSION_MINOR@
14#define ZIG_VERSION_PATCH @ZIG_VERSION_PATCH@14#define ZIG_VERSION_PATCH @ZIG_VERSION_PATCH@
15#define ZIG_VERSION_STRING "@ZIG_VERSION@"15#define ZIG_VERSION_STRING "@RESOLVED_ZIG_VERSION@"
1616
17// Used by build.zig for communicating build information to self hosted build.17// Used by build.zig for communicating build information to self hosted build.
18#define ZIG_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@"18#define ZIG_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@"