summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmil Velikov <emil.velikov@collabora.com>2016-05-31 14:46:19 +0100
committerEmil Velikov <emil.l.velikov@gmail.com>2016-06-02 22:23:12 +0100
commitaf2637aa32aac1ef512433407385e8e2bf711aea (patch)
treed0e7361e4e03bb5d67a6ffa9ee80402964972804
parentf74a29188ce534a333992f3a88165af16fd01b98 (diff)
automake: bring back the .PHONY git_sha1.h.tmp rule
With earlier commit 3689ef32afd ("automake: rework the git_sha1.h rule, include in tarball") we/I erroneously removed the PHONY rule and the temporary file. The former is used to ensure that the header is regenerated when on each make invocation, while the latter helps us avoid the unneeded rebuild(s) when the SHA1 hasn't changed. Reported-by: Grazvydas Ignotas <notasas@gmail.com> Tested-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
-rw-r--r--src/Makefile.am19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index f5c07739de..45590c0a07 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -19,13 +19,28 @@
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
-git_sha1.h:
+.PHONY: git_sha1.h.tmp
+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.
+ @# If we are building from a release tarball copy the bundled header.
@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"/' \
- > git_sha1.h ; \
+ > git_sha1.h.tmp ; \
fi \
+ else \
+ cp git_sha1.h git_sha1.h.tmp ;\
+ fi
+
+git_sha1.h: git_sha1.h.tmp
+ @echo "updating git_sha1.h"
+ @if ! cmp -s git_sha1.h.tmp git_sha1.h; then \
+ mv git_sha1.h.tmp git_sha1.h ;\
+ else \
+ rm git_sha1.h.tmp ;\
fi
BUILT_SOURCES = git_sha1.h