# To make real stable releases or devel snapshots, use either:
# 	make release-check
# or	make release-publish

TAR_OPTIONS = --owner=0 --group=0

RELEASE_UPLOAD_HOST = clutter-project.org
RELEASE_UPLOAD_USER = clutter
RELEASE_UPLOAD_DIR  = $(RELEASE_UPLOAD_USER)@$(RELEASE_UPLOAD_HOST):~$(RELEASE_UPLOAD_USER)/upload-source

RELEASE_URL_BASE = http://source.clutter-project.org/sources/clutter
RELEASE_URL      = $(RELEASE_URL_BASE)/$(CLUTTER_MAJOR_VERSION).$(CLUTTER_MINOR_VERSION)

release-tag:
	@if test "x$(CLUTTER_RELEASE_STATUS)" = "xgit"; then \
	  echo "Cannot tag a Git version; please, update the Clutter version" >&2; \
	else \
	  if test -d "$(top_srcdir)/.git"; then \
	    echo "Tagging release $(CLUTTER_VERSION)..." ; \
	    $(top_srcdir)/build/missing --run git tag \
	 	-s \
	      	-m "Clutter $(CLUTTER_VERSION) ($(CLUTTER_RELEASE_STATUS))" \
		$(CLUTTER_VERSION) ; \
	  else \
	    echo A git checkout is required to tag a release >&2; \
	  fi \
	fi

release-check: release-verify-even-micro release-verify-sane-changelogs
	TAR_OPTIONS="$(TAR_OPTIONS)" $(MAKE) $(AM_MAKEFLAGS) distcheck

release-verify-sane-changelogs: changelogs
	@echo -n "Checking that the ChangeLog files are sane..."
	@if grep -q "is required to generate" $(CHANGELOGS); then \
	  (echo "Ouch." && \
	   echo "Some of the ChangeLogs are not generated correctly." && \
	   echo "Remove ChangeLog* and make changelogs" && false); else :; fi
	@echo "Good."

release-verify-even-micro:
	@echo -n "Checking that $(VERSION) has an even micro component..."
	@test "$(CLUTTER_MICRO_VERSION)" = "`echo $(CLUTTER_MICRO_VERSION)/2*2 | bc`" \
	  || (echo "Ouch." && \
	      echo "The version micro component '$(CLUTTER_MICRO_VERSION)' is not an even number." && \
	      echo "The version in configure.ac must be incremented before a new release." && \
	      false)
	@echo "Good."

release-upload: $(distdir).tar.bz2
	@scp $(distdir).tar.bz2 $(RELEASE_UPLOAD_DIR)

release-message:
	@echo "Release URL: $(RELEASE_URL)/$(distdir).tar.bz2"
	@echo "Release checksum: $(RELEASE_URL)/$(disdir).sha256sum"

release-publish: release-check
	$(MAKE) $(AM_MAKEFLAGS) release-tag
	$(MAKE) $(AM_MAKEFLAGS) release-upload
	$(MAKE) $(AM_MAKEFLAGS) release-message
	
.PHONY: \
	release-check \
	release-message \
	release-publish \
	release-tag \
	release-upload \
	release-verify-even-micro \
	release-verify-sane-changelogs