#
# @configure_input@
#
# Copyright (c) 1994-2008 Carnegie Mellon University.  All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
#
# 3. The name "Carnegie Mellon University" must not be used to
#    endorse or promote products derived from this software without
#    prior written permission. For permission or any legal
#    details, please contact
#      Carnegie Mellon University
#      Center for Technology Transfer and Enterprise Creation
#      4615 Forbes Avenue
#      Suite 302
#      Pittsburgh, PA  15213
#      (412) 268-7393, fax: (412) 268-7395
#      innovation@andrew.cmu.edu
#
# 4. Redistributions of any form whatsoever must retain the following
#    acknowledgment:
#    "This product includes software developed by Computing Services
#     at Carnegie Mellon University (http://www.cmu.edu/computing/)."
#
# CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
# THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
# FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
# AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
# OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#

SUBDIRS = man @PRE_SUBDIRS@ lib @SIEVE_SUBDIRS@ @SERVER_SUBDIRS@ \
	imtest @SNMP_SUBDIRS@ @EXTRA_SUBDIRS@
DISTSUBDIRS = doc

srcdir = @srcdir@
VPATH = @srcdir@

INSTALL = @INSTALL@

SHELL = /bin/sh
@SET_MAKE@

prefix = @prefix@
exec_prefix = @exec_prefix@
cyrus_prefix = @cyrus_prefix@

mandir = @mandir@

YACC = @YACC@
LEX = @LEX@
COMPILE_ET = @COMPILE_ET@

PACKAGE = cyrus-imapd
VERSION = 2.4.7
GIT_VERSION = $(VERSION).git$(shell date +'%Y%m%d%H%M')

all:: xversion
	@for d in  $(SUBDIRS); \
	do \
		(cd $$d; echo "### Making" all "in" `pwd`;	\
			$(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) all) || exit 1; \
	done

snapshot::
	@echo "creating snapshot $(GIT_VERSION)"
	@if [ \! -d snapshot ]; then mkdir snapshot ; fi
	@git archive --format=tar --prefix=$(PACKAGE)-$(GIT_VERSION)/ HEAD | tar -C snapshot/ -x -f -
	@echo "/* $(PACKAGE) $(GIT_VERSION) */" > snapshot/$(PACKAGE)-$(GIT_VERSION)/xversion.h
	@echo "#define _CYRUS_VERSION \"git$(VERSION)+`git log --pretty=oneline $(PACKAGE)-$(VERSION)..HEAD | wc -l`\"" >> snapshot/$(PACKAGE)-$(GIT_VERSION)/xversion.h
	@echo "#define CYRUS_GITVERSION \"`git log --abbrev=8 --pretty="%h %ci" -1 | cut -c 1-18`\"" >> snapshot/$(PACKAGE)-$(GIT_VERSION)/xversion.h
	@touch snapshot/$(PACKAGE)-$(GIT_VERSION)/xversion
	@cd snapshot/$(PACKAGE)-$(GIT_VERSION) ; sh SMakefile
	@for d in $(SUBDIRS) $(DISTSUBDIRS); \
	do \
	(cd snapshot/$(PACKAGE)-$(GIT_VERSION)/$$d; \
	if [ -f Makefile.dist ]; then \
	echo "### Making" snapshot "in" `pwd`; \
	$(MAKE) $(MFLAGS) YACC='$(YACC)' LEX='$(LEX)' \
	COMPILE_ET='$(COMPILE_ET)' -f Makefile.dist dist ; \
	fi) || exit 1; \
	done
	@echo "creating tarfile"
	tar -C snapshot -c -f - $(PACKAGE)-$(GIT_VERSION) | gzip -9 > $(PACKAGE)-$(GIT_VERSION).tar.gz
	@rm -rf snapshot

dist:: distgit
	@echo "creating configure"
	@cd dist/cyrus-imapd-$(VERSION) ; sh SMakefile
	@for d in $(SUBDIRS) $(DISTSUBDIRS); \
	do \
	(cd dist/cyrus-imapd-$(VERSION)/$$d; \
	if [ -f Makefile.dist ]; then \
	echo "### Making" dist "in" `pwd`; \
	$(MAKE) $(MFLAGS) YACC='$(YACC)' LEX='$(LEX)' \
	COMPILE_ET='$(COMPILE_ET)' -f Makefile.dist dist ; \
	fi) || exit 1; \
	done
	@echo "creating tarfile"
	@cd dist ; tar cf - cyrus-imapd-$(VERSION) | \
	gzip -9 > ../cyrus-imapd-$(VERSION).tar.gz
	rm -f distgit
	rm -rf dist

