21
# The compile commands can be very long. To make the output look better,
22
# they are not normally echoed in full. To get full echoing, the caller
23
# must set FULLECHO='' on the command line and call make with -e. We default
24
# FULLECHO to '@' to suppress the full echo. Then define an abbreviation.
20
29
# The default target double-checks the existence of $(EDITME) and then arranges
21
30
# to touch it if it exists and any of the optional configuration files, which
106
115
# Targets for special-purpose configuration header builders
107
116
buildconfig: buildconfig.c
108
$(CC) $(CFLAGS) $(INCLUDE) -o buildconfig buildconfig.c $(LIBS)
117
@echo "$(CC) buildconfig.c"
118
$(FE)$(CC) $(CFLAGS) $(INCLUDE) -o buildconfig buildconfig.c $(LIBS)
111
121
# Target for the exicyclog utility script
112
122
exicyclog: Makefile config.h ../src/exicyclog.src
115
125
-e "s?PROCESSED_FLAG?This file has been so processed.?"\
129
139
../src/exicyclog.src > exicyclog-t
130
140
@mv exicyclog-t exicyclog
131
141
@chmod a+x exicyclog
132
@echo ">>> exicyclog script built"; echo ""
142
@echo ">>> exicyclog script built"
134
144
# Target for the exinext utility script
135
145
exinext: Makefile config.h ../src/exinext.src
138
148
-e "s?PROCESSED_FLAG?This file has been so processed.?"\
216
226
../src/exigrep.src > exigrep-t
217
227
@mv exigrep-t exigrep
218
228
@chmod a+x exigrep
219
@echo ">>> exigrep script built"; echo ""
229
@echo ">>> exigrep script built"
221
231
eximstats: Makefile ../src/eximstats.src
224
234
-e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
225
235
../src/eximstats.src > eximstats-t
226
236
@mv eximstats-t eximstats
227
237
@chmod a+x eximstats
228
@echo ">>> eximstats script built"; echo ""
238
@echo ">>> eximstats script built"
230
240
exiqgrep: Makefile ../src/exiqgrep.src
233
243
-e "s?PROCESSED_FLAG?This file has been so processed.?"\
238
248
../src/exiqgrep.src > exiqgrep-t
239
249
@mv exiqgrep-t exiqgrep
240
250
@chmod a+x exiqgrep
241
@echo ">>> exiqgrep script built"; echo ""
251
@echo ">>> exiqgrep script built"
243
253
exiqsumm: Makefile ../src/exiqsumm.src
245
sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
255
@sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
246
256
../src/exiqsumm.src > exiqsumm-t
247
257
@mv exiqsumm-t exiqsumm
248
258
@chmod a+x exiqsumm
249
@echo ">>> exiqsumm script built"; echo ""
259
@echo ">>> exiqsumm script built"
251
261
exipick: Makefile ../src/exipick.src
253
sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
263
@sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
254
264
-e "s?SPOOL_DIRECTORY?$(SPOOL_DIRECTORY)?" \
255
265
../src/exipick.src > exipick-t
256
266
@mv exipick-t exipick
257
267
@chmod a+x exipick
258
@echo ">>> exipick script built"; echo ""
268
@echo ">>> exipick script built"
260
270
transport-filter.pl: Makefile ../src/transport-filter.src
261
271
@rm -f transport-filter.pl
262
sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
272
@sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
263
273
../src/transport-filter.src > transport-filter.pl-t
264
274
@mv transport-filter.pl-t transport-filter.pl
265
275
@chmod a+x transport-filter.pl
266
@echo ">>> transport-filter.pl script built"; echo ""
276
@echo ">>> transport-filter.pl script built"
268
278
convert4r3: Makefile ../src/convert4r3.src
269
279
@rm -f convert4r3
270
sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
280
@sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
271
281
../src/convert4r3.src > convert4r3-t
272
282
@mv convert4r3-t convert4r3
273
283
@chmod a+x convert4r3
274
@echo ">>> convert4r3 script built"; echo ""
284
@echo ">>> convert4r3 script built"
276
286
convert4r4: Makefile ../src/convert4r4.src
277
287
@rm -f convert4r4
278
sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
288
@sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
279
289
../src/convert4r4.src > convert4r4-t
280
290
@mv convert4r4-t convert4r4
281
291
@chmod a+x convert4r4
282
@echo ">>> convert4r4 script built"; echo ""
292
@echo ">>> convert4r4 script built"
295
# These are objects of optional features. They are always compiled, but
296
# if the corresponding #defines are not set, they wind up empty and
297
# are thrown away by the linker.
299
OBJ_WITH_CONTENT_SCAN = malware.o mime.o regex.o spam.o spool_mbox.o
300
OBJ_WITH_OLD_DEMIME = demime.o
301
OBJ_EXPERIMENTAL = bmi_spam.o spf.o srs.o dk.o
285
303
# Targets for final binaries; the main one has a build number which is
286
304
# updated each time. We don't bother with that for the auxiliaries.
293
311
rda.o readconf.o receive.o retry.o rewrite.o rfc2047.o \
294
312
route.o search.o sieve.o smtp_in.o smtp_out.o spool_in.o spool_out.o \
295
313
store.o string.o tls.o tod.o transport.o tree.o verify.o \
296
local_scan.o $(EXIM_PERL)
314
local_scan.o $(EXIM_PERL) $(OBJ_WITH_CONTENT_SCAN) \
315
$(OBJ_WITH_OLD_DEMIME) $(OBJ_EXPERIMENTAL)
298
317
exim: pcre/libpcre.a lookups/lookups.a auths/auths.a \
299
318
routers/routers.a transports/transports.a \
302
321
awk '{ print ($$1+1) }' cnumber.h > cnumber.temp
303
322
rm -f cnumber.h; mv cnumber.temp cnumber.h
304
$(CC) -c $(CFLAGS) $(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE) version.c
323
@echo "$(CC) version.c"
324
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE) version.c
306
$(PURIFY) $(LNCC) -o exim $(LFLAGS) $(OBJ_EXIM) version.o \
326
@echo "$(LNCC) -o exim"
327
$(FE)$(PURIFY) $(LNCC) -o exim $(LFLAGS) $(OBJ_EXIM) version.o \
308
329
routers/routers.a transports/transports.a lookups/lookups.a \
310
331
$(LIBRESOLV) $(LIBS) $(LIBS_EXIM) $(IPV6_LIBS) $(EXTRALIBS) \
311
$(EXTRALIBS_EXIM) $(DBMLIB) $(LOOKUP_LIBS) $(PERL_LIBS) $(TLS_LIBS)
332
$(EXTRALIBS_EXIM) $(DBMLIB) $(LOOKUP_LIBS) $(AUTH_LIBS) \
333
$(PERL_LIBS) $(TLS_LIBS) $(LDFLAGS)
312
334
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
313
335
echo $(STRIP_COMMAND) exim; \
314
336
$(STRIP_COMMAND) exim; \
323
345
OBJ_DUMPDB = exim_dumpdb.o util-os.o util-store.o
325
347
exim_dumpdb: $(OBJ_DUMPDB)
326
$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_dumpdb $(LFLAGS) $(OBJ_DUMPDB) \
348
@echo "$(LNCC) -o exim_dumpdb"
349
$(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_dumpdb $(LFLAGS) $(OBJ_DUMPDB) \
327
350
$(LIBS) $(EXTRALIBS) $(DBMLIB)
328
351
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
329
352
echo $(STRIP_COMMAND) exim_dumpdb; \
330
353
$(STRIP_COMMAND) exim_dumpdb; \
333
355
@echo ">>> exim_dumpdb utility built"
338
360
OBJ_FIXDB = exim_fixdb.o util-os.o util-store.o
340
362
exim_fixdb: $(OBJ_FIXDB)
341
$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_fixdb $(LFLAGS) $(OBJ_FIXDB) \
363
@echo "$(LNCC) -o exim_fixdb"
364
$(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_fixdb $(LFLAGS) $(OBJ_FIXDB) \
342
365
$(LIBS) $(EXTRALIBS) $(DBMLIB)
343
366
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
344
367
echo $(STRIP_COMMAND) exim_fixdb; \
345
368
$(STRIP_COMMAND) exim_fixdb; \
348
370
@echo ">>> exim_fixdb utility built"
353
375
OBJ_TIDYDB = exim_tidydb.o util-os.o util-store.o
355
377
exim_tidydb: $(OBJ_TIDYDB)
356
$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_tidydb $(LFLAGS) $(OBJ_TIDYDB) \
378
@echo "$(LNCC) -o exim_tidydb"
379
$(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_tidydb $(LFLAGS) $(OBJ_TIDYDB) \
357
380
$(LIBS) $(EXTRALIBS) $(DBMLIB)
358
381
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
359
382
echo $(STRIP_COMMAND) exim_tidydb; \
360
383
$(STRIP_COMMAND) exim_tidydb; \
363
385
@echo ">>> exim_tidydb utility built"
366
388
# The utility for building dbm files
368
390
exim_dbmbuild: exim_dbmbuild.o
369
$(LNCC) -o exim_dbmbuild $(LFLAGS) exim_dbmbuild.o \
391
@echo "$(LNCC) -o exim_dbmbuild"
392
$(FE)$(LNCC) -o exim_dbmbuild $(LFLAGS) exim_dbmbuild.o \
370
393
$(LIBS) $(EXTRALIBS) $(DBMLIB)
371
394
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
372
395
echo $(STRIP_COMMAND) exim_dbmbuild; \
373
396
$(STRIP_COMMAND) exim_dbmbuild; \
376
398
@echo ">>> exim_dbmbuild utility built"
379
401
# The utility for locking a mailbox while messing around with it
381
403
exim_lock: exim_lock.c
382
$(CC) -c $(CFLAGS) $(INCLUDE) exim_lock.c
383
$(LNCC) -o exim_lock $(LFLAGS) exim_lock.o \
404
@echo "$(CC) exim_lock.c"
405
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) exim_lock.c
406
@echo "$(LNCC) -o exim_lock"
407
$(FE)$(LNCC) -o exim_lock $(LFLAGS) exim_lock.o \
384
408
$(LIBS) $(EXTRALIBS)
385
409
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
386
410
echo $(STRIP_COMMAND) exim_lock; \
387
411
$(STRIP_COMMAND) exim_lock; \
390
413
@echo ">>> exim_lock utility built"
409
432
eximon.bin: $(EXIMON_EDITME) eximon $(OBJ_MONBIN) pcre/libpcre.a \
410
433
../exim_monitor/em_version.c
411
$(CC) -o em_version.o -c \
434
@echo "$(CC) exim_monitor/em_version.c"
435
$(FE)$(CC) -o em_version.o -c \
412
436
$(CFLAGS) $(XINCLUDE) -I. ../exim_monitor/em_version.c
413
$(PURIFY) $(LNCC) -o eximon.bin em_version.o $(LFLAGS) $(XLFLAGS) \
437
@echo "$(LNCC) -o eximon.bin"
438
$(FE)$(PURIFY) $(LNCC) -o eximon.bin em_version.o $(LFLAGS) $(XLFLAGS) \
414
439
$(OBJ_MONBIN) -lXaw -lXmu -lXt -lXext -lX11 pcre/libpcre.a \
415
440
$(LIBS) $(LIBS_EXIMON) $(EXTRALIBS) $(EXTRALIBS_EXIMON) -lc
416
441
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
417
442
echo $(STRIP_COMMAND) eximon.bin; \
418
443
$(STRIP_COMMAND) eximon.bin; \
421
445
@echo ">>> exim monitor binary built"
432
456
PHDRS = ../config.h ../dbfunctions.h ../dbstuff.h ../exim.h ../functions.h ../globals.h ../local_scan.h ../macros.h ../mytypes.h ../structs.h
435
.c.o:; $(CC) -c $(CFLAGS) -I. $(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE) $*.c
459
.c.o:; @echo "$(CC) $*.c"
460
$(FE)$(CC) -c $(CFLAGS) -I. $(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE) $*.c
437
462
# This is the dummy module for use by test compiles of individual modules. It
438
463
# contains functions such as log_write() that may be called from bits of Exim
443
468
# Compile instructions for perl.o for when EXIM_PERL is set
445
470
perl.o: $(HDRS) perl.c
446
$(PERL_CC) $(PERL_CCOPTS) $(INCLUDE) -c perl.c
471
@echo "$(PERL_CC) perl.c"
472
$(FE)$(PERL_CC) $(PERL_CCOPTS) $(CFLAGS) $(INCLUDE) -c perl.c
448
474
# Compile instructions for the database utility modules
450
476
exim_dumpdb.o: $(HDRS) exim_dbutil.c
451
$(CC) -c $(CFLAGS) $(INCLUDE) \
477
@echo "$(CC) -DEXIM_DUMPDB exim_dbutil.c"
478
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) \
452
479
-DCOMPILE_UTILITY \
454
481
-o exim_dumpdb.o exim_dbutil.c
456
483
exim_fixdb.o: $(HDRS) exim_dbutil.c
457
$(CC) -c $(CFLAGS) $(INCLUDE) \
484
@echo "$(CC) -DEXIM_FIXDB exim_dbutil.c"
485
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) \
458
486
-DCOMPILE_UTILITY \
460
488
-o exim_fixdb.o exim_dbutil.c
462
490
exim_tidydb.o: $(HDRS) exim_dbutil.c
463
$(CC) -c $(CFLAGS) $(INCLUDE) \
491
@echo "$(CC) -DEXIM_TIDYDB exim_dbutil.c"
492
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) \
464
493
-DCOMPILE_UTILITY \
466
495
-o exim_tidydb.o exim_dbutil.c
468
497
# Compile instructions for exim_dbmbuild
470
499
exim_dbmbuild.o: $(HDRS) exim_dbmbuild.c
471
$(CC) -c $(CFLAGS) $(INCLUDE) -o exim_dbmbuild.o exim_dbmbuild.c
500
@echo "$(CC) exim_dbmbuild.c"
501
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) -o exim_dbmbuild.o exim_dbmbuild.c
473
503
# Utilities use special versions of some modules - typically with debugging
476
506
util-spool_in.o: $(HDRS) spool_in.c
477
$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY -o util-spool_in.o spool_in.c
507
@echo "$(CC) -DCOMPILE_UTILITY spool_in.c"
508
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY -o util-spool_in.o spool_in.c
479
510
util-store.o: $(HDRS) store.c
480
$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY -o util-store.o store.c
511
@echo "$(CC) -DCOMPILE_UTILITY store.c"
512
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY -o util-store.o store.c
482
514
util-string.o: $(HDRS) string.c
483
$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY -o util-string.o string.c
515
@echo "$(CC) -DCOMPILE_UTILITY string.c"
516
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY -o util-string.o string.c
485
518
util-os.o: $(HDRS) os.c
486
$(CC) -c $(CFLAGS) $(INCLUDE) \
519
@echo "$(CC) -DCOMPILE_UTILITY os.c"
520
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) \
487
521
-DCOMPILE_UTILITY \
488
522
-DOS_LOAD_AVERAGE \
489
523
-DFIND_RUNNING_INTERFACES \
493
527
# from a source whose location is set by configuration.
495
529
local_scan.o: Makefile local_scan.h ../$(LOCAL_SCAN_SOURCE)
496
$(CC) -c $(CFLAGS) -I. $(INCLUDE) -o local_scan.o ../$(LOCAL_SCAN_SOURCE)
530
@echo "$(CC) local_scan.c"
531
$(FE)$(CC) -c $(CFLAGS) -I. $(INCLUDE) -o local_scan.o ../$(LOCAL_SCAN_SOURCE)
498
533
# Dependencies for the "ordinary" exim modules
543
578
tree.o: $(HDRS) tree.c
544
579
verify.o: $(HDRS) verify.c
582
# Dependencies for WITH_CONTENT_SCAN modules
584
malware.o: $(HDRS) malware.c
585
mime.o: $(HDRS) mime.c
586
regex.o: $(HDRS) regex.c
587
spam.o: $(HDRS) spam.c
588
spool_mbox.o: $(HDRS) spool_mbox.c
591
# Dependencies for WITH_OLD_DEMIME modules
593
demime.o: $(HDRS) demime.c
596
# Dependencies for EXPERIMENTAL_* modules
598
bmi_spam.o: $(HDRS) bmi_spam.c
599
spf.o: $(HDRS) spf.h spf.c
600
srs.o: $(HDRS) srs.h srs.c
601
dk.o: $(HDRS) dk.h dk.c
546
603
# The module containing tables of available lookups, routers, auths, and
547
604
# transports must be rebuilt if any of them are. However, because the makefiles
548
605
# for the drivers are always run, we don't actually put the dependencies here,
571
628
em_xs.o: ../exim_monitor/em_xs.c ../exim_monitor/em_hdr.h
572
629
em_version.o: ../exim_monitor/em_version.c ../exim_monitor/em_hdr.h
573
630
$(MONBIN): $(HDRS)
574
$(CC) -o $@ -c $(CFLAGS) -I. -I../exim_monitor $(INCLUDE) $(XINCLUDE) \
631
@echo "$(CC) exim_monitor/`echo $@ | sed 's/o$$/c/'`"
632
$(FE)$(CC) -o $@ -c $(CFLAGS) -I. -I../exim_monitor $(INCLUDE) $(XINCLUDE) \
575
633
../exim_monitor/`echo $@ | sed 's/o$$/c/'`
598
656
@(cd pcre; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" \
599
CFLAGS="$(CFLAGS) $(PCRE_CFLAGS)" \
657
FE="$(FE)" CFLAGS="$(CFLAGS) $(PCRE_CFLAGS)" \
600
658
RANLIB="$(RANLIB)" HDRS="$(PHDRS)" \
601
659
INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE)")
602
660
@if $(SHELL) $(SCRIPTS)/newer pcre/libpcre.a exim; then \
603
661
rm -f exim eximon.bin; fi
605
664
# The lookups library.
608
667
@cd lookups; $(MAKE) SHELL=$(SHELL) AR="$(AR)" $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
609
RANLIB="$(RANLIB)" HDRS="$(PHDRS)" \
668
FE="$(FE)" RANLIB="$(RANLIB)" HDRS="$(PHDRS)" \
610
669
INCLUDE="$(INCLUDE) $(IPV6_INCLUDE) $(TLS_INCLUDE) $(LOOKUP_INCLUDE)"; \