#
# Files from which this is generated (inside directory `autoconf/make'):
#
#   package.mk          # package name and distribution details
#   vars.mk             # compilation, shell and linking variables
#   filelist.mk         # lists of files (autogenerated)
#   unreal.mk           # phony targets
#   modules.mk          # module linking rules (autogenerated)
#   rules.mk            # compilation rules
#   link.mk             # real top-level targets
#   depend.mk           # dependencies (autogenerated)
#
#

#
# Variables for Make.
#

srcdir = .

prefix = 
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
infodir = ${prefix}/info
mandir = ${prefix}/man
etcdir = /etc
datadir = ${prefix}/share
sbindir = ${exec_prefix}/sbin




SHELL = /bin/sh
CC = cc
LD = ld
DO_GZIP = gzip -f9
INSTALL = /usr/bin/install -c -o root -g wheel
INSTALL_DATA = install  -o root -g wheel -m 444
UNINSTALL = rm -f

LDFLAGS = -r
DEFS = -DHAVE_CONFIG_H
CFLAGS = -fno-common -I/usr/include/mysql -fno-omit-frame-pointer -pipe -no-cpp-precomp
CPPFLAGS = -I/usr/local/include -I$(srcdir)/src/include -Isrc/include $(DEFS)
LIBS = -L/usr/local/lib   -lgdbm  -pipe -no-cpp-precomp -L/usr/lib/mysql -lmysqlclient -lz -lm

testdb := /tmp/qsftest.db
testfile := /tmp/qsftest.txt
testbackends :=  obtree btree list GDBM MySQL

alltarg = qsf

# EOF
#
# Package name, version, and distribution files.
#

package = qsf
version = 1.2.7
PACKAGE = qsf

distfiles =		\
$(srcdir)/README	\
$(srcdir)/autoconf	\
$(srcdir)/configure	\
$(srcdir)/doc		\
$(srcdir)/src		\
$(srcdir)/test		\
$(srcdir)/debian	\
$(srcdir)/extra

# EOF
# Automatically generated file listings
#
# Creation time: Tue Aug 28 14:27:40 BST 2007

allsrc = src/library.c \
src/md5.c \
src/db/obtree.c \
src/db/list.c \
src/db/main.c \
src/db/gdbm.c \
src/db/btree.c \
src/db/sqlite.c \
src/db/mysql.c \
src/main/help.c \
src/main/options.c \
src/main/version.c \
src/main/main.c \
src/main/log.c \
src/main/tick.c \
src/spam/update.c \
src/spam/merge.c \
src/spam/alloc.c \
src/spam/train.c \
src/spam/cksum.c \
src/spam/benchmark.c \
src/spam/check.c \
src/spam/plaintext.c \
src/spam/dump.c \
src/spam/token.c \
src/spam/db.c \
src/spam/prune.c \
src/spam/allowlist.c \
src/message/parse.c \
src/message/alloc.c \
src/message/read.c \
src/message/rfc2047.c \
src/message/header.c \
src/message/qp.c \
src/message/dump.c \
src/message/base64.c \
src/tests/gtube.c \
src/tests/main.c \
src/tests/imgcount.c \
src/tests/urls.c \
src/tests/gibberish.c \
src/tests/attached_files.c \
src/tests/html.c \
src/mailbox/alloc.c \
src/mailbox/count.c \
src/mailbox/select.c \
src/mailbox/scan.c

allobj = src/library.o \
src/md5.o \
src/db/obtree.o \
src/db/list.o \
src/db/main.o \
src/db/gdbm.o \
src/db/btree.o \
src/db/sqlite.o \
src/db/mysql.o \
src/main/help.o \
src/main/options.o \
src/main/version.o \
src/main/main.o \
src/main/log.o \
src/main/tick.o \
src/spam/update.o \
src/spam/merge.o \
src/spam/alloc.o \
src/spam/train.o \
src/spam/cksum.o \
src/spam/benchmark.o \
src/spam/check.o \
src/spam/plaintext.o \
src/spam/dump.o \
src/spam/token.o \
src/spam/db.o \
src/spam/prune.o \
src/spam/allowlist.o \
src/message/parse.o \
src/message/alloc.o \
src/message/read.o \
src/message/rfc2047.o \
src/message/header.o \
src/message/qp.o \
src/message/dump.o \
src/message/base64.o \
src/tests/gtube.o \
src/tests/main.o \
src/tests/imgcount.o \
src/tests/urls.o \
src/tests/gibberish.o \
src/tests/attached_files.o \
src/tests/html.o \
src/mailbox/alloc.o \
src/mailbox/count.o \
src/mailbox/select.o \
src/mailbox/scan.o \
src/db.o \
src/main.o \
src/spam.o \
src/message.o \
src/tests.o \
src/mailbox.o