distgit:
	if [ \! -d dist ]; then mkdir dist ; fi
	@echo "checking out the distribution from tag $(PACKAGE)-$(VERSION)"
	git archive --format=tar --prefix=$(PACKAGE)-$(VERSION)/ $(PACKAGE)-$(VERSION) | tar -C dist -x -f -
	echo "/* Release $(PACKAGE)-$(VERSION) */" > dist/$(PACKAGE)-$(VERSION)/xversion.h
	echo "#define _CYRUS_VERSION \"v$(VERSION)\"" >> dist/$(PACKAGE)-$(VERSION)/xversion.h
	echo "#define CYRUS_GITVERSION \"`git log --abbrev=8 --pretty=\"%h %ci\" -1 | cut -d\" \" -f1,2`\"" >> dist/$(PACKAGE)-$(VERSION)/xversion.h
	touch dist/$(PACKAGE)-$(VERSION)/xversion
	touch distgit

xversion xversion.h:
	@echo "/* Development version */" > xversion.h.tmp
	@echo "#define _CYRUS_VERSION \"git$(VERSION)+`git log --pretty=oneline $(PACKAGE)-$(VERSION)..HEAD | wc -l`\"" >> xversion.h.tmp
	@echo "#define CYRUS_GITVERSION \"`git log --abbrev=8 --pretty=\"%h %ci\" -1 | cut -d\" \" -f1,2`\"" >> xversion.h.tmp
	@cmp -s xversion.h.tmp xversion.h || mv xversion.h.tmp xversion.h
	@rm -f xversion.h.tmp

install::
	$(srcdir)/install-sh -d ${DESTDIR}$(exec_prefix)/bin
	$(srcdir)/install-sh -d ${DESTDIR}$(exec_prefix)/lib
	$(srcdir)/install-sh -d ${DESTDIR}$(prefix)/include/cyrus
	$(srcdir)/install-sh -d ${DESTDIR}$(mandir)/man1
	$(srcdir)/install-sh -d ${DESTDIR}$(mandir)/man3
	$(srcdir)/install-sh -d ${DESTDIR}$(mandir)/man5
	$(srcdir)/install-sh -d ${DESTDIR}$(mandir)/man8
	@for d in  $(SUBDIRS); \
	do \
		(cd $$d; echo "### Making" install "in" `pwd`;	\
			$(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) install) || exit 1; \
	done

clean::
	@-for d in  $(SUBDIRS); \
	do \
		(cd $$d; echo "### Making" clean "in" `pwd`;	\
			$(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) clean ;	\
			echo "### Done with" `pwd`);		\
	done

distclean::
	@-for d in  $(SUBDIRS); \
	do \
		(cd $$d; echo "### Making" clean "in" `pwd`;	\
			$(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) distclean ; \
			echo "### Done with" `pwd`);		\
	done
	rm -f Makefile Makefile.bak \
	   config.status config.log config.cache config.h

depend::
	@for d in  $(SUBDIRS); \
	do \
		(cd $$d; echo "### Making" depend "in" `pwd`;	\
			$(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) depend) || exit 1; \
	done

Makefile: Makefile.in config.status
	$(SHELL) config.status
config.status: configure
	$(SHELL) config.status --recheck
configure: configure.in
	cd $(srcdir); rm -f config.cache; autoconf

checkdepend::

depend::
	echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep
	echo 'w' >>eddep
	cp Makefile Makefile.bak
	ed -s Makefile < eddep
	rm eddep
	echo '' >> Makefile
	echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> Makefile
	echo '# see make depend above' >> Makefile

# DO NOT DELETE THIS LINE -- make depend uses it

# The following rule ensures that "make depend" gets run at least
# once before a "make all".  The "depend" rule above removes
# this rule from the Makefile the first time the "make depend"
# has been run after the Makefile is generated by Configure

checkdepend:: depend

# IF YOU PUT STUFF HERE IT WILL GO AWAY
# see make depend above
