Don't assume that $(top_srcdir)/.git is a directory. It may be a
gitlink file [1] if $(top_srcdir) is a submodule checkout or a linked
worktree [2].
[1] A "gitlink" is a text file that specifies the real location of
the gitdir.
[2] Linked worktrees are a new feature in Git 2.5.
Cc: "10.6, 10.5" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
(cherry picked from commit
75784243df1f5bb0652fb243b37d69f36d493a86)
.PHONY: main/git_sha1.h.tmp
main/git_sha1.h.tmp:
+ @# Don't assume that $(top_srcdir)/.git is a directory. It may be
+ @# a gitlink file if $(top_srcdir) is a submodule checkout or a linked
+ @# worktree.
@touch main/git_sha1.h.tmp
- @if test -d $(top_srcdir)/.git; then \
+ @if test -e $(top_srcdir)/.git; then \
if which git > /dev/null; then \
git --git-dir=$(top_srcdir)/.git log -n 1 --oneline | \
sed 's/^\([^ ]*\) .*/#define MESA_GIT_SHA1 "git-\1"/' \