alldep = src/library.d \
src/md5.d \
src/db/obtree.d \
src/db/list.d \
src/db/main.d \
src/db/gdbm.d \
src/db/btree.d \
src/db/sqlite.d \
src/db/mysql.d \
src/main/help.d \
src/main/options.d \
src/main/version.d \
src/main/main.d \
src/main/log.d \
src/main/tick.d \
src/spam/update.d \
src/spam/merge.d \
src/spam/alloc.d \
src/spam/train.d \
src/spam/cksum.d \
src/spam/benchmark.d \
src/spam/check.d \
src/spam/plaintext.d \
src/spam/dump.d \
src/spam/token.d \
src/spam/db.d \
src/spam/prune.d \
src/spam/allowlist.d \
src/message/parse.d \
src/message/alloc.d \
src/message/read.d \
src/message/rfc2047.d \
src/message/header.d \
src/message/qp.d \
src/message/dump.d \
src/message/base64.d \
src/tests/gtube.d \
src/tests/main.d \
src/tests/imgcount.d \
src/tests/urls.d \
src/tests/gibberish.d \
src/tests/attached_files.d \
src/tests/html.d \
src/mailbox/alloc.d \
src/mailbox/count.d \
src/mailbox/select.d \
src/mailbox/scan.d

#
# Rules for all phony targets.
#

.PHONY: all help dep depend depclean make \
  check test memtest benchmark bigbenchmark \
  clean distclean cvsclean \
  index manhtml indent indentclean \
  changelog doc dist release \
  install uninstall \
  rpmbuild srpm rpm deb

all: $(alltarg)

help:
	@echo 'This Makefile has the following utility targets:'
	@echo
	@echo '  all             build all binary targets'
	@echo '  doc             regenerate text version of man page'
	@echo '  install         install compiled package and manual'
	@echo '  uninstall       uninstall the package'
	@echo '  check / test    run standardised tests on the compiled binary'
	@echo
	@echo 'Developer targets:'
	@echo
	@echo '  make            rebuild the Makefile (after adding new files)'
	@echo '  dep / depend    rebuild .d (dependency) files'
	@echo '  clean           remove .o (object) and .c~ (backup) files'
	@echo '  depclean        remove .d (dependency) files'
	@echo '  indentclean     remove files left over from "make indent"'
	@echo '  distclean       remove everything not distributed'
	@echo '  cvsclean        remove everything not in CVS'
	@echo
	@echo '  index           generate an HTML index of source code'
	@echo '  manhtml         output HTML man page to stdout'
	@echo '  indent          reformat all source files with "indent"'
	@echo '  changelog       generate doc/changelog from CVS log info'
	@echo
	@echo '  memtest         run "make test" using valgrind to find faults'
	@echo '  benchmark       run benchmarking tests'
	@echo '  bigbenchmark    run many benchmarking tests to make a graph'
	@echo
	@echo '  dist            create a source tarball for distribution'
	@echo '  rpm             build a binary RPM (passes $$RPMFLAGS to RPM)'
	@echo '  srpm            build a source RPM (passes $$RPMFLAGS to RPM)'
	@echo '  deb             build a binary Debian package'
	@echo '  release         dist+rpm+srpm'
	@echo
	@echo 'Note that "test", "memtest", and "{,big}benchmark" can be passed'
	@echo 'additional environment variables: BACKENDS is a space separated'
	@echo 'list of backends to test (default is to test all) and MYSQLDB'
	@echo 'is a database spec for testing the MySQL backend, in the same'
	@echo 'format as for qsf -d, eg MYSQLDB=database=foo;host=...'
	@echo

make:
	echo > $(srcdir)/autoconf/make/filelist.mk
	echo > $(srcdir)/autoconf/make/modules.mk
	cd $(srcdir); \
	bash autoconf/scripts/makemake.sh \
	     autoconf/make/filelist.mk \
	     autoconf/make/modules.mk
	sh ./config.status
	
dep depend: $(alldep)
	echo '#' > $(srcdir)/autoconf/make/depend.mk
	echo '# Dependencies.' >> $(srcdir)/autoconf/make/depend.mk
	echo '#' >> $(srcdir)/autoconf/make/depend.mk
	echo >> $(srcdir)/autoconf/make/depend.mk
	cat $(alldep) >> $(srcdir)/autoconf/make/depend.mk
	sh ./config.status

clean:
	rm -f $(allobj)
	find . -type f -name "*.c~" -exec rm -f '{}' ';'
	rm -f memtest-out-*
	rm -f benchmark-report benchmark-data-* benchmark-graph-*

depclean:
	rm -f $(alldep)

