# Do not edit -- this file documents how Postfix was built for your machine.
#----------------------------------------------------------------
# Start of summary of user-configurable 'make makefiles' options.
# CCARGS=-DUSE_TLS -I/opt/openssl-1.1.1g/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl -DUSE_TLS -DUSE_TLSPROXY -DHAS_CDB -I/usr/local/include -DHAS_SQLITE -I/usr/local/include -DHAS_LMDB -I/usr/local/include -DHAS_LDAP -I/usr/local/include -DHAS_PGSQL -I/usr/local/include/pgsql -DHAS_MYSQL -I/usr/local/include/mysql
# AUXLIBS=-L/opt/openssl-1.1.1g/lib -lssl -lcrypto -L/usr/local/lib -lsasl2
# AUXLIBS_CDB=-L/usr/local/lib -lcdb
# AUXLIBS_LDAP=-L/usr/local/lib -lldap -L/usr/local/lib -llber
# AUXLIBS_LMDB=-L/usr/local/lib -llmdb
# AUXLIBS_MYSQL=-L/usr/local/lib/mysql -lmysqlclient -lz -lm
# AUXLIBS_PGSQL=-L/usr/local/lib -lpq
# AUXLIBS_SQLITE=-L/usr/local/lib -lsqlite3
# shared=yes
# dynamicmaps=no
# pie=
# shlib_directory=/usr/lib/postfix/MAIL_VERSION
# End of summary of user-configurable 'make makefiles' options.
#--------------------------------------------------------------
# System-dependent settings and compiler/linker overrides.
SYSTYPE	= FREEBSD8
_AR	= ar
ARFL	= rv
_RANLIB	= ranlib
SYSLIBS	= -L/opt/openssl-1.1.1g/lib -lssl -lcrypto -L/usr/local/lib -lsasl2 -L/usr/local/lib -lcdb -L/usr/local/lib -lldap -L/usr/local/lib -llber -L/usr/local/lib -llmdb -L/usr/local/lib/mysql -lmysqlclient -lz -lm -L/usr/local/lib -Wl,-R/usr/local/lib -lpcre2-8 -L/usr/local/lib -lpq -L/usr/local/lib -lsqlite3 -L/usr/local/lib -licui18n -licuuc -licudata 
CC	= gcc -I. -I../../include -DUSE_TLS -I/opt/openssl-1.1.1g/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl -DUSE_TLS -DUSE_TLSPROXY -DHAS_CDB -I/usr/local/include -DHAS_SQLITE -I/usr/local/include -DHAS_LMDB -I/usr/local/include -DHAS_LDAP -I/usr/local/include -DHAS_PGSQL -I/usr/local/include/pgsql -DHAS_MYSQL -I/usr/local/include/mysql -I/usr/local/include -DHAS_DEV_URANDOM -DHAS_PCRE=2 -I/usr/local/include -DSNAPSHOT -DNONPROD='"nonprod-unprivileged"' -DDEF_SHLIB_DIR=\"/usr/lib/postfix/\$${mail_version}\" -DUSE_DYNAMIC_LIBS -UUSE_DYNAMIC_MAPS $(WARN)
OPT	= 
DEBUG	= -g
AWK	= awk
STRCASE = 
EXPORT	= CCARGS='-I. -I../../include -DUSE_TLS -I/opt/openssl-1.1.1g/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl -DUSE_TLS -DUSE_TLSPROXY -DHAS_CDB -I/usr/local/include -DHAS_SQLITE -I/usr/local/include -DHAS_LMDB -I/usr/local/include -DHAS_LDAP -I/usr/local/include -DHAS_PGSQL -I/usr/local/include/pgsql -DHAS_MYSQL -I/usr/local/include/mysql -I/usr/local/include -DHAS_DEV_URANDOM -DHAS_PCRE=2 -I/usr/local/include -DSNAPSHOT -DNONPROD='"nonprod-unprivileged"' -DDEF_SHLIB_DIR=\"/usr/lib/postfix/\$${mail_version}\" -DUSE_DYNAMIC_LIBS -UUSE_DYNAMIC_MAPS' OPT='' DEBUG='-g'
WARN	= -Wall -Wno-comment -Wformat -Wimplicit -Wmissing-prototypes \
	-Wparentheses -Wstrict-prototypes -Wswitch -Wuninitialized \
	-Wunused -Wno-missing-braces -fno-common
DEFINED_MAP_TYPES = db cdb sqlite lmdb ldap pgsql mysql dev_urandom pcre
MAKE_FIX = 
BUILD_ROOT = /home/wietse/postfix-3.12-20260827-nonprod-unprivileged
# Switch between Postfix static and dynamically-linked libraries.
AR	= :
RANLIB	= :
LIB_PREFIX = postfix-
LIB_SUFFIX = .so
SHLIB_CFLAGS = -fPIC
SHLIB_DIR = /usr/lib/postfix/3.12-20260827-nonprod-unprivileged
SHLIB_ENV = LD_LIBRARY_PATH=/home/wietse/postfix-3.12-20260827-nonprod-unprivileged/lib
SHLIB_LD = gcc -shared -Wl,-soname,${LIB}
SHLIB_SYSLIBS = -L/opt/openssl-1.1.1g/lib -lssl -lcrypto -L/usr/local/lib -lsasl2 -L/usr/local/lib -lcdb -L/usr/local/lib -lldap -L/usr/local/lib -llber -L/usr/local/lib -llmdb -L/usr/local/lib/mysql -lmysqlclient -lz -lm -L/usr/local/lib -Wl,-R/usr/local/lib -lpcre2-8 -L/usr/local/lib -lpq -L/usr/local/lib -lsqlite3 -L/usr/local/lib -licui18n -licuuc -licudata
SHLIB_RPATH = -Wl,-rpath,${SHLIB_DIR}
# Switch between dynamicmaps.cf plugins and hard-linked databases.
NON_PLUGIN_MAP_OBJ = $(MAP_OBJ)
PLUGIN_MAP_OBJ = 
PLUGIN_MAP_OBJ_UPDATE = 
PLUGIN_MAP_SO_MAKE = 
PLUGIN_MAP_SO_UPDATE = 
PLUGIN_LD = 
POSTFIX_INSTALL_OPTS = 
# Application-specific rules.
# 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 src/nbdb_reindexd src/ptest src/testing
MANDIRS	= proto man html
LIBEXEC	= libexec/post-install libexec/postfix-script libexec/postfix-wrapper \
	libexec/postmulti-script libexec/postfix-non-bdb-script \
	libexec/postfix-tls-script
META	= meta/main.cf.proto meta/master.cf.proto meta/postfix-files \
	meta/makedefs.out $(PLUGINS)
TESTING	= test-conf/main.cf
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) $(TESTING) $(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-non-bdb-script: conf/postfix-non-bdb-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 $? $@

test-conf/main.cf:
	rm -f $@
	mkdir -p test-conf
	echo 'meta_directory = $(BUILD_ROOT)/meta' >> $@
	echo 'shlib_directory = $(BUILD_ROOT)/lib' >> $@

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; \
			if (has_type["db"]) { \
			    has_type["hash"] = has_type["btree"] = 1; \
			    delete has_type["db"] } } \
		/^#/ { 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: update 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-param-defaults \
	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 -
	$(SHLIB_ENV) mantools/check-proxy-type-table | 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-param-defaults:
	mantools/check-param-defaults | 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/*
	rm -rf test-conf
	find . -type s -print | xargs rm -f
	find . -type d -print | xargs chmod 755
	find . -type f -print | xargs chmod a+r
