summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--ChangeLog.11 (renamed from ChangeLog)0
-rw-r--r--Makefile.am38
3 files changed, 39 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 47823214e..33e3827fc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
Makefile.in
Makefile
+/ChangeLog
/aclocal.m4
/configure
/autom4te.cache
diff --git a/ChangeLog b/ChangeLog.11
index 0c37e166f..0c37e166f 100644
--- a/ChangeLog
+++ b/ChangeLog.11
diff --git a/Makefile.am b/Makefile.am
index acb722838..ed01bbb00 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -42,6 +42,7 @@ EXTRA_DIST = \
ChangeLog.03 \
ChangeLog.04 \
ChangeLog.09 \
+ ChangeLog.11 \
bootstrap \
$(AUTOMAKESOURCES)
@@ -108,6 +109,43 @@ INSTALL: lib/INSTALL
## to anybody else
##
+gitlog_to_changelog_command = $(PERL) $(srcdir)/lib/gitlog-to-changelog
+gitlog_to_changelog_options = --since='2011-12-28 00:00:00'
+
+# Automatic generation of the ChangeLog from git history.
+#
+# When executed from a git checkout, generate the ChangeLog from the git
+# history. When executed from an extracted distribution tarball, just
+# copy the distributed ChangeLog in the build directory (and if this
+# fails, or if no distributed ChangeLog file is present, complain and
+# give an error).
+#
+# We need the apparently useless dependency from another .PHONY target
+# `am--changelog-regen-hook' to work around a bug of Solaris make, which
+# doesn't execute the recipe of a target named as an existing file, even
+# if such target is declared `.PHONY' (yikes!)
+#
+.PHONY: am--changelog-regen-hook
+am--changelog-regen-hook:
+ChangeLog: am--changelog-regen-hook
+ $(AM_V_GEN)set -e; set -u; \
+## The ChangeLog should be regenerated unconditionally when working from
+## checked-out sources; otherwise, if we're working from a distribution
+## tarball, we expect the ChangeLog to be distributed, so check that it
+## is indeed present in the source directory.
+ if test -d $(srcdir)/.git; then \
+ rm -f $@-t \
+ && $(gitlog_to_changelog_command) \
+ $(gitlog_to_changelog_options) >$@-t \
+ && chmod a-w $@-t \
+ && mv -f $@-t $@ \
+ || exit 1; \
+ elif test ! -f $(srcdir)/$@; then \
+ echo "Source tree is not a git checkout, and no pre-existent" \
+ "$@ file has been found there" >&2; \
+ exit 1; \
+ fi
+
# Ensure tests are world-executable
dist-hook:
cd $(distdir)/tests && chmod a+rx *.test