indentclean:
	cd $(srcdir) && for FILE in $(allsrc); do rm -fv ./$${FILE}~; done

distclean: clean depclean
	rm -f $(alltarg) src/include/config.h
	rm -rf $(package)-$(version).tar* $(package)-$(version) BUILD-DEB
	rm -f *.rpm *.deb
	rm -f *.html config.*
	rm -f test.db trace
	rm -f .test-spam .test-non-spam
	rm -f .test-benchmark-spam .test-benchmark-non-spam
	rm -f .testdump-a .testdump-b .testdump-c
	rm -f fakemail mboxsplit gmon.out
	rm Makefile

cvsclean: distclean
	rm -f doc/lsm
	rm -f doc/$(package).spec
	rm -f doc/quickref.1
	rm -f doc/quickref.txt
	rm -f configure
	rm -f doc/changelog ChangeLog
	cat /dev/null > $(srcdir)/autoconf/make/depend.mk
	cat /dev/null > $(srcdir)/autoconf/make/filelist.mk
	cat /dev/null > $(srcdir)/autoconf/make/modules.mk

doc: doc/quickref.txt

index:
	(cd $(srcdir); sh autoconf/scripts/index.sh $(srcdir)) > index.html

manhtml:
	@man2html ./doc/quickref.1 \
	| sed -e '1,/<BODY/d' -e '/<\/BODY/,$$d' \
	      -e 's|<A [^>]*>&nbsp;</A>||ig' \
	      -e 's|<A [^>]*>\([^<]*\)</A>|\1|ig' \
	      -e '/<H1/d' -e 's|\(</H[0-9]>\)|\1<P>|ig' \
	      -e 's/<DL COMPACT>/<DL>/ig' \
	      -e 's/&lt;[0-9A-Za-z_.-]\+@[0-9A-Za-z_.-]\+&gt;//g' \
	      -e 's|<I>\(http://.*\)</I>|<A HREF="\1">\1</A>|ig' \
	| sed -e '1,/<HR/d' -e '/<H2>Index/,/<HR/d' \

indent:
	cd $(srcdir) && indent -npro -kr -i8 -cd42 -c45 $(allsrc)

changelog:
	@which cvs2cl >/dev/null 2>&1 || ( \
	  echo '*** Please put cvs2cl in your PATH'; \
	  echo '*** Get it from http://www.red-bean.com/cvs2cl/'; \
	  exit 1; \
	)
	rm -f $(srcdir)/ChangeLog
	cd $(srcdir) && cvs2cl -S -P
	mv -f $(srcdir)/ChangeLog doc/changelog

dist: doc
	test -d $(srcdir)/CVS && $(MAKE) changelog || :
	rm -rf $(package)-$(version)
	mkdir $(package)-$(version)
	cp -dprf Makefile $(distfiles) $(package)-$(version)
	cd $(package)-$(version); $(MAKE) distclean
	-cp -dpf doc/changelog      $(package)-$(version)/doc/
	cp -dpf doc/lsm             $(package)-$(version)/doc/
	cp -dpf doc/$(package).spec $(package)-$(version)/doc/
	cp -dpf doc/quickref.txt    $(package)-$(version)/doc/
	chmod 644 `find $(package)-$(version) -type f -print`
	chmod 755 `find $(package)-$(version) -type d -print`
	chmod 755 `find $(package)-$(version)/autoconf/scripts`
	chmod 755 $(package)-$(version)/configure
	chmod 755 $(package)-$(version)/debian/rules
	rm -rf DUMMY `find $(package)-$(version) -type d -name CVS` \
	 `find $(package)-$(version) -type f -name .cvsignore`
	tar cf $(package)-$(version).tar $(package)-$(version)
	rm -rf $(package)-$(version)
	-cat $(package)-$(version).tar \
	 | bzip2 > $(package)-$(version).tar.bz2 \
	 || rm -f $(package)-$(version).tar.bz2
	$(DO_GZIP) $(package)-$(version).tar

.test-spam:
	$(CC) $(CFLAGS) $(CPPFLAGS) -o fakemail $(srcdir)/autoconf/scripts/fakemail.c
	./fakemail \
	  $(srcdir)/test/tokenlist-non-spam 15 > .test-non-spam
	./fakemail \
	  $(srcdir)/test/tokenlist-spam 15 > .test-spam

