#
# Makefile for FIAIF 
# Version: $Id: Makefile,v 1.99 2003/01/17 17:19:35 afu Exp $
#
# Copyright (C) 2002 Anders Peter Fugmann <anders at fugmann dot dhs dot org>
# This package comes with ABSOLUTELY NO WARRANTY
# Use strictly at your own risk.
#
# 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.
#
# Please drop me a line and give me your thoughts on this software.
# Patches are more than welcome.
#

INSTALL_SRC_PATH=/usr/share/fiaif
INSTALL_DOC_PATH=/usr/share/doc/fiaif
INSTALL_CONF_PATH=/etc/fiaif
INSTALL_INIT_PATH=/etc/init.d
INSTALL_MAN_PATH=/usr/share/man/man
INSTALL_PROG_PATH=/usr/sbin

DIST_PATH=$(HTML_PATH)/dist
BETA_PATH=$(DIST_PATH)/beta
HTML_PATH=/home/afu/fiaif

SRC_PATH=src/
CONF_PATH=conf/
MAN_PATH=man
DOC_PATH=doc/
PROG_PATH=prog/

INITD_LEVEL=09

INIT_FILE=fiaif
FAQ=doc/faq.txt
CHANGELOG=debian/changelog
DOC_FILES=$(CHANGELOG) debian/copyright todo doc/DHCP.txt \
	doc/reporting_bugs.txt doc/upgrade.txt

CONF_FILES=fiaif.conf zone.int zone.ext zone.dmz \
	reserved_networks private_networks \
	type_of_services

VERSION:=$(shell head -n1 $(CHANGELOG) | sed "s/.*(\(.*\)).*/\1/g")
VERSION_MAJOR=$(shell echo $(VERSION) | sed "s/\(.*\)-.*/\1/g")
VERSION_RELEASE=$(shell echo $(VERSION) | sed "s/.*-\(.*\)/\1/g")

TAR_VERSION:=$(shell echo $(VERSION) | sed s/-/_/g)

.PHONY: install uninstall install-config install-initd \
	clean all dist \
	debian tar rpm html 

all: install install-initd

