External interface of lib/module-dir.c : void *module_get_symbol_quiet(struct module *, const char *) void *module_get_symbol(struct module *, const char *) struct module *module_dir_find(struct module *, const char *) int module_dir_try_load_missing(struct module **, const char *, const char *, const struct module_dir_load_settings *, const char **) void module_dir_init(struct module *) void module_dir_deinit(struct module *) void module_dir_unload(struct module **) struct module *module_dir_load_missing(struct module *, const char *, const char *, const struct module_dir_load_settings *) struct module *module_dir_load(const char *, const char *, const struct module_dir_load_settings *) const char *module_file_get_name(const char *) const char *module_get_plugin_name(struct module *) ==================================== External callers of those functions: module_get_symbol_quiet config/config-parser.c config/doveconf.c module_get_symbol lib-fs/fs-api.c module_dir_find lib-fs/fs-api.c module_dir_try_load_missing lib-dcrypt/dcrypt.c lib-ssl-iostream/iostream-ssl.c lib-storage/mail-storage-service.c module_dir_init auth/main.c config/config-parser.c dict/main.c doveadm/doveadm-pw.c doveadm/doveadm-util.c lib-dcrypt/dcrypt.c lib-fs/fs-api.c lib-ssl-iostream/iostream-ssl.c lib-storage/mail-storage-service.c lmtp/lmtp-client.c login-common/main.c old-stats/main.c module_dir_deinit - called by module_dir_unload only (i.e. internal to module-dir.c)! module_dir_unload auth/main.c config/doveconf.c config/main.c dict/main.c doveadm/doveadm-mail.c doveadm/doveadm-pw.c doveadm/doveadm-util.c lib-dcrypt/dcrypt.c lib-fs/fs-api.c lib-ssl-iostream/iostream-ssl.c lib-storage/mail-storage-service.c login-common/main.c old-stats/main.c module_dir_load_missing auth/main.c doveadm/doveadm-mail.c doveadm/doveadm-pw.c doveadm/doveadm-util.c lib-fs/fs-api.c lib-storage/mail-user.c login-common/main.c old-stats/main.c lmtp/lmtp-client.c module_dir_load auth/main.c config/config-parser.c dict/main.c lib-ssl-iostream/iostream-ssl.c login-common/main.c old-stats/main.c module_file_get_name doveadm/doveadm-util.c module_get_plugin_name doveadm/doveadm-util.c lib-storage/mail-storage-hooks.c lib-storage/mail-user.c ======================================== What those source files get linked into: Shorthand for binary install paths: bin/ := $(prefix)/bin/ libexec/ := $(prefix)/libexec/dovecot/ moduledir/ := $(prefix)/lib/dovecot/ (The "test" programs don't get installed, just run directly from the source tree.) auth/main.c libexec/auth test-auth config/config-parser.c libconfig.la test-config-parser libexec/config bin/doveconf config/doveconf.c bin/doveconf config/main.c libexec/config dict/main.c libexec/dict doveadm/doveadm-mail.c bin/doveadm libexec/doveadm-server doveadm/doveadm-pw.c bin/doveadm doveadm/doveadm-util.c test-doveadm-util bin/doveadm libexec/doveadm-server lib-dcrypt/dcrypt.c test-crypto test-stream libdcrypt.la test-oauth2-json test-oauth2-jwt libdovecot.la ... lib-fs/fs-api.c libfs.la test-fs-metawrap test-fs-posix test-dict-fs libdovecot.la ... lib-ssl-iostream/iostream-ssl.c libssl-iostream.la test-iostream-ssl (if BUILD_OPENSSL) test-http-payload test-http-client test-http-client-errors test-http-client-request test-http-server test-http-server-errors test-imapc-client test-crypto test-stream test-auth-client test-auth-master test-master-login-auth test-oauth2-json test-oauth2-jwt test-smtp-syntax test-smtp-address test-smtp-params test-smtp-reply test-smtp-command-parser test-smtp-payload test-smtp-submit test-smtp-client-errors test-smtp-server-errors fuzz-smtp-server (if USE_FUZZER) libdovecot.la ... lib-storage/mail-storage-hooks.c, lib-storage/mail-storage-service.c, lib-storage/mail-user.c libstorage.la test-mailbox-get test-mail-search-args-imap test-mail-search-args-simplify test-mail test-mail-storage test-mailbox-list libdovecot-storage.la bin/doveadm libexec/doveadm-server libexec/dovecot-lda libexec/imap libexec/imap-urlauth-worker libexec/indexer-worker libexec/lmtp libexec/pop3 libexec/quota-status (plugins/quota) libexec/script-login libexec/submission squat-test (plugins/fts-squat) test-acl (plugins/acl) test-mail-key (plugins/mail-crypt) test-pop3-migration-plugin (plugins/pop3-migration) lmtp/lmtp-client.c libexec/lmtp login-common/main.c liblogin.la libdovecot-login.la libexec/imap-login libexec/imap-urlauth-login libexec/pop3-login libexec/submission-login old-stats/main.c libexec/old-stats ============================================ What the big libdovecot.la gets linked into: libdovecot.la libexec/anvil libexec/auth libexec/checkpassword-reply moduledir/auth/libauthdb-imap.la moduledir/old-stats/libstats-auth.la libexec/auth libexec/config bin/doveconf test-config-parser libexec/dict libexec/director director-test libexec/dns-client bin/doveadm libexec/doveadm-server libexec/imap-hibernate libexec/imap-login libexec/imap-urlauth libexec/imap-urlauth-login libexec/imap-urlauth-worker libexec/imap libexec/indexer libexec/indexer-worker libexec/ipc libexec/dovecot-lda moduledir/dict/libdict-ldap.la (if LDAP_PLUGIN) test-mail-search-args-imap test-mail-search-args-simplify test-mail test-mail-storage test-mailbox-list libexec/lmtp libexec/log bin/dovecot libexec/old-stats test-acl (plugins/acl) squat-test (plugins/fts-squat) libexec/xml2text (plugins/fts) moduledir/lib10-mail-crypt-plugin.la (plugins/mail-crypt) moduledir/lib05-mail-crypt-acl-plugin.la (plugins/mail-crypt) moduledir/libfs-crypt.la (plugins/mail-crypt) moduledir/libfs-mail-crypt.la (plugins/mail-crypt) moduledir/doveadm/libdoveadm-mail-crypt-plugin.la (plugins/mail-crypt) test-mail-global-key (plugins/mail-crypt) test-mail-key (plugins/mail-crypt) moduledir/lib01-mail-lua-plugin.la (plugins/mail-lua, if HAVE_LUA) moduledir/old-stats/libold-stats-mail.la (plugins/old-stats) test-pop3-migration-plugin (plugins/pop3-migration) libexec/quota-status (plugins/quota) libexec/pop3-login libexec/aggregator libexec/replicator libexec/stats test-stats-metrics test-client-writer test-client-reader libexec/submission-login libexec/submission test-fs libexec/rawlog libexec/script libexec/script-login libexec/tcpwrap (if TCPWRAPPERS) libexec/gdbhelper libexec/maildirlock