# `Topal': GPG/Pine integration
# 
# Copyright (C) 2001-2003  Phillip J. Brooke
# 
#     This program is free software; you can redistribute it and/or modify
#     it under the terms of the GNU General Public License as published by
#     the Free Software Foundation; either version 2 of the License, or
#     (at your option) any later version.
# 
#     This program is distributed in the hope that it will be useful,
#     but WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#     GNU General Public License for more details.
# 
#     You should have received a copy of the GNU General Public License
#     along with this program; if not, write to the Free Software
#     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

.PHONY:	all clean realclean distclean package check install distrib all2 checkrcs tagrcs

RELEASECODE=$(shell cat release)

# If you intend to redistribute this package, you will obviously need
# to substitute your own key id here.
MYKEY=0x50973B91


GENFILES=$(addprefix ./,version_id.ads help.ads help.adb b~topal.ads b~topal.adb)
CFILES=$(shell find . -maxdepth 1 -name \*.c)
ADSFILES=$(filter-out $(GENFILES),$(shell find . -maxdepth 1 -name \*.ads))
ADBFILES=$(filter-out $(GENFILES),$(shell find . -maxdepth 1 -name \*.adb))
OTHERFILES=Makefile README.html topal.man COPYING release mkversionid mkhelp help.txt mkdistrib pine-4.44-patch pine-4.50-patch pine-4.53-patch pine-4.58-patch
TOPALDEPS=ada-readline-c.o ada-echo-c.o externals-c.o version_id.ads help.ads help.adb $(ADSFILES) $(ADBFILES)

# The default action.
all:	topal check README.txt

all2:	package distrib

ada-readline-c.o:	ada-readline-c.c
	gcc -c -Wall -O2 $(TOPALDEBUG) ada-readline-c.c

ada-echo-c.o:	ada-echo-c.c
	gcc -c -Wall -O2 $(TOPALDEBUG) ada-echo-c.c

externals-c.o:	externals-c.c
	gcc -c -Wall -O2 $(TOPALDEBUG) externals-c.c

topal:	$(TOPALDEPS)
	gnatmake -gnatwa -gnato -O2 $(TOPALDEBUG) topal

topal.gz:	topal
	gzip -c9 topal > topal.gz

topal.gz.asc:	topal.gz
	-rm topal.gz.asc
	-gpg --detach-sign --armor --local-user=$(MYKEY) topal.gz

topal-ps:	$(TOPALDEPS)
	gnatmake -gnatwa -gnato -o topal-ps -O2 $(TOPALDEBUG) topal -bargs -static
	strip topal-ps

topal-ps.gz:	topal-ps
	gzip -c9 topal-ps > topal-ps.gz

topal-ps.gz.asc:	topal-ps.gz
	-rm topal-ps.gz.asc
	-gpg --detach-sign --armor --local-user=$(MYKEY) topal-ps.gz

version_id.ads:	mkversionid release
	./mkversionid $(RELEASECODE)

help.ads help.adb: mkhelp help.txt
	./mkhelp

README.txt:	README.html
	lynx -dont_wrap_pre -dump README.html > README.txt

check:	
	weblint README.html

install:	all
	@echo Sorry, install doesn\'t actually install anything at the moment.
	@echo Please copy the following files to where you actually want them:
	@echo .. The executable: topal
	@echo .. The documentation: README.html README.txt COPYING
	@echo .. The manual pages: topal.man
	@echo .. .. \(Install it as topal.1\)

clean:
	-rm *.o *.ali $(GENFILES)
# Clean packaging directories.
	-rm -rf topal-[0-9]*

distclean realclean:	clean
	-rm topal topal.gz topal.gz.asc topal-ps topal-ps.gz topal-ps.gz.asc README.txt topal-package*.{tgz,tgz.sig,tgz.asc} *~
	-rm -rf www www.bak

package:	check topal-package-$(RELEASECODE).tgz topal-package-$(RELEASECODE).tgz.asc

topal-package-$(RELEASECODE).tgz:	$(CFILES) $(ADSFILES) $(ADBFILES) $(OTHERFILES) README.txt
	-rm -rf topal-$(RELEASECODE)
	mkdir topal-$(RELEASECODE) && \
	cp -r $(CFILES) $(ADSFILES) $(ADBFILES) $(OTHERFILES) README.txt topal-$(RELEASECODE) && \
	tar cvzf topal-package-$(RELEASECODE).tgz topal-$(RELEASECODE)


topal-package-$(RELEASECODE).tgz.asc:	topal-package-$(RELEASECODE).tgz
	-rm topal-package-$(RELEASECODE).tgz.asc
	-gpg --detach-sign --armor --local-user=$(MYKEY) topal-package-$(RELEASECODE).tgz

distrib:	 topal-package-$(RELEASECODE).tgz.asc topal.gz.asc topal-ps.gz.asc mkdistrib release
	-rm -rf www
	-mkdir www && \
	cp topal-package-$(RELEASECODE).tgz topal-package-$(RELEASECODE).tgz.asc topal.gz topal.gz.asc topal-ps.gz topal-ps.gz.asc README.html COPYING pine-*-patch release www ; \
	(cd www && ../mkdistrib $(RELEASECODE))

# This target will be useless to anyone without the RCS files....
checkrcs:	
	-for name in $$(find . -maxdepth 1 -type f); do ls -l RCS/$${name},v;done
	-for name in $$(ls RCS); do ls -l $$(basename $${name} ,v);done

# This target will be useless to anyone without the RCS files....
tagrcs:
	rcs -nrel-$$(echo $(RELEASECODE)|sed 's/\./-/g'): RCS/*
