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
PYTHONVER=python2.2
CFLAGS=-I/usr/include/$(PYTHONVER)/
LIBS=-l$(PYTHONVER) -L/usr/lib/$(PYTHONVER)/config -lc -lpthread -ldl -lm -lutil -lz -lbz2 -lgmp
OBJS=/usr/lib/$(PYTHONVER)/config/python.o

all:	README.scanners compile

compile: libclamavmodule.so
	$(PYTHONVER) /usr/lib/$(PYTHONVER)/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

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 ..."; \
	  $(PYTHONVER) -c "import $$i; help($$i)" >> README.scanners.t; \
	done
	$(PYTHONVER) -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 -o libclamavmodule.o $(CFLAGS); \

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

pycompatmodule:
	gcc -c pycompatmodule.c -o pycompatmodule.o $(CFLAGS)
	ld -shared -o pycompatmodule.so pycompatmodule.o $(OBJS) $(LIBS)
	strip pycompatmodule.so

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/