check test: $(package) .test-spam
	@$(CC) -o mboxsplit $(srcdir)/autoconf/scripts/mboxsplit.c
	@FAIL=0; PROG=./$(package); TESTDB=$(testdb); TESTFILE=$(testfile); \
	export PROG TESTDB TESTFILE; \
	test "x$$BACKENDS" = x && BACKENDS="$(testbackends)"; \
	CREATEDTABLE=""; \
	if test x$$MYSQLDB = x; then \
	  CREATEDTABLE=qsftest$$RANDOM; \
	  if mysql test -Be "CREATE TABLE $$CREATEDTABLE ( key1 BIGINT UNSIGNED NOT NULL, key2 BIGINT UNSIGNED NOT NULL, token VARCHAR(64) DEFAULT '' NOT NULL, value1 INT UNSIGNED NOT NULL, value2 INT UNSIGNED NOT NULL, value3 INT UNSIGNED NOT NULL, PRIMARY KEY (key1,key2,token), KEY (key1), KEY (key2), KEY (token) );" >/dev/null 2>&1; then \
		MYSQLDB="database=test;host=localhost;port=3306;user=$$USER;pass=;table=$$CREATEDTABLE;key1=0;key2=0"; \
	  else \
	  	CREATEDTABLE=""; \
	  fi; \
	fi; \
	for BACKEND in $$BACKENDS; do \
	  SKIPMYSQL=0; \
	  test $$BACKEND = MySQL && test x$$MYSQLDB = x && SKIPMYSQL=1; \
	  test $$BACKEND = mysql && test x$$MYSQLDB = x && SKIPMYSQL=1; \
	  test $$SKIPMYSQL = 1 && echo \*\*\* MySQL tests disabled - define \$$MYSQLDB; \
	  test $$SKIPMYSQL = 1 && echo \*\*\* to enable \(see man page for spec format\); \
	  test $$SKIPMYSQL = 1 && continue; \
	  TESTDB=$(testdb); \
	  rm -f $$TESTDB; \
	  export BACKEND; \
	  test $$BACKEND = MySQL && TESTDB=$$MYSQLDB; \
	  test $$BACKEND = mysql && TESTDB=$$MYSQLDB; \
	  for SCRIPT in $(srcdir)/test/t[0-9]*; do \
	    test -f $$SCRIPT || continue; \
	    sed -n 's/^# *TEST: */'"$$BACKEND"': /p' < $$SCRIPT | tr "\n" ' '; \
	    STATUS=0; \
	    sh -e $$SCRIPT || STATUS=1; \
	    test $$STATUS -eq 1 && FAIL=1; \
	    test $$STATUS -eq 1 && echo FAILED || echo OK; \
	  done; rm -f $$TESTDB $$TESTFILE; \
	done; \
	test x$$CREATEDTABLE = x || mysql test -Be "DROP TABLE $$CREATEDTABLE;" >/dev/null 2>&1; \
	exit $$FAIL

memtest: $(package) .test-spam
	@which valgrind >/dev/null 2>/dev/null || (\
	 echo These tests require valgrind to be installed.; \
	 echo See http://valgrind.kde.org/ for details.; \
	 exit 1; \
	)
	@$(CC) -o mboxsplit $(srcdir)/autoconf/scripts/mboxsplit.c
	@FAIL=0; \
	PROG="valgrind --tool=memcheck --leak-check=yes --db-attach=no ./$(package)"; \
	TESTDB=$(testdb); TESTFILE=$(testfile); \
	export PROG TESTDB TESTFILE; \
	test "x$$BACKENDS" = x && BACKENDS="$(testbackends)"; \
	CREATEDTABLE=""; \
	if test x$$MYSQLDB = x; then \
	  CREATEDTABLE=qsftest$$RANDOM; \
	  if mysql test -Be "CREATE TABLE $$CREATEDTABLE ( key1 BIGINT UNSIGNED NOT NULL, key2 BIGINT UNSIGNED NOT NULL, token VARCHAR(64) DEFAULT '' NOT NULL, value1 INT UNSIGNED NOT NULL, value2 INT UNSIGNED NOT NULL, value3 INT UNSIGNED NOT NULL, PRIMARY KEY (key1,key2,token), KEY (key1), KEY (key2), KEY (token) );" >/dev/null 2>&1; then \
		MYSQLDB="database=test;host=localhost;port=3306;user=$$USER;pass=;table=$$CREATEDTABLE;key1=0;key2=0"; \
	  else \
	  	CREATEDTABLE=""; \
	  fi; \
	fi; \
	for BACKEND in $$BACKENDS; do \
	  SKIPMYSQL=0; \
	  test $$BACKEND = MySQL && test x$$MYSQLDB = x && SKIPMYSQL=1; \
	  test $$BACKEND = mysql && test x$$MYSQLDB = x && SKIPMYSQL=1; \
	  test $$SKIPMYSQL = 1 && echo \*\*\* MySQL tests disabled - define \$$MYSQLDB; \
	  test $$SKIPMYSQL = 1 && echo \*\*\* to enable \(see man page for spec format\); \
	  test $$SKIPMYSQL = 1 && continue; \
	  TESTDB=$(testdb); \
	  rm -f $$TESTDB; \
	  export BACKEND; \
	  test $$BACKEND = MySQL && TESTDB=$$MYSQLDB; \
	  test $$BACKEND = mysql && TESTDB=$$MYSQLDB; \
	  for SCRIPT in $(srcdir)/test/t[0-9]*; do \
	    test -f $$SCRIPT || continue; \
	    TESTOUT=memtest-out-$$BACKEND-`basename $$SCRIPT`; \
	    sed -n 's/^# *TEST: */'"$$BACKEND"': /p' < $$SCRIPT | tr "\n" ' '; \
	    STATUS=0; \
	    sh -e $$SCRIPT >$$TESTOUT 2>&1 || STATUS=1; \
	    grep '^==[0-9]\+== ERROR SUMMARY: ' $$TESTOUT \
	    | grep -q -v '^==[0-9]\+== ERROR SUMMARY: 0 ' && STATUS=2; \
	    test $$STATUS -eq 1 && FAIL=1; \
	    test $$STATUS -eq 2 && FAIL=1; \
	    test $$STATUS -eq 1 && echo FAILED, MEMTEST OK; \
	    test $$STATUS -eq 2 && echo FAILED MEMTEST; \
	    test $$STATUS -eq 0 && echo OK; \
	  done; rm -f $$TESTDB $$TESTFILE; \
	done; \
	test x$$CREATEDTABLE = x || mysql test -Be "DROP TABLE $$CREATEDTABLE;" >/dev/null 2>&1; \
	exit $$FAIL

