-transport_info transports_available[] = {
-#ifdef TRANSPORT_APPENDFILE
- {
- US"appendfile", /* driver name */
- appendfile_transport_options, /* local options table */
- &appendfile_transport_options_count, /* number of entries */
- &appendfile_transport_option_defaults, /* private options defaults */
- sizeof(appendfile_transport_options_block), /* size of private block */
- appendfile_transport_init, /* init entry point */
- appendfile_transport_entry, /* main entry point */
- NULL, /* no tidyup entry */
- NULL, /* no closedown entry */
- TRUE, /* local flag */
- },
-#endif
-#ifdef TRANSPORT_AUTOREPLY
- {
- US"autoreply", /* driver name */
- autoreply_transport_options, /* local options table */
- &autoreply_transport_options_count, /* number of entries */
- &autoreply_transport_option_defaults, /* private options defaults */
- sizeof(autoreply_transport_options_block), /* size of private block */
- autoreply_transport_init, /* init entry point */
- autoreply_transport_entry, /* main entry point */
- NULL, /* no tidyup entry */
- NULL, /* no closedown entry */
- TRUE /* local flag */
- },
-#endif
-#ifdef TRANSPORT_LMTP
- {
- US"lmtp", /* driver name */
- lmtp_transport_options, /* local options table */
- &lmtp_transport_options_count, /* number of entries */
- &lmtp_transport_option_defaults, /* private options defaults */
- sizeof(lmtp_transport_options_block), /* size of private block */
- lmtp_transport_init, /* init entry point */
- lmtp_transport_entry, /* main entry point */
- NULL, /* no tidyup entry */
- NULL, /* no closedown entry */
- TRUE /* local flag */
- },
-#endif
-#ifdef TRANSPORT_PIPE
- {
- US"pipe", /* driver name */
- pipe_transport_options, /* local options table */
- &pipe_transport_options_count, /* number of entries */
- &pipe_transport_option_defaults, /* private options defaults */
- sizeof(pipe_transport_options_block), /* size of private block */
- pipe_transport_init, /* init entry point */
- pipe_transport_entry, /* main entry point */
- NULL, /* no tidyup entry */
- NULL, /* no closedown entry */
- TRUE /* local flag */
- },
-#endif
-#ifdef TRANSPORT_SMTP
- {
- US"smtp", /* driver name */
- smtp_transport_options, /* local options table */
- &smtp_transport_options_count, /* number of entries */
- &smtp_transport_option_defaults, /* private options defaults */
- sizeof(smtp_transport_options_block), /* size of private block */
- smtp_transport_init, /* init entry point */
- smtp_transport_entry, /* main entry point */
- NULL, /* no tidyup entry */
- smtp_transport_closedown, /* close down passed channel */
- FALSE /* local flag */
- },
-#endif
-{ US"", NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, FALSE }
-};
+/* Add module info struct to the modules list for those that are
+built as static */
+
+#if !defined(DISABLE_DKIM) && (!defined(SUPPORT_DKIM) || SUPPORT_DKIM!=2)
+extern misc_module_info dkim_module_info;
+#endif
+#if defined(SUPPORT_DMARC) && SUPPORT_DMARC!=2
+extern misc_module_info dmarc_module_info;
+#endif
+#if defined(SUPPORT_SPF) && SUPPORT_SPF!=2
+extern misc_module_info spf_module_info;
+#endif
+#if defined(EXPERIMENTAL_ARC) && (!defined(SUPPORT_ARC) || SUPPORT_ARC!=2)
+extern misc_module_info arc_module_info;
+#endif
+#if defined(RADIUS_CONFIG_FILE) && (!defined(SUPPORT_RADIUS) || SUPPORT_RADIUS!=2)
+extern misc_module_info radius_module_info;
+#endif
+#if defined(SUPPORT_PAM) && SUPPORT_PAM!=2
+extern misc_module_info pam_module_info;
+#endif
+#if defined(EXIM_PERL) && (!defined(SUPPORT_PERL) || SUPPORT_PERL!=2)
+extern misc_module_info perl_module_info;
+#endif
+#if !defined(DISABLE_EXIM_FILTER) && (!defined(SUPPORT_EXIM_FILTER) || SUPPORT_EXIM_FILTER!=2)
+extern misc_module_info exim_filter_module_info;
+#endif
+#if !defined(DISABLE_SIEVE_FILTER) && (!defined(SUPPORT_SIEVE_FILTER) || SUPPORT_SIEVE_FILTER!=2)
+extern misc_module_info sieve_filter_module_info;
+#endif
+
+void
+init_misc_mod_list(void)
+{
+static BOOL onetime = FALSE;
+if (onetime) return;
+onetime = TRUE;
+
+#if !defined(DISABLE_DKIM) && (!defined(SUPPORT_DKIM) || SUPPORT_DKIM!=2)
+ misc_mod_add(&dkim_module_info);
+#endif
+#if defined(SUPPORT_SPF) && SUPPORT_SPF!=2
+ misc_mod_add(&spf_module_info);
+#endif
+#if defined(SUPPORT_DMARC) && SUPPORT_DMARC!=2
+/* dmarc depends on spf so this add must go after, for the both-static case */
+ misc_mod_add(&dmarc_module_info);
+#endif
+#if defined(EXPERIMENTAL_ARC) && (!defined(SUPPORT_ARC) || SUPPORT_ARC!=2)
+ misc_mod_add(&arc_module_info);
+#endif
+#if defined(RADIUS_CONFIG_FILE) && (!defined(SUPPORT_RADIUS) || SUPPORT_RADIUS!=2)
+ misc_mod_add(&radius_module_info);
+#endif
+#if defined(SUPPORT_PAM) && SUPPORT_PAM!=2
+ misc_mod_add(&pam_module_info);
+#endif
+#if defined(EXIM_PERL) && (!defined(SUPPORT_PERL) || SUPPORT_PERL!=2)
+ misc_mod_add(&perl_module_info);
+#endif
+#if !defined(DISABLE_EXIM_FILTER) && (!defined(SUPPORT_EXIM_FILTER) || SUPPORT_EXIM_FILTER!=2)
+ misc_mod_add(&exim_filter_module_info);
+#endif
+#if !defined(DISABLE_SIEVE_FILTER) && (!defined(SUPPORT_SIEVE_FILTER) || SUPPORT_SIEVE_FILTER!=2)
+ misc_mod_add(&sieve_filter_module_info);
+#endif
+}
+