#
# A customized version of the apple generic versioning scheme
# (See /System/Developer/Makefiles/VersioningSystems/apple-generic.make)
#
#
# These variables should be setup (pretty much as follows) in the makefiles
# which include this one:
#
#	NAME=$(CARBONCORENAME)
#	VERSION_FILE=Version		# this file needs to be checked into cvs
#	include $(VERSION_FILE)
#	VERSION_INFO_CVS=                               YES
#	RC_SUBMIT_TARGETS=  Yum Beaker
#	include /System/Developer/Makefiles/Carbon/version.make
#
SILENT=@

what-version:
	$(SILENT)$(ECHO) "The current $(NAME) version is $(CURRENT_PROJECT_VERSION).$(CURRENT_PROJECT_SUBVERSION)"

new-version:
ifeq "" "$(NEW_VERSION)"
	$(SILENT) $(ECHO) "*** The NEW_VERSION make variable must be set."
	$(SILENT) $(ECHO) "*** The current version is: $(CURRENT_PROJECT_VERSION)"
	$(SILENT) $(ECHO) ""
	$(SILENT) exit 1
endif
	$(SILENT) $(SED) "s%^\([    ]*\)CURRENT_PROJECT_VERSION[    ]*=.*$$%\1CURRENT_PROJECT_VERSION = $(NEW_VERSION)%" $(VERSION_FILE) > $(VERSION_FILE).new
	$(SILENT) $(MV) $(VERSION_FILE).new $(VERSION_FILE)
ifeq "$(VERSION_INFO_CVS)" "YES"
	$(SILENT) $(CVS) commit -m "Change version to $(NEW_VERSION)" $(VERSION_FILE)
endif

next-version:
	$(SILENT) $(MAKE) new-version NEW_VERSION=`$(ECHO) $(CURRENT_PROJECT_VERSION) | $(SED) 's%\..*$$%%' | $(AWK) '{print $$1 + 1}'`

new-subversion:
ifeq "" "$(NEW_SUBVERSION)"
	$(SILENT) $(ECHO) "*** The NEW_SUBVERSION make variable must be set."
	$(SILENT) $(ECHO) "*** The current sub-version is: $(CURRENT_PROJECT_VERSION)"
	$(SILENT) $(ECHO) ""
	$(SILENT) exit 1
endif
	$(SILENT) $(SED) "s%^\([    ]*\)CURRENT_PROJECT_SUBVERSION[    ]*=.*$$%\1CURRENT_PROJECT_SUBVERSION = $(NEW_SUBVERSION)%" $(VERSION_FILE) > $(VERSION_FILE).new
	$(SILENT) $(MV) $(VERSION_FILE).new $(VERSION_FILE)
ifeq "$(VERSION_INFO_CVS)" "YES"
	$(SILENT) $(CVS) commit -m "Change sub-version to $(NEW_SUBVERSION)" $(VERSION_FILE)
endif 

next-subversion:
	$(SILENT) $(MAKE) new-subversion NEW_SUBVERSION=`$(ECHO) $(CURRENT_PROJECT_SUBVERSION) | $(SED) 's%\..*$$%%' | $(AWK) '{print $$1 + 1}'`

ifeq "" "$(RC_SUBMIT_TOOL)"
RC_SUBMIT_TOOL = /Network/Servers/seaport/release/bin/submitproject
endif

ifeq "" "$(RC_PROJECT_NAME)"
RC_PROJECT_NAME = $(NAME)
endif

submit:
ifeq "" "$(RC_SUBMIT_TARGETS)"
	$(SILENT) $(ECHO) "*** The RC_SUBMIT_TARGETS make variable must be set"
	$(SILENT) $(ECHO) "*** to the list of RC targets to which to submit."
	$(SILENT) exit 1
endif
	$(RC_SUBMIT_TOOL) -version $(RC_PROJECT_NAME)-$(CURRENT_PROJECT_VERSION) . $(RC_SUBMIT_TARGETS)


integrate:
ifeq "$(VERSION_INFO_CVS)" "YES"
	$(SILENT) if $(CVS) -q -n update | $(AWK) '$$1 == "C" || $$1 == "M" {exit 1}' ; then \
		$(CVS) tag $(NAME)-`$(ECHO) $(CURRENT_PROJECT_VERSION) | $(SED) 's%\.%~%g'` ; \
		$(ECHO) ; \
		$(ECHO) "Integrated $(NAME)-$(CURRENT_PROJECT_VERSION)" ; \
	else									\
		$(ECHO) "*** Conflicts or uncommitted files during update." ;	\
		$(ECHO) "*** Commit all files or update by hand and try again." ; \
		exit 1 ;							\
	fi
else
	$(SILENT) $(ECHO) "Do not know how to integrate this project without CVS."
endif