.test-benchmark-spam:
	$(CC) $(CFLAGS) $(CPPFLAGS) -o fakemail $(srcdir)/autoconf/scripts/fakemail.c
	./fakemail \
	  $(srcdir)/test/tokenlist-non-spam 1500 > .test-benchmark-non-spam
	./fakemail \
	  $(srcdir)/test/tokenlist-spam 1500 > .test-benchmark-spam

benchmark: $(package) .test-benchmark-spam
	@test "x$$BACKENDS" = x && BACKENDS="$(testbackends)"; \
	CREATEDTABLE=""; \
	if test x$$MYSQLDB = x; then \
	  CREATEDTABLE=qsftest$$RANDOM; \
	  if mysql test -Be "CREATE TABLE $$CREATEDTABLE ( key1 BIGINT UNSIGNED NOT NULL, key2 BIGINT UNSIGNED NOT NULL, token VARCHAR(64) DEFAULT '' NOT NULL, value1 INT UNSIGNED NOT NULL, value2 INT UNSIGNED NOT NULL, value3 INT UNSIGNED NOT NULL, PRIMARY KEY (key1,key2,token), KEY (key1), KEY (key2), KEY (token) );" >/dev/null 2>&1; then \
		MYSQLDB="database=test;host=localhost;port=3306;user=$$USER;pass=;table=$$CREATEDTABLE;key1=0;key2=0"; \
	  else \
	  	CREATEDTABLE=""; \
	  fi; \
	fi; \
	for BACKEND in $$BACKENDS; do \
	  SKIPMYSQL=0; \
	  test $$BACKEND = MySQL && test x$$MYSQLDB = x && SKIPMYSQL=1; \
	  test $$BACKEND = mysql && test x$$MYSQLDB = x && SKIPMYSQL=1; \
	  test $$SKIPMYSQL = 1 && echo \*\*\* MySQL tests disabled - define \$$MYSQLDB; \
	  test $$SKIPMYSQL = 1 && echo \*\*\* to enable \(see man page for spec format\); \
	  test $$SKIPMYSQL = 1 && continue; \
	  TESTDB=$$BACKEND; \
	  test $$BACKEND = MySQL && TESTDB=mysql:$$MYSQLDB; \
	  test $$BACKEND = mysql && TESTDB=mysql:$$MYSQLDB; \
	  ./$(package) -d $$TESTDB -B .test-benchmark-spam .test-benchmark-non-spam; \
	done; \
	test x$$CREATEDTABLE = x || mysql test -Be "DROP TABLE $$CREATEDTABLE;" >/dev/null 2>&1

