#
# makefile - make and install for abmail/tools
#
# Copyright (C) 2007-2009 Taiji Yamada <taiji@aihara.co.jp>
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 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
# Affero General Public License for more details.
#
#
# build:
#	$ make	# Mac OS X
#	$ make LDLIBS='-lpthread'	# Linux
#	$ make CC='gcc -DDISABLE_PTHREAD -DDISABLE_IPv6' LDLIBS='-R/opt/local/lib -lsocket -lnsl -lgen'	# Solaris without pthread & IPv6
#	$ make CC='gcc -D_REENTRANT' LDLIBS='-R/opt/local/lib -lsocket -lnsl'				# Solaris
#
#	$ make CC='gcc -DDISABLE_PTHREAD -DDISABLE_IPv6' LDLIBS='-lnsl' abaddr		# Solaris without pthread & IPv6
#	$ make CC='gcc -D_REENTRANT' LDLIBS='-lpthread -lsocket -lnsl' abaddr		# Solaris
#
#	$ make CC='gcc -DDISABLE_IPv6' LDLIBS='-lnsl' abcidr				# Solaris without IPv6
#	$ make CC='gcc' LDLIBS='-lnsl' abcidr						# Solaris
#
#	$ make CC='gcc' LDLIBS='-R/opt/local/lib -lgen' abmailc				# Solaris
#
PREFIX=/opt/local
CPPFLAGS=-Wall -O3 -I$(PREFIX)/include -DPREFIX=\"$(PREFIX)\"
LDFLAGS=-L$(PREFIX)/lib
MYDOMAIN=aihara.co.jp

BINS=\
abmailc	\
abcidr	\
abaddr	\

OUT_RSCS=\
rfs_reliable.lst	\

all: $(BINS) $(OUT_RSCS)

abmailc: LDFLAGS+=-lpcre -liconv

ararray-bench: CPPFLAGS+=-I.
ararray-bench: LDFLAGS+=-lgmpxx -lgmp

$(OUT_RSCS):
	ln -s ../$@ .

clean: clean.test
	rm -f $(BINS)
	rm -f $(OUT_RSCS)

SCRIPTS=\
abmess	\
abmailsreport \
abmailsview \
abmailsreports \
abmailsviews \

PROCMAILRCS=\
etc/procmailrcs/aliases.rc	\
etc/procmailrcs/abmail-devel-list.rc	\

install:
	cp $(BINS) $(PREFIX)/bin
	for script in $(SCRIPTS); do\
	  symlink=`perl -e 'print readlink("$$ARGV[0]")."\n";' "$$script"`;\
	  case "$$symlink" in "")\
	  sed 's|\$${ABMAIL_ROOT:-./}||g;'"s|/opt/local|$(PREFIX)|g;s|^\(mydomain=\).*|\1$(MYDOMAIN)|" $$script > $(PREFIX)/bin/$$script;\
	  chmod +x $(PREFIX)/bin/$$script;\
	  ;;*) (cd $(PREFIX)/bin && rm -f $$script && ln -s $$symlink $$script);; esac;\
	done

install.procmailrcs:
	cp $(PROCMAILRCS) /etc/procmailrcs/
	chown nobody /etc/procmailrcs/aliases.rc && chgrp nobody /etc/procmailrcs/aliases.rc
	chown majordomo /etc/procmailrcs/abmail-devel-list.rc && chgrp majordomo /etc/procmailrcs/abmail-devel-list.rc

test: test.abmailc test.abcidr

test.abmailc: all
	./abmailc -B- examples > examples_all.msg
	-diff examples/all.msg examples_all.msg
	./abmailc examples > examples_all-ibl.msg
	-diff examples/all-ibl.msg examples_all-ibl.msg
	./abmailc -S examples > examples_all-iss.msg
	-diff examples/all-iss.msg examples_all-iss.msg

test.abcidr: all
	./abcidr `cat examples/cidrs.in` > examples_cidrs00.out
	./abcidr `cat examples_cidrs00.out` > examples_cidrs01.out
	-diff examples/cidrs.in examples_cidrs01.out
	./abcidr -c- `cat examples_cidrs00.out` > examples_cidrs02.out
	./abcidr -c- `cat examples_cidrs02.out` > examples_cidrs03.out
	./abcidr `cat examples_cidrs02.out` > examples_cidrs04.out
	./abcidr `cat examples_cidrs03.out` > examples_cidrs05.out
	-diff examples/cidrs.in examples_cidrs05.out

	./abcidr `cat examples/abcidrs.in` > examples_abcidrs00.out
	./abcidr `cat examples_abcidrs00.out` > examples_abcidrs01.out
	-diff examples/abcidrs.out examples_abcidrs01.out
	./abcidr -c- `cat examples_abcidrs00.out` > examples_abcidrs02.out
	./abcidr -c- `cat examples_abcidrs02.out` > examples_abcidrs03.out
	./abcidr `cat examples_abcidrs02.out` > examples_abcidrs04.out
	./abcidr `cat examples_abcidrs03.out` > examples_abcidrs05.out
	-diff examples/abcidrs.out examples_abcidrs05.out

	./abcidr `cat examples/cidr6s.in` > examples_cidr6s00.out
	./abcidr `cat examples_cidr6s00.out` > examples_cidr6s01.out
	-diff examples/cidr6s.in examples_cidr6s01.out
	./abcidr -c- `cat examples_cidr6s00.out` > examples_cidr6s02.out
	./abcidr -c- `cat examples_cidr6s02.out` > examples_cidr6s03.out
	./abcidr `cat examples_cidr6s02.out` > examples_cidr6s04.out
	./abcidr `cat examples_cidr6s03.out` > examples_cidr6s05.out
	-diff examples/cidr6s.in examples_cidr6s05.out

	./abcidr `cat examples/abcidr6s.in` > examples_abcidr6s00.out
	./abcidr `cat examples_abcidr6s00.out` > examples_abcidr6s01.out
	-diff examples/abcidr6s.out examples_abcidr6s01.out
	./abcidr -c- `cat examples_abcidr6s00.out` > examples_abcidr6s02.out
	./abcidr -c- `cat examples_abcidr6s02.out` > examples_abcidr6s03.out
	./abcidr `cat examples_abcidr6s02.out` > examples_abcidr6s04.out
	./abcidr `cat examples_abcidr6s03.out` > examples_abcidr6s05.out
	-diff examples/abcidr6s.out examples_abcidr6s05.out

test.ararray: ararray-bench
	./ararray-bench

clean.test:
	rm -f examples_all.msg examples_all-ibl.msg examples_all-iss.msg
	rm -f examples_cidrs*.out examples_abcidrs*.out examples_cidr6s*.out examples_abcidr6s*.out
	rm -f ararray-bench