install: VERSION
	install -d $(DESTDIR)/$(INSTALL_SRC_PATH) 
	install -d $(DESTDIR)/$(INSTALL_DOC_PATH) 
	install -m 700 -d $(DESTDIR)/$(INSTALL_CONF_PATH) 
	install -d $(DESTDIR)/$(INSTALL_INIT_PATH)
	install -d $(DESTDIR)/$(INSTALL_MAN_PATH)5
	install -d $(DESTDIR)/$(INSTALL_MAN_PATH)8
	install -d $(DESTDIR)/$(INSTALL_PROG_PATH)
	install -d $(DESTDIR)/var/lib/fiaif
	install -d $(DESTDIR)/var/lock/subsys

	install -m 644 $(SRC_PATH)/*sh $(DESTDIR)/$(INSTALL_SRC_PATH) 
	install -m 644 $(DOC_FILES) $(DESTDIR)/$(INSTALL_DOC_PATH)
	cat doc/changelog.Debian | gzip -9 >  $(DESTDIR)/$(INSTALL_DOC_PATH)/changelog.Debian.gz
	install -m 644 $(MAN_PATH)/*.8 $(DESTDIR)/$(INSTALL_MAN_PATH)8/
	install -m 644 $(MAN_PATH)/*.5 $(DESTDIR)/$(INSTALL_MAN_PATH)5/
	install -m 755 $(SRC_PATH)/$(INIT_FILE) $(DESTDIR)/$(INSTALL_INIT_PATH)
	install -m 755 $(PROG_PATH)/fiaif* $(DESTDIR)/$(INSTALL_PROG_PATH)
	install -m 644 VERSION $(DESTDIR)/$(INSTALL_SRC_PATH) 
	rm -f $(DESTDIR)/var/lib/fiaif/iptables

install-initd: 
	if [[ -d $(DESTDIR)/etc/rcS.d/ ]] ; then \
		if [[ ! -f $(DESTDIR)/etc/rcS.d/S$(INITD_LEVEL)$(INIT_FILE) ]]; then \
			ln -sf ../init.d/$(INIT_FILE) $(DESTDIR)/etc/rcS.d/S$(INITD_LEVEL)$(INIT_FILE); \
		fi \
	elif [[ -d $(DESTDIR)/etc/init.d/ && ! -L $(DESTDIR)/etc/init.d ]]; then \
		if [[ ! -f $(DESTDIR)/etc/init.d/rc3.d/S$(INITD_LEVEL)$(INIT_FILE) ]]; then \
			ln -sf ../init.d/$(INIT_FILE) $(DESTDIR)/etc/init.d/rc3.d/S$(INITD_LEVEL)$(INIT_FILE) ; \
			ln -sf ../init.d/$(INIT_FILE) $(DESTDIR)/etc/init.d/rc5.d/S$(INITD_LEVEL)$(INIT_FILE) ; \
		fi \
	elif [[ -d $(DESTDIR)/etc/rc.d/ ]]; then \
		if [[ ! -f $(DESTDIR)/etc/rc.d/rc3.d/S$(INITD_LEVEL)$(INIT_FILE) ]]; then \
			ln -sf ../init.d/$(INIT_FILE) $(DESTDIR)/etc/rc.d/rc3.d/S$(INITD_LEVEL)$(INIT_FILE) ; \
			ln -sf ../init.d/$(INIT_FILE) $(DESTDIR)/etc/rc.d/rc5.d/S$(INITD_LEVEL)$(INIT_FILE) ; \
		fi \
	fi

install-config: 
	install -m 600 --backup --suffix ".orig" $(addprefix $(CONF_PATH), $(CONF_FILES)) $(DESTDIR)$(INSTALL_CONF_PATH)

uninstall:
	rm -fr $(DESTDIR)/$(INSTALL_DOC_PATH)
	rm -f $(DESTDIR)/$(INSTALL_INIT_PATH)/$(INIT_FILE)
	rm -fr $(DESTDIR)/$(CONF_PATH)	
	rm -f $(DESTDIR)/etc/rc?.d/S$(LEVEL)$(INIT_FILE)

html:  
	cvs update -d -P
	install -d $(HTML_PATH)/img
	install -d $(HTML_PATH)/dist
	install -d $(HTML_PATH)/dist/beta
	install -d $(HTML_PATH)/man
	install -d $(HTML_PATH)/conf

	install -m 644 $(FAQ) $(HTML_PATH)
	install -m 644 html/favicon.ico $(HTML_PATH)
	install -m 644 html/*php $(HTML_PATH)/
	install -m 644 html/img/*png $(HTML_PATH)/img

	install -m 644 $(addprefix $(CONF_PATH), $(CONF_FILES)) $(HTML_PATH)/conf	
	for manpage in $(MAN_PATH)/*{5,8}; do \
		groff -man -Thtml $$manpage > $(HTML_PATH)/$$manpage.html; \
	done	

clean:
	rm -fr *~ 
	rm -f ../fiaif_*
	rm -fr debian/fiaif 
	rm -fr debian/fiaif_$(VERSION)
	rm -f debian/*debhelper debian/files debian/*substvars 
	rm -f /usr/src/rpm/SOURCES/* /usr/src/rpm/RPMS/noarch/*
	cd doc/fiaif; make clean
	rm -f VERSION

rpm: tar fiaif.spec
# RedHat is more than fucked up. I cannot make packages in `pwd`,
# but need to do it in /usr/src/rpm....
	install ../fiaif_$(VERSION).tar.gz /usr/src/rpm/SOURCES/
	rpm -ba --rmsource --clean fiaif.spec
	mv /usr/src/rpm/RPMS/noarch/fiaif-$(VERSION).noarch.rpm ../fiaif_$(VERSION).noarch.rpm
	mv /usr/src/rpm/SRPMS/fiaif-$(VERSION).src.rpm ../fiaif_$(VERSION).src.rpm

tar: clean VERSION fiaif.spec
	cd ..; find fiaif -type d -name CVS > /tmp/cvs_exclude
	cd ..; find fiaif -type f -name .cvsignore >> /tmp/cvs_exclude
	echo fiaif/html >> /tmp/cvs_exclude
	cd ..; tar zcf fiaif_$(VERSION).tar.gz -X /tmp/cvs_exclude fiaif/* 
	tar zxf ../fiaif_$(VERSION).tar.gz --directory debian
	mv debian/fiaif debian/fiaif-$(TAR_VERSION)
	cd debian; tar zcf ../../fiaif_$(VERSION).tar.gz fiaif-$(TAR_VERSION)/*
	rm -fr debian/fiaif-$(TAR_VERSION)
#rm -f /tmp/cvs_exclude

deb: clean
	fakeroot dpkg-buildpackage
	rm -fr debian/fiaif

fiaif.spec: $(CHANGELOG) 
	cp fiaif.spec /tmp/fiaif.spec
	cat /tmp/fiaif.spec | \
	        sed "s/\(Version:[^0-9]*\).*/\1$(VERSION_MAJOR)/g" | \
	        sed "s/\(Release:[^0-9]*\).*/\1$(VERSION_RELEASE)/g" > fiaif.spec
	cvs commit -m "new version $(VERSION)" fiaif.spec 

VERSION: $(CHANGELOG)  
	echo $(VERSION) > VERSION 

dist: clean deb tar rpm html 
	cvs tag -F "Fiaif-$$(echo $(VERSION) | sed s/\\\./_/g)"
	install -m 644 ../fiaif_$(VERSION)* $(DIST_PATH)
	cd $(DIST_PATH); apt-ftparchive packages . | gzip > Packages.gz
	cd $(DIST_PATH); apt-ftparchive sources . | gzip > Sources.gz

	install -m 644 ../fiaif_$(VERSION).noarch.rpm $(DIST_PATH)/
	echo $(VERSION) > $(HTML_PATH)/VERSION
	install -m 644 debian/changelog $(HTML_PATH)/

	rm -f $(DIST_PATH)/LATEST-IS-*
	touch $(DIST_PATH)/LATEST-IS-$(VERSION)

	cd $(DIST_PATH)/; md5sum fiaif* > md5sums

beta: clean deb tar rpm
	install -m 644 ../fiaif_$(VERSION)* $(BETA_PATH)
	cd $(BETA_PATH); apt-ftparchive packages . | gzip > Packages.gz
	cd $(BETA_PATH); apt-ftparchive sources . | gzip > Sources.gz
	install -m 644 debian/changelog $(HTML_PATH)/

	rm -f $(BETA_PATH)/LATEST-BETA-IS-*
	touch $(BETA_PATH)/LATEST-BETA-IS-$(VERSION)

	cd $(BETA_PATH)/; md5sum fiaif* > md5sums