bigbenchmark: $(package) .test-benchmark-spam
	rm -f benchmark-report benchmark-data-* benchmark-graph-*
	test "x$$BACKENDS" = x && BACKENDS="$(testbackends)"; \
	echo "set title 'Training times'" > benchmark-graph-train; \
	echo "set title 'Classification times'" > benchmark-graph-class; \
	echo "set title 'Accuracy of trained database'" > benchmark-graph-accuracy; \
	for GRAPH in train class accuracy; do \
	  CMD=""; \
	  for BACKEND in $$BACKENDS; do \
	    CMD="$$CMD, 'benchmark-data-$$GRAPH-$$BACKEND' title '$$BACKEND' with linespoints"; \
	  done; \
	  echo "$$CMD" | sed -e 's/^,/plot/' -e 's/SQLite2/sqlite/g' >> benchmark-graph-$$GRAPH; \
	done
	for NUM in 5 6 7 8 9 10 11 12 14 16 18 20 22 24 26 28 30 35 40 45 50 55 60 65 70 80 90 100 120 140 160 180 200 250 300 350 400 450 500 600 700 800 900 1000 1100 1200 1300 1400 1500; do \
	  ./fakemail $(srcdir)/test/tokenlist-non-spam $$NUM > .test-benchmark-non-spam; \
	  ./fakemail $(srcdir)/test/tokenlist-spam $$NUM > .test-benchmark-spam; \
	  $(MAKE) benchmark | tee benchmark-report; \
	  awk -f $(srcdir)/autoconf/scripts/benchmark.awk < benchmark-report; \
	  $(MAKE) benchmark | tee benchmark-report; \
	  awk -f $(srcdir)/autoconf/scripts/benchmark.awk < benchmark-report; \
	  $(MAKE) benchmark | tee benchmark-report; \
	  awk -f $(srcdir)/autoconf/scripts/benchmark.awk < benchmark-report; \
	done
	@echo
	@echo 'You can now load the files "benchmark-graph-*" into "gnuplot".'
	@echo

install: all doc
	$(srcdir)/autoconf/scripts/mkinstalldirs \
	  "$(DESTDIR)/$(bindir)"
	$(srcdir)/autoconf/scripts/mkinstalldirs \
	  "$(DESTDIR)/$(mandir)/man1"
	$(INSTALL) -m 755 $(package) \
	  "$(DESTDIR)/$(bindir)/$(package)"
	$(INSTALL) -m 644 doc/quickref.1 \
	  "$(DESTDIR)/$(mandir)/man1/$(package).1"
	$(DO_GZIP) "$(DESTDIR)/$(mandir)/man1/$(package).1"      || :

uninstall:
	$(UNINSTALL) "$(DESTDIR)/$(bindir)/$(package)"
	$(UNINSTALL) "$(DESTDIR)/$(mandir)/man1/$(package).1"
	$(UNINSTALL) "$(DESTDIR)/$(mandir)/man1/$(package).1.gz"

rpmbuild:
	echo macrofiles: `rpm --showrc \
	  | grep ^macrofiles \
	  | cut -d : -f 2- \
	  | sed 's,^[^/]*/,/,'`:`pwd`/rpmmacros > rpmrc
	echo %_topdir `pwd`/rpm > rpmmacros
	rm -rf rpm
	mkdir rpm
	mkdir rpm/SPECS rpm/BUILD rpm/SOURCES rpm/RPMS rpm/SRPMS
	-cat /usr/lib/rpm/rpmrc /etc/rpmrc $$HOME/.rpmrc \
	 | grep -hsv ^macrofiles \
	 >> rpmrc

srpm:
	-test -e $(package)-$(version).tar.gz || $(MAKE) dist
	-test -e rpmrc || $(MAKE) rpmbuild
	rpmbuild $(RPMFLAGS) --rcfile=rpmrc -ts $(package)-$(version).tar.bz2
	mv rpm/SRPMS/*$(package)-*.rpm .
	rm -rf rpm rpmmacros rpmrc

rpm:
	-test -e $(package)-$(version).tar.gz || $(MAKE) dist
	-test -e rpmrc || $(MAKE) rpmbuild
	rpmbuild $(RPMFLAGS) --rcfile=rpmrc -tb $(package)-$(version).tar.bz2
	rpmbuild $(RPMFLAGS) --rcfile=rpmrc -tb --with static $(package)-$(version).tar.bz2
	mv rpm/RPMS/*/$(package)-*.rpm .
	rm -rf rpm rpmmacros rpmrc

