X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/ebcb507fbcf4a0b0d75592c0d3f5193a8d3b0799..46c573de5f3da029d2e7c6f4dbbb20a9d88faad5:/src/OS/Makefile-Base diff --git a/src/OS/Makefile-Base b/src/OS/Makefile-Base index 2b805d870..29a6ad371 100644 --- a/src/OS/Makefile-Base +++ b/src/OS/Makefile-Base @@ -1,4 +1,4 @@ -# $Cambridge: exim/src/OS/Makefile-Base,v 1.8 2005/09/12 13:50:03 ph10 Exp $ +# $Cambridge: exim/src/OS/Makefile-Base,v 1.17 2009/06/10 07:34:04 tom 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 @@ -96,20 +96,20 @@ config.h: Makefile buildconfig ../src/config.h.defaults $(EDITME) # 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 buildpdkim 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 \ exim_dbmbuild exim_dumpdb exim_fixdb exim_tidydb exim_lock \ buildlookups buildrouters buildtransports \ - buildauths exim + buildauths buildpdkim exim # Targets for special-purpose configuration header builders @@ -132,10 +132,12 @@ exicyclog: Makefile config.h ../src/exicyclog.src -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 @@ -298,23 +300,24 @@ convert4r4: Makefile ../src/convert4r4.src 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 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. OBJ_EXIM = acl.o child.o crypt16.o daemon.o dbfn.o debug.o deliver.o \ directory.o dns.o drtables.o enq.o exim.o expand.o filter.o \ - filtertest.o globals.o \ + filtertest.o globals.o dkim.o \ header.o host.o ip.o log.o lss.o match.o moan.o \ os.o parse.o queue.o \ rda.o readconf.o receive.o retry.o rewrite.o rfc2047.o \ route.o search.o sieve.o smtp_in.o smtp_out.o spool_in.o spool_out.o \ store.o string.o tls.o tod.o transport.o tree.o verify.o \ + lookups/lf_quote.o lookups/lf_check_file.o lookups/lf_sqlperform.o \ 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 pdkim/pdkim.a \ routers/routers.a transports/transports.a \ $(OBJ_EXIM) version.c @echo " " @@ -325,12 +328,11 @@ exim: pcre/libpcre.a lookups/lookups.a auths/auths.a \ 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 \ + auths/auths.a pdkim/pdkim.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; \ @@ -429,14 +431,14 @@ MONBIN = em_StripChart.o $(EXIMON_TEXTPOP) em_globals.o em_init.o \ 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; \ @@ -526,7 +528,7 @@ util-os.o: $(HDRS) os.c # 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) @@ -577,7 +579,7 @@ tod.o: $(HDRS) tod.c transport.o: $(HDRS) transport.c tree.o: $(HDRS) tree.c verify.o: $(HDRS) verify.c - +dkim.o: $(HDRS) dkim.c # Dependencies for WITH_CONTENT_SCAN modules @@ -598,7 +600,7 @@ demime.o: $(HDRS) demime.c bmi_spam.o: $(HDRS) bmi_spam.c spf.o: $(HDRS) spf.h spf.c srs.o: $(HDRS) srs.h srs.c -dk.o: $(HDRS) dk.h dk.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 @@ -633,45 +635,20 @@ $(MONBIN): $(HDRS) ../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)" RM_COMMAND="$(RM_COMMAND)" 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)" \ + CFLAGS_DYNAMIC="$(CFLAGS_DYNAMIC)" \ 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)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \ INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \ @@ -679,7 +656,7 @@ buildrouters: # 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)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \ INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \ @@ -687,12 +664,20 @@ buildtransports: # 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)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \ INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \ echo " " +# The PDKIM library + +buildpdkim pdkim/pdkim.a: config.h + @cd pdkim; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \ + FE="$(FE)" RANLIB="$(RANLIB)" RM_COMMAND="$(RM_COMMAND)" HDRS="$(PHDRS)" \ + INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)"; \ + echo " " + # The "clean", "install", and "makefile" targets just pass themselves back to # the main Exim makefile. These targets will be obeyed only if "make" is obeyed # for them in the build directory. @@ -727,15 +712,16 @@ test_dbfn: config.h dbfn.c dummies.o sa-globals.o sa-os.o store.o \ 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