# Taken from Cairo - build/Makefile.am.changelog
# Modified to fit the Clutter build environment

CURR_CHANGELOG_VERSION=$(CLUTTER_MAJOR_VERSION).$$(echo "($(CLUTTER_MINOR_VERSION)+1)/2*2" | bc)
# examines $version
PREV_CHANGELOG_VERSION=$$(if test "x$$(echo "($$version-0.1)*2/2"|bc)" = "x$$(echo "$$version*2/2"|bc)"; \
			  then echo "$$version-$$(echo "$$version" | sed 's/[0-9]/0/g;s/[0-9]$$/2/')"; \
			  else echo "$$version-1.0"; \
			  fi | bc | sed 's/[.]0*/./;s/^0[.]\?$$/git-import/;s/[.]$$/.0/')

CHANGELOGS = ChangeLog \
	`version=$(CURR_CHANGELOG_VERSION); \
	version=$(PREV_CHANGELOG_VERSION); \
	while test "x$$version" != "xgit-import"; do \
		echo ChangeLog.pre-$$version; \
		version=$(PREV_CHANGELOG_VERSION); \
	done`

CLEANFILES += $(srcdir)/ChangeLog.cache-*

changelogs:
	@$(MAKE) $(AM_MAKEFLAGS) $(CHANGELOGS)

dist-hook: changelogs
	changelogs="$(CHANGELOGS)"; \
	for changelog in $$changelogs; do \
		cp $(srcdir)/$$changelog $(distdir)/ 2>/dev/null || \
		cp $$changelog $(distdir)/; \
	done

$(srcdir)/ChangeLog:
	@if test -d "$(srcdir)/.git"; then \
		version=$(CURR_CHANGELOG_VERSION); \
		prev=$(PREV_CHANGELOG_VERSION).0; \
		nearest_tag=`git describe | sed 's/-.*//'`; \
		before=$(srcdir)/ChangeLog.cache-$$prev..$$nearest_tag; \
		after=$(srcdir)/ChangeLog.cache-$$nearest_tag..; \
		$(MAKE) $(AM_MAKEFLAGS) $$before $$after && \
		echo Creating $@ && \
		{ echo '# Generated by configure.  Do not edit.'; echo; \
		  cat $$after; echo; cat $$before; } > $@; \
	else \
		test -f $@ || \
		(echo A git checkout is required to generate $@ >&2 && \
		 echo A git checkout is required to generate this file >> $@); \
	fi

DISTCLEANFILES += ChangeLog.cache-*

ChangeLog.cache-*..: .git

ChangeLog%: $(srcdir)/ChangeLog%

$(srcdir)/ChangeLog.cache-% $(srcdir)/ChangeLog.pre-%:
	@echo "Creating $@"
	@if test -d "$(srcdir)/.git"; then \
	    (cd "$(srcdir)" && \
	    version=$$(echo "$@" | sed 's/.*ChangeLog\([.].*-\)\?//'); \
	    if echo "$@" | grep -q '^ChangeLog[.]cache'; then \
	      spec=$$version; \
	    else \
	      to=$$version; \
	      test "x$$version" = x && version=$(CURR_CHANGELOG_VERSION); \
	      from=$(PREV_CHANGELOG_VERSION); \
	      test "x$$to" = x || to=$$to.0; \
	      test "x$$from" = xgit-import || from=$$from.0; \
	      spec=$$from..$$to; \
	    fi; \
	    $(top_srcdir)/build/missing --run git log --stat "$$spec") > $@.tmp \
	    && mv -f $@.tmp $@ \
	    || ($(RM) $@.tmp; \
	        echo Failed to generate $@, your $@ may be outdated >&2); \
	  else \
	    echo A git checkout is required to generate $@ >&2; \
	fi

.PHONY: changelogs ChangeLog $(srcdir)/ChangeLog
