Docs: build notes for dynamic modules
[exim.git] / src / src / EDITME
index 5e755692fd5b878abf14b4b2e067a630ea6f6960..7d0b07331ac4480ac5d64dc9033443d853478eed 100644 (file)
@@ -321,7 +321,6 @@ SPOOL_DIRECTORY=/var/spool/exim
 # add -ldl to EXTRALIBS so that dlopen() is available to Exim. You need to
 # define CFLAGS_DYNAIC and LOOKUP_MODULE_DIR below so the builds are done right,
 # and so the exim binary actually loads dynamic lookup modules.
-# MANUALROUTE cannot currently be built as a module.
 
 ROUTER_ACCEPT=yes
 ROUTER_DNSLOOKUP=yes
@@ -344,6 +343,15 @@ ROUTER_REDIRECT=yes
 # file. By commenting out those you know you don't want to use, you can make
 # the binary a bit smaller. If you are unsure, leave all of these included for
 # now.
+#
+# If set to "2" instead of "yes" then the corresponding driver will be
+# built as a module and must be installed into LOOKUP_MODULE_DIR (the name
+# is historic).
+# You need to add -export-dynamic -rdynamic to EXTRALIBS. You may also need to
+# add -ldl to EXTRALIBS so that dlopen() is available to Exim. You need to
+# define CFLAGS_DYNAIC and LOOKUP_MODULE_DIR below so the builds are done right,
+# and so the exim binary actually loads dynamic lookup modules.
+# The smtp transport cannot be built as a module.
 
 TRANSPORT_APPENDFILE=yes
 TRANSPORT_AUTOREPLY=yes
@@ -408,10 +416,8 @@ TRANSPORT_SMTP=yes
 # the dynamic library and not the exim binary will be linked against the
 # library.
 #
-# NOTE: LDAP cannot be built as a module!
-# JSON cannot (yet).
-# Also, PASSWD, DBM and DNSDB can but there is little point since the accesses
-# are always needed by the Exim core.
+# PASSWD, DBM and DNSDB can be build as modules but there is little point since
+# the accesses are always needed by the Exim core.
 #
 # For Redis you need to have hiredis installed on your system
 # (https://github.com/redis/hiredis).
@@ -471,6 +477,7 @@ LOOKUP_DNSDB=yes
 # If you don't set any of these, Exim assumes the original University of
 # Michigan (OpenLDAP 1) library.
 
+# For building as a modules, set LOOKUP_LDAP_INCLUDE and LOOKUP_LDAP_LIBS
 
 #------------------------------------------------------------------------------
 # The PCRE2 library is required for Exim.  There is no longer an embedded
@@ -530,6 +537,7 @@ SUPPORT_DANE=yes
 #
 # LOOKUP_INCLUDE += -I/usr/local/include
 # LOOKUP_LIBS += -llmdb
+# For dynamic-modules builds, use instead LOOKUP_LMDB_INCLUDE & LOOKUP_LMDB_LIBS
 
 
 #------------------------------------------------------------------------------
@@ -818,6 +826,19 @@ FIXED_NEVER_USERS=root
 # you must uncomment at least one of the following, so that appropriate code is
 # included in the Exim binary. You will then need to set up the run time
 # configuration to make use of the mechanism(s) selected.
+#
+# If set to "2" instead of "yes" then the corresponding driver will be
+# built as a module and must be installed into LOOKUP_MODULE_DIR (the name
+# is historic).
+# You need to add -export-dynamic -rdynamic to EXTRALIBS. You may also need to
+# add -ldl to EXTRALIBS so that dlopen() is available to Exim. You need to
+# define CFLAGS_DYNAIC and LOOKUP_MODULE_DIR below so the builds are done right,
+# and so the exim binary actually loads dynamic lookup modules.
+#
+# Libraries being built as modules should be added to respective
+# LOOKUP_*_INCLUDE and LOOKUP_*_LIBS rather than the the ones for the
+# core exim build.  This gets them linked with the module instead.
+# The heimdal does build but we have no test coverage so it is not know to work.
 
 # AUTH_CRAM_MD5=yes
 # AUTH_CYRUS_SASL=yes
@@ -1559,4 +1580,4 @@ EXIM_TMPDIR="/tmp"
 
 # DISABLE_CLIENT_CMD_LOG=yes
 
-# End of EDITME for Exim 4.
+# End of EDITME for Exim.