deb: dist
	rm -rf BUILD-DEB
	mkdir BUILD-DEB
	cd BUILD-DEB && tar xzf ../$(package)-$(version).tar.gz
	cd BUILD-DEB && cd $(package)-$(version) && dpkg-buildpackage -rfakeroot
	mv BUILD-DEB/*.deb .
	rm -rf BUILD-DEB

release: dist rpm srpm

# Automatically generated module linking rules
#
# Creation time: Tue Aug 28 14:27:40 BST 2007

src/db.o:  src/db/btree.o src/db/gdbm.o src/db/list.o src/db/main.o src/db/mysql.o src/db/obtree.o src/db/sqlite.o
	$(LD) $(LDFLAGS) -o $@  src/db/btree.o src/db/gdbm.o src/db/list.o src/db/main.o src/db/mysql.o src/db/obtree.o src/db/sqlite.o

src/main.o:  src/main/help.o src/main/log.o src/main/main.o src/main/options.o src/main/tick.o src/main/version.o
	$(LD) $(LDFLAGS) -o $@  src/main/help.o src/main/log.o src/main/main.o src/main/options.o src/main/tick.o src/main/version.o

src/spam.o:  src/spam/alloc.o src/spam/allowlist.o src/spam/benchmark.o src/spam/check.o src/spam/cksum.o src/spam/db.o src/spam/dump.o src/spam/merge.o src/spam/plaintext.o src/spam/prune.o src/spam/token.o src/spam/train.o src/spam/update.o
	$(LD) $(LDFLAGS) -o $@  src/spam/alloc.o src/spam/allowlist.o src/spam/benchmark.o src/spam/check.o src/spam/cksum.o src/spam/db.o src/spam/dump.o src/spam/merge.o src/spam/plaintext.o src/spam/prune.o src/spam/token.o src/spam/train.o src/spam/update.o

src/message.o:  src/message/alloc.o src/message/base64.o src/message/dump.o src/message/header.o src/message/parse.o src/message/qp.o src/message/read.o src/message/rfc2047.o
	$(LD) $(LDFLAGS) -o $@  src/message/alloc.o src/message/base64.o src/message/dump.o src/message/header.o src/message/parse.o src/message/qp.o src/message/read.o src/message/rfc2047.o

src/tests.o:  src/tests/attached_files.o src/tests/gibberish.o src/tests/gtube.o src/tests/html.o src/tests/imgcount.o src/tests/main.o src/tests/urls.o
	$(LD) $(LDFLAGS) -o $@  src/tests/attached_files.o src/tests/gibberish.o src/tests/gtube.o src/tests/html.o src/tests/imgcount.o src/tests/main.o src/tests/urls.o

src/mailbox.o:  src/mailbox/alloc.o src/mailbox/count.o src/mailbox/scan.o src/mailbox/select.o
	$(LD) $(LDFLAGS) -o $@  src/mailbox/alloc.o src/mailbox/count.o src/mailbox/scan.o src/mailbox/select.o


#
# Compilation rules.
#
#

.SUFFIXES: .c .d .o

.c.o:
	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<

.c.d:
	sh $(srcdir)/autoconf/scripts/depend.sh \
	   $(CC) $< $(<:%.c=%) $(srcdir) $(CFLAGS) $(CPPFLAGS) > $@

doc/quickref.txt: doc/quickref.1
	man doc/quickref.1 | col -b | cat -s > doc/quickref.txt         || :
	chmod 644 doc/quickref.txt                                      || :

#
# Targets.
#
#

mainobjs := src/main.o src/md5.o src/library.o src/db.o src/message.o src/mailbox.o src/spam.o src/tests.o

$(package): $(mainobjs)
	$(CC) $(CFLAGS) -o $@ $(mainobjs) $(LIBS)

$(package)-static: $(mainobjs)
	$(CC) $(CFLAGS) -static -o $@ $(mainobjs) $(LIBS)

# EOF
#
# Dependencies.
#

src/library.d src/library.o: src/library.c src/include/config.h 
src/md5.d src/md5.o: src/md5.c src/include/md5.h src/include/config.h 
src/db/obtree.d src/db/obtree.o: src/db/obtree.c src/include/config.h src/include/database.h src/include/log.h 
src/db/list.d src/db/list.o: src/db/list.c src/include/config.h src/include/database.h src/include/log.h 
src/db/main.d src/db/main.o: src/db/main.c src/include/config.h src/include/database.h 
src/db/gdbm.d src/db/gdbm.o: src/db/gdbm.c src/include/config.h src/include/database.h 
src/db/btree.d src/db/btree.o: src/db/btree.c src/include/config.h src/include/database.h src/include/log.h 
src/db/sqlite.d src/db/sqlite.o: src/db/sqlite.c src/include/config.h src/include/database.h src/include/log.h 
src/db/mysql.d src/db/mysql.o: src/db/mysql.c src/include/config.h src/include/database.h src/include/log.h 
src/main/help.d src/main/help.o: src/main/help.c src/include/config.h 
src/main/options.d src/main/options.o: src/main/options.c src/include/config.h src/include/options.h src/include/spam.h src/include/message.h src/include/log.h 
src/main/version.d src/main/version.o: src/main/version.c src/include/config.h 
src/main/main.d src/main/main.o: src/main/main.c src/include/config.h src/include/options.h src/include/message.h src/include/spam.h src/include/database.h src/include/log.h 
src/main/log.d src/main/log.o: src/main/log.c src/include/config.h src/include/log.h 
src/main/tick.d src/main/tick.o: src/main/tick.c src/include/config.h 
src/spam/update.d src/spam/update.o: src/spam/update.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h 
src/spam/merge.d src/spam/merge.o: src/spam/merge.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h 
src/spam/alloc.d src/spam/alloc.o: src/spam/alloc.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h 
src/spam/train.d src/spam/train.o: src/spam/train.c src/include/config.h src/include/mailbox.h src/include/options.h src/spam/spami.h src/include/message.h src/include/database.h src/include/spam.h 
src/spam/cksum.d src/spam/cksum.o: src/spam/cksum.c src/include/config.h src/include/md5.h 
src/spam/benchmark.d src/spam/benchmark.o: src/spam/benchmark.c src/include/config.h src/include/mailbox.h src/include/options.h src/spam/spami.h src/include/message.h src/include/database.h src/include/spam.h 
src/spam/check.d src/spam/check.o: src/spam/check.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h src/include/log.h 
src/spam/plaintext.d src/spam/plaintext.o: src/spam/plaintext.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h src/include/log.h 
src/spam/dump.d src/spam/dump.o: src/spam/dump.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h 
src/spam/token.d src/spam/token.o: src/spam/token.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h 
src/spam/db.d src/spam/db.o: src/spam/db.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h 
src/spam/prune.d src/spam/prune.o: src/spam/prune.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h 
src/spam/allowlist.d src/spam/allowlist.o: src/spam/allowlist.c src/include/config.h src/spam/spami.h src/include/options.h src/include/message.h src/include/database.h src/include/spam.h src/include/log.h 
src/message/parse.d src/message/parse.o: src/message/parse.c src/include/config.h src/include/message.h src/include/options.h src/include/md5.h 
src/message/alloc.d src/message/alloc.o: src/message/alloc.c src/include/config.h src/include/message.h src/include/options.h 
src/message/read.d src/message/read.o: src/message/read.c src/include/config.h src/include/message.h src/include/options.h 
src/message/rfc2047.d src/message/rfc2047.o: src/message/rfc2047.c src/include/config.h src/include/message.h src/include/options.h 
src/message/header.d src/message/header.o: src/message/header.c src/include/config.h src/include/message.h src/include/options.h 
src/message/qp.d src/message/qp.o: src/message/qp.c src/include/config.h 
src/message/dump.d src/message/dump.o: src/message/dump.c src/include/config.h src/include/message.h src/include/options.h src/include/log.h 
src/message/base64.d src/message/base64.o: src/message/base64.c src/include/config.h 
src/tests/gtube.d src/tests/gtube.o: src/tests/gtube.c src/include/config.h src/tests/testi.h src/include/options.h src/include/message.h 
src/tests/main.d src/tests/main.o: src/tests/main.c src/include/config.h src/tests/testi.h src/include/options.h src/include/message.h 
src/tests/imgcount.d src/tests/imgcount.o: src/tests/imgcount.c src/include/config.h src/tests/testi.h src/include/options.h src/include/message.h 
src/tests/urls.d src/tests/urls.o: src/tests/urls.c src/include/config.h src/tests/testi.h src/include/options.h src/include/message.h src/include/spam.h 
src/tests/gibberish.d src/tests/gibberish.o: src/tests/gibberish.c src/include/config.h src/tests/testi.h src/include/options.h src/include/message.h 
src/tests/attached_files.d src/tests/attached_files.o: src/tests/attached_files.c src/include/config.h src/tests/testi.h src/include/options.h src/include/message.h 
src/tests/html.d src/tests/html.o: src/tests/html.c src/include/config.h src/tests/testi.h src/include/options.h src/include/message.h src/include/spam.h 
src/mailbox/alloc.d src/mailbox/alloc.o: src/mailbox/alloc.c src/include/config.h src/include/mailbox.h src/include/options.h src/mailbox/mailboxi.h 
src/mailbox/count.d src/mailbox/count.o: src/mailbox/count.c src/include/config.h src/include/mailbox.h src/include/options.h src/mailbox/mailboxi.h 
src/mailbox/select.d src/mailbox/select.o: src/mailbox/select.c src/include/config.h src/include/mailbox.h src/include/options.h src/mailbox/mailboxi.h 
src/mailbox/scan.d src/mailbox/scan.o: src/mailbox/scan.c src/include/config.h src/include/mailbox.h src/include/options.h src/mailbox/mailboxi.h 


syntax highlighted by Code2HTML, v. 0.9.1