239 lines
7.7 KiB
Makefile
239 lines
7.7 KiB
Makefile
# To test with valgrind:
|
|
# make -i tests NORANDOMIZE="" VALGRIND="valgrind --tool=memcheck --log-file=/some/where.%p"
|
|
SHELL = /bin/sh
|
|
WARN = -Wmissing-prototypes -Wformat -Wno-comment -fno-common
|
|
OPTS = 'WARN=$(WARN)'
|
|
DIRS = src/util src/global src/dns src/tls src/xsasl src/master src/milter \
|
|
src/postfix src/fsstone src/smtpstone \
|
|
src/sendmail src/error src/pickup src/cleanup src/smtpd src/local \
|
|
src/trivial-rewrite src/qmgr src/oqmgr src/smtp src/bounce \
|
|
src/pipe src/showq src/postalias src/postcat src/postconf src/postdrop \
|
|
src/postkick src/postlock src/postlog src/postmap src/postqueue \
|
|
src/postsuper src/qmqpd src/spawn src/flush src/verify \
|
|
src/virtual src/proxymap src/anvil src/scache src/discard src/tlsmgr \
|
|
src/postmulti src/postscreen src/dnsblog src/tlsproxy \
|
|
src/posttls-finger src/postlogd
|
|
MANDIRS = proto man html
|
|
LIBEXEC = libexec/post-install libexec/postfix-script libexec/postfix-wrapper \
|
|
libexec/postmulti-script libexec/postfix-tls-script
|
|
PLUGINS = meta/dynamicmaps.cf
|
|
META = meta/main.cf.proto meta/master.cf.proto meta/postfix-files \
|
|
meta/makedefs.out $(PLUGINS)
|
|
EXPAND = sed -e "s;\$${LIB_PREFIX};$(LIB_PREFIX);" \
|
|
-e "s;\$${LIB_SUFFIX};$(LIB_SUFFIX);"
|
|
SHLIB_DIR_OVERRIDE = \
|
|
$${shlib_directory:-`$(SHLIB_ENV) bin/postconf -dhx shlib_directory`}
|
|
|
|
default: update
|
|
|
|
# While generating the top-level Makefile, we must get the PLUGIN_LD
|
|
# setting directly from the latest makedefs.out result.
|
|
|
|
makefiles Makefiles conf/makedefs.out:
|
|
(echo "# Do not edit -- this file documents how Postfix was built for your machine."; $(SHELL) makedefs) >makedefs.tmp
|
|
set +e; if cmp makedefs.tmp conf/makedefs.out; then rm makedefs.tmp; \
|
|
else mv makedefs.tmp conf/makedefs.out; fi >/dev/null 2>/dev/null
|
|
set -e; for i in $(DIRS); do \
|
|
(set -e; echo "[$$i]"; cd $$i; rm -f Makefile; \
|
|
$(MAKE) -f Makefile.in Makefile MAKELEVEL=) || exit 1; \
|
|
done
|
|
@set -- `grep '^PLUGIN_LD' conf/makedefs.out`; \
|
|
rm -f Makefile; (cat conf/makedefs.out; \
|
|
case "$$3" in \
|
|
""|":") grep -v '^PLUGINS' Makefile.in;; \
|
|
*) cat Makefile.in;; \
|
|
esac) >Makefile
|
|
|
|
update tests root_tests:
|
|
set -e; for i in $(DIRS); do \
|
|
(set -e; echo "[$$i]"; cd $$i; $(MAKE) $(OPTS) $@ MAKELEVEL=) || exit 1; \
|
|
done
|
|
|
|
update: $(META) $(LIBEXEC)
|
|
|
|
libexec/post-install: conf/post-install
|
|
rm -f $@ && ln -f $? $@
|
|
|
|
# Censor out build directory information.
|
|
|
|
meta/makedefs.out: conf/makedefs.out
|
|
grep -v SHLIB_ENV $? > $@
|
|
|
|
meta/postfix-files: conf/postfix-files conf/makedefs.out Makefile
|
|
rm -f $@
|
|
(if [ "${SHLIB_DIR}" = "no" -o "${SHLIB_DIR}" = "" ]; then \
|
|
sed -e '/^\$$shlib_directory/d' \
|
|
-e '/dynamicmaps.cf/d' conf/postfix-files; \
|
|
elif [ "${PLUGIN_LD}" = ":" -o "${PLUGIN_LD}" = "" ]; then \
|
|
sed -e '/dynamicmaps.cf/d' \
|
|
-e '/^\$$shlib_directory\/\$${LIB_PREFIX}/d' \
|
|
conf/postfix-files | $(EXPAND); \
|
|
else \
|
|
$(EXPAND) conf/postfix-files | awk -F: ' \
|
|
BEGIN { \
|
|
count = split("'"$(DEFINED_MAP_TYPES)"'", names, " "); \
|
|
for (n = 1; n <= count; n++) \
|
|
have["$$shlib_directory/$(LIB_PREFIX)" names[n] \
|
|
"$(LIB_SUFFIX)"] = 1; } \
|
|
/^[$$]shlib_directory.$(LIB_PREFIX)/ { \
|
|
if (have[$$1]) print; next } \
|
|
{ print } \
|
|
'; \
|
|
fi) | case "$(MAKE_FIX)" in \
|
|
*) cat;; \
|
|
esac > $@
|
|
|
|
libexec/postfix-script: conf/postfix-script
|
|
rm -f $@ && ln -f $? $@
|
|
|
|
libexec/postfix-tls-script: conf/postfix-tls-script
|
|
rm -f $@ && ln -f $? $@
|
|
|
|
libexec/postfix-wrapper: conf/postfix-wrapper
|
|
rm -f $@ && ln -f $? $@
|
|
|
|
meta/main.cf.proto: conf/main.cf
|
|
rm -f $@ && ln -f $? $@
|
|
|
|
meta/master.cf.proto: conf/master.cf
|
|
rm -f $@ && ln -f $? $@
|
|
|
|
libexec/postmulti-script: conf/postmulti-script
|
|
rm -f $@ && ln -f $? $@
|
|
|
|
meta/dynamicmaps.cf: conf/dynamicmaps.cf Makefile
|
|
rm -f $@ && $(EXPAND) conf/dynamicmaps.cf | $(AWK) ' \
|
|
BEGIN { split("'"$(DEFINED_MAP_TYPES)"'", map_types); \
|
|
for (n in map_types) has_type[map_types[n]] = n } \
|
|
/^#/ { print } \
|
|
/^[a-z]/ { if (has_type[$$1]) print } \
|
|
' >$@
|
|
|
|
manpages:
|
|
set -e; for i in $(MANDIRS); do \
|
|
(set -e; echo "[$$i]"; cd $$i; $(MAKE) -f Makefile.in $(OPTS) MAKELEVEL=) || exit 1; \
|
|
done </dev/null
|
|
|
|
# Some checks require a bin/postconf executable.
|
|
pre-release-checks: typo-check double-check missing-proxy-read-maps-check \
|
|
postlink-check postfix-files-check \
|
|
postconf-unimplemented-check postconf-undocumented-check \
|
|
check-table-proto check-see-postconf-d-output \
|
|
check-snapshot-nonprod
|
|
|
|
postfix-files-check:
|
|
mantools/check-postfix-files | diff /dev/null -
|
|
|
|
postlink-check:
|
|
$(SHLIB_ENV) mantools/check-postlink | diff /dev/null -
|
|
|
|
postconf-undocumented-check:
|
|
$(SHLIB_ENV) mantools/check-postconf-undocumented | diff /dev/null -
|
|
|
|
postconf-unimplemented-check:
|
|
$(SHLIB_ENV) mantools/check-postconf-unimplemented | diff /dev/null -
|
|
|
|
missing-proxy-read-maps-check:
|
|
$(SHLIB_ENV) mantools/missing-proxy-read-maps | diff /dev/null -
|
|
|
|
typo-check: spell-cc spell-install-proto-text spell-proto-html \
|
|
check-spell-history
|
|
|
|
double-check: double-cc double-install-proto-text double-proto-html \
|
|
check-double-history
|
|
|
|
spell-cc:
|
|
mantools/check-spell-cc | diff /dev/null -
|
|
|
|
spell-install-proto-text:
|
|
mantools/check-spell-install-proto-text | diff /dev/null -
|
|
|
|
spell-proto-html:
|
|
mantools/check-spell-proto-html | diff /dev/null -
|
|
|
|
double-cc:
|
|
mantools/check-double-cc | diff /dev/null -
|
|
|
|
double-install-proto-text:
|
|
mantools/check-double-install-proto-text | diff /dev/null -
|
|
|
|
double-proto-html:
|
|
mantools/check-double-proto-html | diff /dev/null -
|
|
|
|
check-spell-history:
|
|
mantools/check-spell-history | diff /dev/null -
|
|
|
|
check-double-history:
|
|
mantools/check-double-history | diff /dev/null -
|
|
|
|
check-table-proto:
|
|
mantools/check-table-proto | diff /dev/null -
|
|
|
|
check-see-postconf-d-output:
|
|
mantools/check-see-postconf-d-output | diff /dev/null -
|
|
|
|
check-snapshot-nonprod:
|
|
mantools/check-snapshot-nonprod
|
|
|
|
# The build-time shlib_directory setting must take precedence over
|
|
# the installed main.cf settings, otherwise we can't update an
|
|
# installed system from dynamicmaps=yes<->dynamicmaps=no or from
|
|
# shared=yes<->shared=no.
|
|
|
|
install: update
|
|
SHLIB_ENV_VAR= SHLIB_ENV_VAL= \
|
|
$(SHLIB_ENV) shlib_directory=$(SHLIB_DIR_OVERRIDE) $(SHELL) \
|
|
postfix-install $(POSTFIX_INSTALL_OPTS)
|
|
|
|
package: update
|
|
SHLIB_ENV_VAR= SHLIB_ENV_VAL= \
|
|
$(SHLIB_ENV) shlib_directory=$(SHLIB_DIR_OVERRIDE) $(SHELL) \
|
|
postfix-install -package $(POSTFIX_INSTALL_OPTS)
|
|
|
|
upgrade: update
|
|
SHLIB_ENV_VAR= SHLIB_ENV_VAL= \
|
|
$(SHLIB_ENV) shlib_directory=$(SHLIB_DIR_OVERRIDE) $(SHELL) \
|
|
postfix-install -non-interactive $(POSTFIX_INSTALL_OPTS)
|
|
|
|
|
|
non-interactive-package: update
|
|
SHLIB_ENV_VAR= SHLIB_ENV_VAL= \
|
|
$(SHLIB_ENV) shlib_directory=$(SHLIB_DIR_OVERRIDE) $(SHELL) \
|
|
postfix-install -non-interactive -package $(POSTFIX_INSTALL_OPTS)
|
|
|
|
depend clean:
|
|
set -e; for i in $(DIRS); do \
|
|
(set -e; echo "[$$i]"; cd $$i; $(MAKE) $@) || exit 1; \
|
|
done
|
|
|
|
depend_update:
|
|
set -e; for i in $(DIRS); do \
|
|
(set -e; echo "[$$i]"; cd $$i; $(MAKE) depend && $(MAKE) $(OPTS) update) \
|
|
|| exit 1; \
|
|
done
|
|
|
|
tidy: clean
|
|
rm -f Makefile */Makefile src/*/Makefile
|
|
cp -p Makefile.init Makefile
|
|
rm -f README_FILES/RELEASE_NOTES
|
|
ln -s ../RELEASE_NOTES README_FILES
|
|
rm -f bin/[!CRS]* lib/[!CRS]* include/[!CRS]* libexec/[!CRS]* \
|
|
src/*/libpostfix-*.so src/*/libpostfix-*.dylib \
|
|
src/*/postfix-*.so src/*/postfix-*.dylib \
|
|
junk */junk */*/junk \
|
|
*core */*core */*/*core \
|
|
.nfs* */.nfs* */*/.nfs* \
|
|
.pure */.pure */*/.pure \
|
|
*.out */*.out */*/*.out \
|
|
*.tmp */*.tmp */*/*.tmp \
|
|
*.a */*.a */*/*.a \
|
|
*~ */*~ */*/*~ \
|
|
*- */*- */*/*- \
|
|
*.orig */*.orig */*/*.orig \
|
|
*.bak */*.bak */*/*.bak \
|
|
make.err */make.err */*/make.err \
|
|
*.gmon */*.gmon */*/*.gmon \
|
|
conf/main.cf.default conf/bounce.cf.default meta/*
|
|
find . -type s -print | xargs rm -f
|
|
find . -type d -print | xargs chmod 755
|
|
find . -type f -print | xargs chmod a+r
|