1# $Id: Makefile.in,v 1.75 2013/09/02 03:54:35 manu Exp $ 2 3# 4# Copyright (c) 2004 Emmanuel Dreyfus 5# All rights reserved. 6# 7# Redistribution and use in source and binary forms, with or without 8# modification, are permitted provided that the following conditions 9# are met: 10# 1. Redistributions of source code must retain the above copyright 11# notice, this list of conditions and the following disclaimer. 12# 2. Redistributions in binary form must reproduce the above copyright 13# notice, this list of conditions and the following disclaimer in the 14# documentation and/or other materials provided with the distribution. 15# 3. All advertising materials mentioning features or use of this software 16# must display the following acknowledgement: 17# This product includes software developed by Emmanuel Dreyfus 18# 19# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 20# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22# DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 23# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 27# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 29# OF THE POSSIBILITY OF SUCH DAMAGE. 30# 31 32CFLAGS= -g -O2 -Wall -I/usr/pkg/include -DHAVE_DATA_CALLBACK -DCONFFILE=\"${CONFFILE}\" -DDUMPFILE=\"${DUMPFILE}\" -D_BSD_SOURCE -DYY_NO_INPUT -I. -I${SRCDIR} 33LDFLAGS= -L/usr/pkg/lib -Wl,--rpath=/usr/pkg/lib 34LIBS= -lpthread -lresolv -lmilter 35prefix= /usr/local 36datarootdir= ${prefix}/share 37exec_prefix= ${prefix} 38SYSCONFDIR= ${prefix}/etc 39LOCALSTATEDIR= ${prefix}/var 40SRCDIR= . 41BINDIR= ${exec_prefix}/bin 42SBINDIR= ${exec_prefix}/sbin 43MANDIR= ${datarootdir}/man 44USER= root 45CONFFILE= ${SYSCONFDIR}/mail/greylist.conf 46DUMPFILE= ${LOCALSTATEDIR}/milter-greylist/greylist.db 47 48# If your make complains about -j, try --disable-parallel-make 49MAKESEQ= $(MAKE) -j 1 50 51CC= gcc 52MKDEP= mkdep 53RM= rm 54MV= mv 55TEST= test 56SED= sed 57INSTALL= /usr/bin/install -c 58LEX= flex 59YACC= yacc 60TRUE= true 61TOUCH= touch 62 63OBJ= milter-greylist.o pending.o sync.o dnsrbl.o list.o macro.o \ 64 conf.o store.o dump.o spf.o acl.o urlcheck.o stat.o clock.o \ 65 geoip.o fd_pool.o prop.o ldapcheck.o dkimcheck.o p0f.o \ 66 spamd.o mx.o ratelimit.o nsupdate.o brokenmfapi.o geoip2.o 67OBJ_SEQ= conf_yacc.o dump_yacc.o 68OBJ_SEQ_FLAG= .objseq-built 69SRC= milter-greylist.c pending.c sync.c conf.c macro.c stat.c \ 70 clock.c store.c dump.c spf.c acl.c dnsrbl.c list.c \ 71 urlcheck.c geoip.c prop.c ldapcheck.c dkimcheck.c p0f.c \ 72 spamd.c mx.c ratelimit.c nsupdate.c brokenmfapi.c geoip2.c 73GENSRC= conf_yacc.c conf_lex.c dump_yacc.c dump_lex.c 74 75VPATH= ${SRCDIR} 76 77all: milter-greylist rc-bsd.sh rc-redhat.sh \ 78 rc-solaris.sh rc-debian.sh rc-gentoo.sh rc-suse.sh 79 80# GNU make: targets which are not expected to produce same-named files 81.PHONY: bld-milter-greylist obj-seq bld-seq all-seq 82 83milter-greylist: ${OBJ} ${OBJ_SEQ_FLAG} 84 @echo "=== Linking $@:" 85 ${CC} -o $@ ${OBJ} ${OBJ_SEQ} ${LDFLAGS} ${LIBS} 86 87# The idea is that a successful obj-seq build would produce the flag-file, 88# thus "milter-greylist"'s verifiable dependencies are satisfied and the 89# binary is not relinked on every make run. However, code updates that can 90# cause rebuilds of ${OBJ_SEQ} files might require a "gmake rebuild" now. 91${OBJ_SEQ_FLAG}: obj-seq 92 sync || $(TRUE) 93 94all-seq: obj-seq 95obj-seq: 96 @echo "=== Call make sequential for objects sensitive to that (current make='$(MAKE)' MAKEFLAGS='$(MAKEFLAGS)'):" 97 $(MAKESEQ) bld-seq 98 99bld-seq: ${OBJ_SEQ} 100 $(TEST) -f ${OBJ_SEQ_FLAG} || $(TOUCH) ${OBJ_SEQ_FLAG} 101 102sync_yacc.o: sync_yacc.c sync_lex.c 103conf_yacc.o: conf_yacc.c conf_lex.c 104dump_yacc.o: dump_yacc.c dump_lex.c 105 106sed_subst = "s|@BINDIR[@]|${BINDIR}|g; s|@SBINDIR[@]|${SBINDIR}|g; s|@USER[@]|${USER}|g" 107 108rc-bsd.sh: rc-bsd.sh.in 109 ${SED} ${sed_subst} ${SRCDIR}/$< > $@ 110rc-redhat.sh: rc-redhat.sh.in 111 ${SED} ${sed_subst} ${SRCDIR}/$< > $@ 112rc-solaris.sh: rc-solaris.sh.in 113 ${SED} ${sed_subst} ${SRCDIR}/$< > $@ 114rc-debian.sh: rc-debian.sh.in 115 ${SED} ${sed_subst} ${SRCDIR}/$< > $@ 116rc-gentoo.sh: rc-gentoo.sh.in 117 ${SED} ${sed_subst} ${SRCDIR}/$< > $@ 118rc-suse.sh: rc-suse.sh.in 119 ${SED} ${sed_subst} ${SRCDIR}/$< > $@ 120 121install-daemon-to-bin: milter-greylist 122 ${INSTALL} -d -m 755 ${DESTDIR}${BINDIR} 123 ${INSTALL} -m 755 milter-greylist ${DESTDIR}${BINDIR} 124 125install-sbin: milter-greylist 126 ${INSTALL} -d -m 755 ${DESTDIR}${SBINDIR} 127 ${INSTALL} -m 755 milter-greylist ${DESTDIR}${SBINDIR} 128 129install-man: 130 ${INSTALL} -d -m 755 ${DESTDIR}${MANDIR}/man8 131 ${INSTALL} -d -m 755 ${DESTDIR}${MANDIR}/man5 132 ${INSTALL} -m 644 ${SRCDIR}/milter-greylist.8 ${DESTDIR}${MANDIR}/man8 133 ${INSTALL} -m 644 ${SRCDIR}/greylist.conf.5 ${DESTDIR}${MANDIR}/man5 134 135install-conf: 136 ${INSTALL} -d -m 755 ${DESTDIR}`dirname ${CONFFILE}` 137 ${TEST} -f ${DESTDIR}${CONFFILE} -o \ 138 -f ${DESTDIR}/etc/mail/greylist.except || \ 139 ${INSTALL} -m 644 ${SRCDIR}/greylist.conf ${DESTDIR}${CONFFILE} 140 @${TEST} -f ${DESTDIR}/etc/mail/greylist.except && ( \ 141 echo " ================================================"; \ 142 echo " WARNING: the config file name has changed, "; \ 143 echo " Please rename /etc/mail/greylist.except, the "; \ 144 echo " default name is now in ${CONFFILE} "; \ 145 echo " ================================================"; \ 146 ) || ${TRUE} 147 148install-db: 149 ${INSTALL} -d -m 755 -o ${USER} ${DESTDIR}`dirname ${DUMPFILE}` 150 @${TEST} -f ${DESTDIR}/var/db/greylist.db && ( \ 151 echo " ================================================"; \ 152 echo " WARNING: the dump file location has changed, "; \ 153 echo " Please move /var/db/greylist.db, the default "; \ 154 echo " location is now in ${DUMPFILE} "; \ 155 echo " ================================================"; \ 156 ) || ${TRUE} 157 158install: install-daemon-to-bin install-man install-conf install-db 159 160depend: 161 ${MKDEP} ${CPPFLAGS} ${CFLAGS} ${SRC} 162 163clean: 164 ${RM} -f milter-greylist ${OBJ} ${OBJ_SEQ} ${OBJ_SEQ_FLAG} ${GENSRC} \ 165 rc-redhat.sh rc-bsd.sh rc-solaris.sh rc-debian.sh rc-gentoo.sh \ 166 rc-suse.sh y.tab.c 167 sync || $(TRUE) 168 169realclean: clean 170 ${RM} -Rf Makefile config.h config.log config.status \ 171 autom4te.cache configure.lineno *.orig *.bak autoscan.log 172 sync || $(TRUE) 173 174distclean: realclean 175 176rebuild: clean 177 @echo "=== Making all. MAKEFLAGS=$(MAKEFLAGS)" 178 @$(MAKE) all || ( \ 179 echo "==============================================================="; \ 180 echo "=== First build failed. Making all sequentially just in case..."; \ 181 echo "==============================================================="; \ 182 sync || $(TRUE); \ 183 $(MAKESEQ) all ) 184 185.SUFFIXES: .o .c .h .y .l 186.l.c: 187 ${LEX} -o$@ $< 188.y.c: 189 ${YACC} -p`echo $@|${SED} 's/^\([^_]\{1,\}_\).*$$/\1/'` $< 190 ${MV} y.tab.c $@ 191 192# This is a target for debugging 193start: milter-greylist 194 ./milter-greylist -D -v -p milter-greylist.sock 195