-# $Cambridge: exim/src/OS/Makefile-Base,v 1.6 2005/05/17 09:53:34 ph10 Exp $
+# $Cambridge: exim/src/OS/Makefile-Base,v 1.16 2009/01/20 16:06:14 fanf2 Exp $
# This file is the basis of the main makefile for Exim and friends. The
# makefile at the top level arranges to build the main makefile by calling
# therefore always be run, even if the files exist. This shouldn't in fact be a
# problem, but it does no harm. Other make programs will just ignore this.
-.PHONY: all allexim buildauths buildlookups buildpcre buildrouters \
+.PHONY: all allexim buildauths buildlookups buildrouters \
buildtransports checklocalmake clean
# This is the real default target for all the various exim binaries and
# scripts, once the configuring stuff is done.
-allexim: config.h buildpcre $(EXIM_MONITOR) exicyclog exinext exiwhat \
+allexim: config.h $(EXIM_MONITOR) exicyclog exinext exiwhat \
exigrep eximstats exipick exiqgrep exiqsumm \
transport-filter.pl convert4r3 convert4r4 \
exim_checkaccess \
-e "s?EXICYCLOG_MAX?$(EXICYCLOG_MAX)?" \
-e "s?COMPRESS_COMMAND?$(COMPRESS_COMMAND)?" \
-e "s?COMPRESS_SUFFIX?$(COMPRESS_SUFFIX)?" \
- -e "s?CHOWN_COMMAND?$(CHOWN_COMMAND)?" \
-e "s?CHGRP_COMMAND?$(CHGRP_COMMAND)?" \
+ -e "s?CHMOD_COMMAND?$(CHMOD_COMMAND)?" \
+ -e "s?CHOWN_COMMAND?$(CHOWN_COMMAND)?" \
-e "s?MV_COMMAND?$(MV_COMMAND)?" \
-e "s?RM_COMMAND?$(RM_COMMAND)?" \
+ -e "s?TOUCH_COMMAND?$(TOUCH_COMMAND)?" \
../src/exicyclog.src > exicyclog-t
@mv exicyclog-t exicyclog
@chmod a+x exicyclog
OBJ_WITH_CONTENT_SCAN = malware.o mime.o regex.o spam.o spool_mbox.o
OBJ_WITH_OLD_DEMIME = demime.o
-OBJ_EXPERIMENTAL = bmi_spam.o spf.o srs.o dk.o
+OBJ_EXPERIMENTAL = bmi_spam.o spf.o srs.o dk.o dkim-exim.o dcc.o
# Targets for final binaries; the main one has a build number which is
# updated each time. We don't bother with that for the auxiliaries.
local_scan.o $(EXIM_PERL) $(OBJ_WITH_CONTENT_SCAN) \
$(OBJ_WITH_OLD_DEMIME) $(OBJ_EXPERIMENTAL)
-exim: pcre/libpcre.a lookups/lookups.a auths/auths.a \
+exim: lookups/lookups.a auths/auths.a \
routers/routers.a transports/transports.a \
$(OBJ_EXIM) version.c
@echo " "
rm -f exim
@echo "$(LNCC) -o exim"
$(FE)$(PURIFY) $(LNCC) -o exim $(LFLAGS) $(OBJ_EXIM) version.o \
- pcre/libpcre.a \
routers/routers.a transports/transports.a lookups/lookups.a \
auths/auths.a \
$(LIBRESOLV) $(LIBS) $(LIBS_EXIM) $(IPV6_LIBS) $(EXTRALIBS) \
$(EXTRALIBS_EXIM) $(DBMLIB) $(LOOKUP_LIBS) $(AUTH_LIBS) \
- $(PERL_LIBS) $(TLS_LIBS) $(LDFLAGS)
+ $(PERL_LIBS) $(TLS_LIBS) $(PCRE_LIBS) $(LDFLAGS)
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
echo $(STRIP_COMMAND) exim; \
$(STRIP_COMMAND) exim; \
OBJ_MONBIN = util-spool_in.o util-store.o util-string.o tod.o tree.o $(MONBIN)
-eximon.bin: $(EXIMON_EDITME) eximon $(OBJ_MONBIN) pcre/libpcre.a \
+eximon.bin: $(EXIMON_EDITME) eximon $(OBJ_MONBIN) \
../exim_monitor/em_version.c
@echo "$(CC) exim_monitor/em_version.c"
$(FE)$(CC) -o em_version.o -c \
$(CFLAGS) $(XINCLUDE) -I. ../exim_monitor/em_version.c
@echo "$(LNCC) -o eximon.bin"
$(FE)$(PURIFY) $(LNCC) -o eximon.bin em_version.o $(LFLAGS) $(XLFLAGS) \
- $(OBJ_MONBIN) -lXaw -lXmu -lXt -lXext -lX11 pcre/libpcre.a \
+ $(OBJ_MONBIN) -lXaw -lXmu -lXt -lXext -lX11 $(PCRE_LIBS) \
$(LIBS) $(LIBS_EXIMON) $(EXTRALIBS) $(EXTRALIBS_EXIMON) -lc
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
echo $(STRIP_COMMAND) eximon.bin; \
# The local scan module depends only on its own special header, and is compiled
# from a source whose location is set by configuration.
-local_scan.o: Makefile local_scan.h ../$(LOCAL_SCAN_SOURCE)
+local_scan.o: Makefile config.h local_scan.h ../$(LOCAL_SCAN_SOURCE)
@echo "$(CC) local_scan.c"
$(FE)$(CC) -c $(CFLAGS) -I. $(INCLUDE) -o local_scan.o ../$(LOCAL_SCAN_SOURCE)
# Dependencies for EXPERIMENTAL_* modules
bmi_spam.o: $(HDRS) bmi_spam.c
-spf.o: $(HDRS) spf.c
-srs.o: $(HDRS) srs.c
-dk.o: $(HDRS) dk.c
+spf.o: $(HDRS) spf.h spf.c
+srs.o: $(HDRS) srs.h srs.c
+dk.o: $(HDRS) dk.h dk.c
+dkim-exim.o: $(HDRS) dkim-exim.h dkim-exim.c
+dcc.o: $(HDRS) dcc.h dcc.c
# The module containing tables of available lookups, routers, auths, and
# transports must be rebuilt if any of them are. However, because the makefiles
../exim_monitor/`echo $@ | sed 's/o$$/c/'`
-# Targets for the various libraries that Exim uses. This coding is tedious,
-# because different versions of "make" behave in different ways with regard
-# to rebuilding. If these target names are of the form pcre/libpcre.a, for
-# example, then a forcing mechanism is required to get them obeyed each time.
-# That's fine on Solaris and other systems; the rebuilding of the exim target
-# happens only if the libraries are actually rebuilt. However, on IRIX, if
-# the target is forced, the exim target gets unnecessarily rebuilt even if
-# the .a file is not. Contrariwise, if we use dummy names, they don't interact
-# with the building of exim (and eximon.bin), but for libpcre Exim doesn't get
-# rebuilt when it should. (For the others it does, because they remove
-# drtables.o when they rebuild.) To get round this, we forcibly remove the
-# binary when it needs to be rebuilt.
-
-# The PCRE regex library. Move the pcretest program to the util directory. Some
-# "clever" versions of make notice that there are two successive shell
-# commands, and they run them in the same shell. This means that we have to
-# take care to encapsulate change of directory in parentheses, so that it
-# reverts when it should.
-
-buildpcre:
- @(cd pcre; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" \
- FE="$(FE)" CFLAGS="$(CFLAGS) $(PCRE_CFLAGS)" \
- RANLIB="$(RANLIB)" HDRS="$(PHDRS)" \
- INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)")
- @if $(SHELL) $(SCRIPTS)/newer pcre/libpcre.a exim; then \
- rm -f exim eximon.bin; fi
- @echo " "
+# Targets for the various libraries that Exim uses.
# The lookups library.
-buildlookups:
+buildlookups lookups/lookups.a: config.h
@cd lookups; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
- FE="$(FE)" RANLIB="$(RANLIB)" HDRS="$(PHDRS)" \
+ FE="$(FE)" RANLIB="$(RANLIB)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \
INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE) $(LOOKUP_INCLUDE)"; \
echo " "
# The routers library.
-buildrouters:
+buildrouters routers/routers.a: config.h
@cd routers; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
- FE="$(FE)" RANLIB="$(RANLIB)" HDRS="$(PHDRS)" \
+ FE="$(FE)" RANLIB="$(RANLIB)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \
INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \
echo " "
# The transports library.
-buildtransports:
+buildtransports transports/transports.a: config.h
@cd transports; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
- FE="$(FE)" RANLIB="$(RANLIB)" HDRS="$(PHDRS)" \
+ FE="$(FE)" RANLIB="$(RANLIB)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \
INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \
echo " "
# The library of authorization modules
-buildauths:
+buildauths auths/auths.a: config.h
@cd auths; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
- FE="$(FE)" RANLIB="$(RANLIB)" HDRS="$(PHDRS)" \
+ FE="$(FE)" RANLIB="$(RANLIB)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \
INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \
echo " "
tod.o version.o $(LIBS) $(DBMLIB)
rm -f dbfn.o
-test_host: config.h host.c dns.c dummies.o sa-globals.o sa-os.o store.o \
- string.o tod.o tree.o
+test_host: config.h child.c host.c dns.c dummies.c sa-globals.o os.o \
+ store.o string.o tod.o tree.o
+ $(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE -DTEST_HOST child.c
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE -DTEST_HOST host.c
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE -DTEST_HOST dns.c
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE -DTEST_HOST dummies.c
$(LNCC) -o test_host $(LFLAGS) \
- host.o dns.o dummies.o sa-globals.o os.o store.o string.o tod.o tree.o \
- $(LIBS) $(LIBRESOLV)
- rm -f dummies.o host.o dns.o
+ host.o child.o dns.o dummies.o sa-globals.o os.o store.o string.o \
+ tod.o tree.o $(LIBS) $(LIBRESOLV)
+ rm -f child.o dummies.o host.o dns.o
test_os: os.h os.c dummies.o sa-globals.o store.o string.o tod.o
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE os.c