# $Id: PTmakefile,v 1.12 2000/07/24 21:26:59 carlo Exp $
#
# ProtoType maintainers makefile
#
# Copyright (C) 1999-2000, by
#
#   Carlo Wood, Run on IRC <carlo@alinoe.com>
#   RSA-1024 0x624ACAD5 1997-01-26                    Sign & Encrypt
#   Fingerprint16 = 32 EC A7 B6 AC DB 65 A6  F6 F6 55 DD 1C DC FF 61
#
# All rights reserved.
#
# See the file LICENSE for copyright information.
#
# This file may be distributed under the terms of the Q Public License 1.0
# as defined by Troll Tech AS of Norway and appearing in the file LICENSE.QPL
# included in the packaging of this file.
#
#-----------------------------------------------------------------------------

ifeq (acinclude.m4,$(wildcard acinclude.m4))
ACLOCAL_M4=aclocal.m4
endif

ifeq (Makefile,$(wildcard Makefile))
include Makefile
endif

MAJOR_VERSION:=${shell echo "$(VERSION)" | cut -d. -f1}
MINOR_VERSION:=${shell echo "$(VERSION)" | cut -d. -f2}

TAG:=${shell echo "V$(VERSION)" | sed -e 's/\./_/g'}

LOCAL_FILES=$(EXCLUDE_CVS_FILES) rpm .cvsignore makefile index.html index.html.in $(SPECFILE).in $(PACKAGE).lsm.in

ifeq (Makefile.am,$(wildcard Makefile.am))
GENERATED_FILES=$(srcdir)/config.h.in $(ACLOCAL_M4) configure $(srcdir)/stamp-h.in Makefile.in .deps $(SPECFILE) ChangeLog $(INCLUDE_NON_CVS_FILES)
else
GENERATED_FILES=$(srcdir)/config.h.in $(ACLOCAL_M4) configure $(srcdir)/stamp-h.in $(SPECFILE) ChangeLog $(INCLUDE_NON_CVS_FILES)
endif

PREVTAG=`cat .prevtag`

# Make sure the ChangeLog is up to date
.PHONY: setup-dist release tar rpm cvslog ChangeLog

setup-dist:
	autoheader
	automake --foreign
	aclocal
	autoconf
	autoheader
	configure --enable-maintainer-mode

release: cvslog tar index.html rpm
	$(INSTALL) -m 644 $(REDHAT)/SRPMS/$(PACKAGE)-$(VERSION)-$(REL).src.rpm $(WWWDIR)
	$(INSTALL) -m 644 $(REDHAT)/RPMS/$(TARGET)/$(PACKAGE)-$(VERSION)-$(REL).$(TARGET).rpm $(WWWDIR)
	$(INSTALL) -m 644 $(REDHAT)/SOURCES/$(PACKAGE)-$(VERSION).tar.gz $(WWWDIR)
	$(INSTALL) -m 644 index.html $(WWWDIR)
	$(INSTALL) -m 644 $(PACKAGE).lsm $(WWWDIR)
	$(INSTALL) -m 644 cvslog-$(VERSION)*.html $(WWWDIR)
	rm cvslog-$(VERSION)*.html
	cvs tag $(TAG)
	echo "$(TAG)" > .prevtag
	date +%j > .release_day

tar: $(GENERATED_FILES)
	rm -rf /tmp/$(PACKAGE)-$(VERSION)
	mkdir /tmp/$(PACKAGE)-$(VERSION)
	cp -pr $(GENERATED_FILES) /tmp/$(PACKAGE)-$(VERSION)
	( for i in `find . -type d ! -name CVS ! -name .deps -print`; do \
	  files=`grep '^/' $$i/CVS/Entries | sed -e 's%^/%%' -e 's%/.*$$%%'`; \
	  if [ "$$i" != "." ]; then \
	    mkdir /tmp/$(PACKAGE)-$(VERSION)/$$i; \
	  fi; \
	  for j in $$files; do \
	    cp -p $$i/$$j /tmp/$(PACKAGE)-$(VERSION)/$$i/$$j; \
	  done; \
	done; \
	)
	( list='$(LOCAL_FILES)'; for i in $$list; do \
	    rm -rf /tmp/$(PACKAGE)-$(VERSION)/$$i; \
	  done; \
	)
	tar czf $(REDHAT)/SOURCES/$(PACKAGE)-$(VERSION).tar.gz -C /tmp $(PACKAGE)-$(VERSION)
	rm -rf /tmp/$(PACKAGE)-$(VERSION)

cvslog:
	@( \
	   D1=`cat .release_day`; \
	   D2=`date +%j`; \
	   DD=`echo "$$D1 $$D2" | awk '{ printf("%d\n", $$2 - $$1) }'`; \
	   echo "Last release was $$DD days ago."; \
	   cvs2html -e -r$(PREVTAG):HEAD -o cvslog-$(VERSION); \
	 )

rpm: tar
	rpm --rcfile /usr/lib/rpm/rpmrc:rpm/rpmrc --target $(TARGET) --sign --clean -ba $(SPECFILE)

$(SPECFILE): $(SPECFILE).in
	cvs commit $(SPECFILE).in
	sed -e 's/@VERSION@/$(VERSION)/g' $(SPECFILE).in | grep -B2000 '@CHANGELOG@' | grep -v '@CHANGELOG@' > $(SPECFILE)
	echo -n "%changelog" >> $(SPECFILE)
	cvs log $(SPECFILE).in | \
	  grep -A2000 '^-----' | \
	  egrep -v '^-----|^=====|^revision' | \
	  awk -F'[ ;]' --assign lastdate="" '{ if ($$0~/^date: /) { \
	    if (lastdate != $$2) { \
	      lastdate=$$2; \
	      printf("\n* "); \
	      system("echo -n `date --date \""$$2" "$$3"\" \"+%a %b %d %Y\"`"); \
	      printf(" Carlo Wood <carlo@gnu.org>\n"); \
	    } \
	  } else if ($$0~/^[A-Z]/) { printf("- %s\n", $$0); } else if ($$0~/./) { printf("  %s\n", $$0); } else {print} }' >> $(SPECFILE)
	grep -A2000 '@CHANGELOG@' $(SPECFILE).in | grep -v '@CHANGELOG@' >> $(SPECFILE)

ChangeLog:
	@( echo "/usr/local/bin/cvs \`echo \"\$$*\" | sed -e 's%1970%1990%'\`" > cvs; \
	    chmod 755 cvs; )
	rcs2log > ChangeLog
	@rm cvs

