# $Id: Makefile,v 1.162 2007/10/01 18:38:48 nicm Exp $ .SUFFIXES: .c .o .y .h .PHONY: clean lint regress yannotate manual \ update-index.html upload-index.html PROG= fdm VERSION= 1.4 OS!= uname REL!= uname -r DATE!= date +%Y%m%d-%H%M # This must be empty as OpenBSD includes it in default CFLAGS. #DEBUG= SRCS= fdm.c \ attach.c buffer.c cleanup.c command.c connect.c io.c log.c netrc.c \ child-deliver.c child-fetch.c child.c \ pcre.c re.c privsep.c replace.c shm-mmap.c strb.c db-tdb.c \ xmalloc-debug.c xmalloc.c timer.c \ deliver-add-header.c deliver-drop.c deliver-keep.c deliver-maildir.c \ deliver-mbox.c deliver-pipe.c deliver-remove-header.c deliver-rewrite.c \ deliver-smtp.c deliver-stdout.c deliver-tag.c deliver-to-cache.c \ deliver-write.c \ fetch-imap.c fetch-imappipe.c fetch-maildir.c fetch-nntp.c fetch-pop3.c \ fetch-pop3pipe.c fetch-stdin.c fetch-mbox.c pop3-common.c imap-common.c \ mail-state.c mail-time.c mail.c file.c \ match-all.c match-age.c match-attachment.c match-command.c \ match-in-cache.c match-matched.c match-regexp.c match-size.c \ match-string.c match-tagged.c match-unmatched.c match-account.c \ parent-deliver.c parent-fetch.c \ parse.y parse-fn.c lex.c HDRS= fdm.h array.h fetch.h match.h deliver.h YACC= yacc -d CC?= cc INCDIRS+= -I. -I- -I/usr/local/include .ifdef PROFILE # Don't use ccache CC= /usr/bin/gcc CFLAGS+= -pg -DPROFILE -fprofile-arcs -ftest-coverage -O0 .endif .ifdef DEBUG CFLAGS+= -g -ggdb -DDEBUG LDFLAGS+= -Wl,-E CFLAGS+= -DBUILD="\"$(VERSION) ($(DATE))\"" .else CFLAGS+= -DBUILD="\"$(VERSION)\"" .endif #CFLAGS+= -pedantic -std=c99 CFLAGS+= -Wno-long-long -Wall -W -Wnested-externs -Wformat=2 CFLAGS+= -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations CFLAGS+= -Wwrite-strings -Wshadow -Wpointer-arith -Wcast-qual -Wsign-compare CFLAGS+= -Wundef -Wshadow -Wbad-function-cast -Winline -Wcast-align .ifdef PCRE CFLAGS+= -DPCRE LIBS+= -lpcre .endif # OS X .if ${OS} == "Darwin" SRCS+= compat/strtonum.c INCDIRS+= -Icompat -I/usr/local/include/openssl CFLAGS+= -DNO_STRTONUM -DNO_SETRESUID -DNO_SETRESGID -DNO_SETPROCTITLE .endif # NetBSD .if ${OS} == "NetBSD" SRCS+= compat/strtonum.c INCDIRS+= -Icompat -I/usr/pkg/include CFLAGS+= -DNO_STRTONUM -DNO_SETRESUID -DNO_SETRESGID LDFLAGS+= -L/usr/pkg/lib .endif # FreeBSD .if ${OS} == "FreeBSD" INCDIRS+= -Icompat -I/usr/local/include/openssl # FreeBSD 5 .if ${REL:R} == 5 SRCS+= compat/strtonum.c CFLAGS+= -DNO_STRTONUM .endif .endif PREFIX?= /usr/local INSTALLBIN= install -g bin -o root -m 555 INSTALLMAN= install -g bin -o root -m 444 LDFLAGS+= -L/usr/local/lib .ifdef PROFILE LDFLAGS+= -pg .endif LIBS+= -lssl -lcrypto -ltdb -lz OBJS= ${SRCS:S/.c/.o/:S/.y/.o/} DISTFILES= *.[chyl] Makefile GNUmakefile *.[1-9] fdm-sanitize \ README MANUAL TODO CHANGES \ `find examples compat -type f -and ! -path '*CVS*'` CLEANFILES= ${PROG} *.o compat/*.o y.tab.c y.tab.h .depend \ ${PROG}-*.tar.gz *~ */*~ *.ln ${PROG}.core MANUAL index.html .c.o: ${CC} ${CFLAGS} ${INCDIRS} -c ${.IMPSRC} -o ${.TARGET} .y.o: ${YACC} ${.IMPSRC} ${CC} ${CFLAGS} ${INCDIRS} -c y.tab.c -o ${.TARGET} all: ${PROG} ${PROG}: ${OBJS} ${CC} ${LDFLAGS} -o ${PROG} ${LIBS} ${OBJS} dist: clean manual grep '^#DEBUG=' Makefile grep '^#DEBUG=' GNUmakefile [ "`(grep '^VERSION' Makefile; grep '^VERSION' GNUmakefile)| \ uniq -u`" = "" ] tar -zc \ -s '/.*/${PROG}-${VERSION}\/\0/' \ -f ${PROG}-${VERSION}.tar.gz ${DISTFILES} lint: lint -cehvx ${CFLAGS:M-D*} ${SRCS:M*.c} depend: mkdep ${CFLAGS} ${INCDIRS} ${SRCS:M*.c} regress: ${PROG} cd regress && ${MAKE} yannotate: awk -f yannotate.awk parse.y > parse.y.new mv parse.y.new parse.y trim parse.y upload-index.html: scp index.html nicm@shell.sf.net:index.html ssh nicm@shell.sf.net sh update-index-fdm.sh update-index.html: manual nroff -mdoc fdm.conf.5|m2h -u > fdm.conf.5.html nroff -mdoc fdm.1|m2h -u > fdm.1.html awk -v V=${VERSION} -f makeindex.awk index.html.in > index.html rm -f fdm.conf.5.html fdm.1.html manual: awk -f makemanual.awk MANUAL.in > MANUAL install: all ${INSTALLBIN} ${PROG} ${DESTDIR}${PREFIX}/bin/${PROG} ${INSTALLMAN} ${PROG}.1 ${DESTDIR}${PREFIX}/man/man1/ ${INSTALLMAN} ${PROG}.conf.5 ${DESTDIR}${PREFIX}/man/man5/ uninstall: rm -f ${DESTDIR}${PREFIX}/bin/${PROG} rm -f ${DESTDIR}${PREFIX}/man/man1/${PROG}.1 rm -f ${DESTDIR}${PREFIX}/man/man5/${PROG}.conf.5 clean: rm -f ${CLEANFILES}