summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2014-01-31 16:33:48 -0800
committerKristian Høgsberg <krh@bitplanet.net>2014-02-01 01:05:35 -0800
commit0aa19e9457ce3258a4df74876e542f0b6fbbf2ba (patch)
tree0f4a30ec84d03dacf53db510488d4ff98fd75b49
parent0987f81ee9d3ae5a2ec183bfb9c3ba3dd3bbb4a7 (diff)
downloadweston-0aa19e9457ce3258a4df74876e542f0b6fbbf2ba.tar.gz
build: Only regenerate src/git-version.h when .git/logs/HEAD changes
We rely on .git/logs/HEAD to be a file that changes when we commit to HEAD. The first idea is to make the makefile rule depend on .git/HEAD, but that's a symbolic ref that points to the current ref in refs/heads. However, .git/logs/HEAD changes whenever we commit to HEAD, so we can use that in the makefile rule.
-rw-r--r--Makefile.am17
-rw-r--r--configure.ac3
2 files changed, 14 insertions, 6 deletions
diff --git a/Makefile.am b/Makefile.am
index e515736a..b2c7a2c3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -77,6 +77,12 @@ weston_SOURCES = \
shared/zalloc.h \
src/weston-egl-ext.h
+# Track this dependency explicitly instead of using BUILT_SOURCES. We
+# add BUILT_SOURCES to CLEANFILES, but we want to keep git-version.h
+# in case we're building from tarballs.
+
+src/compositor.c : $(top_builddir)/src/git-version.h
+
noinst_LTLIBRARIES += \
libsession-helper.la
@@ -99,10 +105,10 @@ libsession_helper_la_LIBADD += $(SYSTEMD_LOGIN_LIBS) $(DBUS_LIBS)
endif
endif
-src/git-version.h : .FORCE
- $(AM_V_GEN)(echo "#define BUILD_ID \"$(shell git --git-dir=$(top_srcdir)/.git describe --always --dirty) $(shell git --git-dir=$(top_srcdir)/.git log -1 --format='%s (%ci)')\"" > $@-new; \
- cmp -s $@ $@-new || cp $@-new $@; \
- rm $@-new)
+if HAVE_GIT_REPO
+src/git-version.h : $(top_srcdir)/.git/logs/HEAD
+ $(AM_V_GEN)echo "#define BUILD_ID \"$(shell git --git-dir=$(top_srcdir)/.git describe --always --dirty) $(shell git --git-dir=$(top_srcdir)/.git log -1 --format='%s (%ci)')\"" > $@
+endif
.FORCE :
@@ -339,8 +345,7 @@ BUILT_SOURCES += \
src/workspaces-server-protocol.h \
src/workspaces-protocol.c \
src/scaler-server-protocol.h \
- src/scaler-protocol.c \
- src/git-version.h
+ src/scaler-protocol.c
if BUILD_CLIENTS
diff --git a/configure.ac b/configure.ac
index d961ea4d..3caaa594 100644
--- a/configure.ac
+++ b/configure.ac
@@ -485,6 +485,9 @@ AC_SUBST([dtddir])
AM_CONDITIONAL([HAVE_XMLLINT], [test "x$XMLLINT" != "x" -a "x$dtddir" != "x"])
AC_CONFIG_FILES([Makefile src/version.h src/weston.pc])
+
+AM_CONDITIONAL([HAVE_GIT_REPO], [test -f $srcdir/.git/logs/HEAD])
+
AC_OUTPUT
AC_MSG_RESULT([