# -----------------------------------------------------------------------------
#	version control and automatic backup
# -----------------------------------------------------------------------------
#	Copyright (C) 1995 by Steffen Seeger, [seeger@physik.tu-chemnitz.de]
# -----------------------------------------------------------------------------
TAR		= tar
DATE		= $(shell date +%d-%b-%y)
# -----------------------------------------------------------------------------

VERSION		= $(MAJOR_RELEASE).$(MINOR_RELEASE).$(PATCH_LEVEL)
BACKUP_DIR	= $(ARCHIVE_DIR)/$(PROJECT)/$(VERSION)
BACKUP_NAME	= $(PROJECT)/$(VERSION)/$(DATE)
BACKUP		= $(ARCHIVE_DIR)/$(BACKUP_NAME)

DIST_DIR	= $(ARCHIVE_DIR)/$(PROJECT)
DIST_NAME	= $(PROJECT)-$(VERSION)
DISTRIBUTION	= $(ARCHIVE_DIR)/$(PROJECT)/$(PROJECT)-$(VERSION)

.PHONY:	patch_release minor_release major_release backup \
distribution not_published


$(BACKUP_DIR) $(DIST_DIR):
	mkdir -p $@

not_distributed:
	@if [ -f $(DISTRIBUTION).tar.gz ]; then \
		echo Error: version $(VERSION) already distributed;\
		exit -1;\
	fi

backup: not_distributed $(BACKUP_DIR)
	chmod u+w $(BACKUP_DIR)
	rm -f $(BACKUP).tar.gz
	set -e; cd ..; ln -s $(PROJECT) $(PROJECT)-$(DATE);\
	$(TAR) cfz $(BACKUP).tar.gz $(PROJECT)-$(DATE)/* $(PROJECT)-$(DATE)/.??*;\
	rm $(PROJECT)-$(DATE)
	chmod a-w $(BACKUP).tar.gz
	chmod a-w $(BACKUP_DIR)

$(DISTRIBUTION).tar.gz:	not_distributed distclean $(DIST_DIR) $(BACKUP_DIR)
	set -e; cd ..; ln -s $(PROJECT) $(PROJECT)-$(VERSION);\
	$(TAR) czf $(DISTRIBUTION).tar.gz $(PROJECT)-$(VERSION)/* $(PROJECT)-$(VERSION)/.??*;\
	chmod u+w $(BACKUP_DIR);\
	rm -r -f $(BACKUP_DIR) $(PROJECT)-$(VERSION)
	chmod a-w $(DISTRIBUTION).tar.gz

distribution: $(DISTRIBUTION).tar.gz

patch_release: distribution
	echo "PROJECT       = $(PROJECT)" > .version; \
	echo "MAJOR_RELEASE = $(MAJOR_RELEASE)" >> .version; \
	echo "MINOR_RELEASE = $(MINOR_RELEASE)" >> .version; \
	echo "PATCH_LEVEL   = `expr $(PATCH_LEVEL) + 1`" >> .version

minor_release:
	echo "PROJECT       = $(PROJECT)" > .version; \
	echo "MAJOR_RELEASE = $(MAJOR_RELEASE)" >> .version; \
	echo "MINOR_RELEASE = `expr $(MINOR_RELEASE) + 1`" >> .version; \
	echo "PATCH_LEVEL   = 1" >> .version
	$(MAKE) distribution

major_release:
	echo "PROJECT       = $(PROJECT)" > .version; \
	echo "MAJOR_RELEASE = `expr $(MAJOR_RELEASE) + 1`" >> .version; \
	echo "MINOR_RELEASE = 0" >> .version; \
	echo "PATCH_LEVEL   = 1" >> .version
	$(MAKE) distribution

