VERSION=`date +%Y%m%d`

DESTDIR=
progname=sagator
etcdir=$(DESTDIR)/etc
bindir=$(DESTDIR)/usr/bin
sbindir=$(bindir)/../sbin
libdir=$(DESTDIR)/usr/lib/$(progname)
docdir=$(DESTDIR)/usr/share/doc/$(progname)
chrootdir=/var/spool/vscan
CLAMAV=yes
SCANNER_MODULES=base.py mimeparse.py decompress.py \
	clamav.py avg.py nodold.py icap.py sophie.py \
	spamassassin.py bogofilter.py qsf.py

# python module config
PYTHON=`python2 -c 'import sys; print "python"+str(sys.version_info[0])+"."+str(sys.version_info[1])'`
PYTHONPREFIX=/usr
CFLAGS=-I$(PYTHONPREFIX)/include/$(PYTHON)/ -I/usr/pkg/include
LIBS=-l$(PYTHON) -L$(PYTHONPREFIX)/lib/$(PYTHON)/config -L/usr/pkg/lib -lc -lm -lutil -lz -lbz2 -ldl -lpthread -lgmp
OBJS=$(PYTHONPREFIX)/lib/$(PYTHON)/config/python.o

all:	README.scanners compile

compile: libclamavmodule.so
	$(PYTHON) $(PYTHONPREFIX)/lib/$(PYTHON)/compileall.pyc -l -d . .

install: compile
	mkdir -p $(bindir) $(libdir) $(etcdir)/cron.daily $(docdir) \
	  $(DESTDIR)/$(chrootdir) $(sbindir) $(etcdir)/rc.d/init.d
	[ -f $(libdir)/config.py ] && mv $(libdir)/config.py $(libdir)/config.py.save || true
	cp -f *.py *.pyc $(libdir)
	ln -sf ../lib/$(progname)/sagator.py $(sbindir)/sagator
	ln -sf ../lib/$(progname)/sqback.py $(bindir)/sqback
	ln -sf ../lib/$(progname)/sgscan.py $(bindir)/sgscan
	ln -sf ../usr/lib/$(progname)/config.py $(etcdir)/$(progname).conf
	# install libclamav
	cp -f libclamavmodule.so $(libdir) || true
	# install init script
	cp scripts/sagator.init $(etcdir)/rc.d/init.d/sagator
	chmod +x $(etcdir)/rc.d/init.d/sagator
	# install makechroot
	cp scripts/makechroot.sh $(sbindir)/mkchroot.sagator
	# install freshclam.sagator
	echo "#!/bin/sh" > $(etcdir)/cron.daily/sagator
	echo "/usr/bin/freshclam --quiet --datadir=$(chrootdir)/var/lib/clamav \\" >> $(etcdir)/cron.daily/sagator
	echo '  && kill -HUP `cat /var/run/sagator-master.pid`' >> $(etcdir)/cron.daily/sagator
	chmod +x $(etcdir)/cron.daily/sagator
	echo "Don't forget to set chroot"

makeroot:
	./scripts/makechroot.sh $(DESTDIR)$(chrootdir)

clean:
	rm -f *~ */*~ *.pyc *.o *.so scripts/sagator.spec

README.scanners:	$(SCANNER_MODULES) stats.py
	rm -f README.scanners.t
	for i in `echo $(SCANNER_MODULES) | sed 's/\.py//g'`; do \
	  echo "Helpyfying $$i ..."; \
	  $(PYTHON) -c "import $$i; help($$i)" >> README.scanners.t; \
	done
	$(PYTHON) -c 'import stats; help(stats.status)' >> README.scanners.t
	awk 'BEGIN {class=1} / *class / {class=1} \
	     /^Help on module/ {class=1} \
	     /-------/ {if (class==1) {print ""};class=0} \
	     /Method resolution order:/ {if (class==1) {print ""};class=0} \
	     /Methods defined here:/ {if (class==1) {print ""};class=0} \
	     /__doc__/ {if (class==1) {print ""};class=0} \
	     {if (class==1) {print}}' \
	README.scanners.t > README.scanners
	rm -f README.scanners.t

libclamavmodule.o: libclamavmodule.c
	[ $(CLAMAV) = yes ] && \
	  gcc -g -c libclamavmodule.c $(CFLAGS); \

libclamavmodule.so: libclamavmodule.o
	[ $(CLAMAV) = yes ] && \
	  ld -g -shared -o libclamavmodule.so libclamavmodule.o $(OBJS) $(LIBS) -lclamav; \

version:
	echo "%define version $(VERSION)" > scripts/sagator.spec
	echo "%define rel 1" >> scripts/sagator.spec
	cat scripts/sagator.spec.in >> scripts/sagator.spec

pack:	version README.scanners clean
	(cd ..;tar cvjf snapshots/sagator-$(VERSION).tar.bz2 sagator/*)

betapack: version README.scanners clean
	(cd ..;tar cvjf snapshots/beta/sagator-$(VERSION).tar.bz2 sagator/*)

rpm:	clean pack
	rpmbuild -ta ../snapshots/sagator-$(VERSION).tar.bz2
	eval cp /usr/src/redhat/RPMS/i386/sagator-*$(VERSION)*rpm ../snapshots/

betarpm:	clean betapack
	rpmbuild -ta ../snapshots/beta/sagator-$(VERSION).tar.bz2
	eval cp /usr/src/redhat/RPMS/*/sagator-*$(VERSION)*rpm ../snapshots/beta/
