From: Jeremy Harris Date: Thu, 26 Oct 2017 13:54:02 +0000 (+0100) Subject: Revert "Build: tidying" X-Git-Tag: exim-4_90_RC1~6 X-Git-Url: https://git.exim.org/exim.git/commitdiff_plain/5f69a529d24c6acf0a7473c2ac67bcaa5aacbb60 Revert "Build: tidying" This reverts commit 3a40b2f9648ce9737b3f8f542e5079e58c4db3c3. It didn't work with Pmake (FreeBSD/OpenBSD) --- diff --git a/src/OS/Makefile-Base b/src/OS/Makefile-Base index 26f06eca6..60c97c210 100644 --- a/src/OS/Makefile-Base +++ b/src/OS/Makefile-Base @@ -123,39 +123,109 @@ config.h: Makefile buildconfig ../src/config.h.defaults $(EDITME) # Build the builtin-macros data struct -MACRO_HSRC = predef.h os.h globals.h config.h \ +MACRO_HSRC = macro_predef.h os.h globals.h config.h \ routers/accept.h routers/dnslookup.h routers/ipliteral.h \ routers/iplookup.h routers/manualroute.h routers/queryprogram.h \ routers/redirect.h -OBJ_MACRO_PLAIN = macro-predef.o \ +OBJ_MACRO = macro_predef.o \ macro-globals.o macro-readconf.o macro-route.o macro-transport.o macro-drtables.o \ - macro-dkim.o -OBJ_MACRO_TP = \ macro-appendfile.o macro-autoreply.o macro-lmtp.o macro-pipe.o macro-queuefile.o \ - macro-smtp.o -OBJ_MACRO_RT = \ - macro-accept.o macro-dnslookup.o macro-ipliteral.o macro-iplookup.o \ - macro-manualroute.o macro-queryprogram.o macro-redirect.o -OBJ_MACRO_AU = \ + macro-smtp.o macro-accept.o macro-dnslookup.o macro-ipliteral.o macro-iplookup.o \ + macro-manualroute.o macro-queryprogram.o macro-redirect.o \ macro-auth-spa.o macro-cram_md5.o macro-cyrus_sasl.o macro-dovecot.o macro-gsasl_exim.o \ - macro-heimdal_gssapi.o macro-plaintext.o macro-spa.o macro-tls.o + macro-heimdal_gssapi.o macro-plaintext.o macro-spa.o macro-tls.o\ + macro-dkim.o -OBJ_MACRO = $(OBJ_MACRO_PLAIN) $(OBJ_MACRO_TP) $(OBJ_MACRO_RT) $(OBJ_MACRO_AU) $(OBJ_MACRO): $(MACRO_HSRC) -$(OBJ_MACRO_PLAIN): macro-%.o : %.c - @echo "$(CC) -DMACRO_PREDEF $<" - $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ $< -$(OBJ_MACRO_TP): macro-%.o : transports/%.c - @echo "$(CC) -DMACRO_PREDEF $<" - $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ $< -$(OBJ_MACRO_RT): macro-%.o : routers/%.c - @echo "$(CC) -DMACRO_PREDEF $<" - $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ $< -$(OBJ_MACRO_AU): macro-%.o : auths/%.c - @echo "$(CC) -DMACRO_PREDEF $<" - $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ $< +macro_predef.o : macro_predef.c + @echo "$(CC) -DMACRO_PREDEF macro_predef.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ macro_predef.c +macro-globals.o : globals.c + @echo "$(CC) -DMACRO_PREDEF globals.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ globals.c +macro-readconf.o : readconf.c + @echo "$(CC) -DMACRO_PREDEF readconf.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ readconf.c +macro-route.o : route.c + @echo "$(CC) -DMACRO_PREDEF route.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ route.c +macro-transport.o: transport.c + @echo "$(CC) -DMACRO_PREDEF transport.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transport.c +macro-drtables.o : drtables.c + @echo "$(CC) -DMACRO_PREDEF drtables.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ drtables.c +macro-appendfile.o : transports/appendfile.c + @echo "$(CC) -DMACRO_PREDEF transports/appendfile.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/appendfile.c +macro-autoreply.o : transports/autoreply.c + @echo "$(CC) -DMACRO_PREDEF transports/autoreply.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/autoreply.c +macro-lmtp.o: transports/lmtp.c + @echo "$(CC) -DMACRO_PREDEF transports/lmtp.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/lmtp.c +macro-pipe.o : transports/pipe.c + @echo "$(CC) -DMACRO_PREDEF transports/pipe.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/pipe.c +macro-queuefile.o : transports/queuefile.c + @echo "$(CC) -DMACRO_PREDEF transports/queuefile.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/queuefile.c +macro-smtp.o : transports/smtp.c + @echo "$(CC) -DMACRO_PREDEF transports/smtp.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/smtp.c +macro-accept.o : routers/accept.c + @echo "$(CC) -DMACRO_PREDEF routers/accept.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/accept.c +macro-dnslookup.o : routers/dnslookup.c + @echo "$(CC) -DMACRO_PREDEF routers/dnslookup.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/dnslookup.c +macro-ipliteral.o : routers/ipliteral.c + @echo "$(CC) -DMACRO_PREDEF routers/ipliteral.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/ipliteral.c +macro-iplookup.o : routers/iplookup.c + @echo "$(CC) -DMACRO_PREDEF routers/iplookup.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/iplookup.c +macro-manualroute.o : routers/manualroute.c + @echo "$(CC) -DMACRO_PREDEF routers/manualroute.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/manualroute.c +macro-queryprogram.o : routers/queryprogram.c + @echo "$(CC) -DMACRO_PREDEF routers/queryprogram.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/queryprogram.c +macro-redirect.o : routers/redirect.c + @echo "$(CC) -DMACRO_PREDEF routers/redirect.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/redirect.c +macro-auth-spa.o : auths/auth-spa.c + @echo "$(CC) -DMACRO_PREDEF auths/auth-spa.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/auth-spa.c +macro-cram_md5.o : auths/cram_md5.c + @echo "$(CC) -DMACRO_PREDEF auths/cram_md5.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/cram_md5.c +macro-cyrus_sasl.o : auths/cyrus_sasl.c + @echo "$(CC) -DMACRO_PREDEF auths/cyrus_sasl.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/cyrus_sasl.c +macro-dovecot.o: auths/dovecot.c + @echo "$(CC) -DMACRO_PREDEF auths/dovecot.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/dovecot.c +macro-gsasl_exim.o : auths/gsasl_exim.c + @echo "$(CC) -DMACRO_PREDEF auths/gsasl_exim.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/gsasl_exim.c +macro-heimdal_gssapi.o: auths/heimdal_gssapi.c + @echo "$(CC) -DMACRO_PREDEF auths/heimdal_gssapi.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/heimdal_gssapi.c +macro-plaintext.o : auths/plaintext.c + @echo "$(CC) -DMACRO_PREDEF auths/plaintext.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/plaintext.c +macro-spa.o : auths/spa.c + @echo "$(CC) -DMACRO_PREDEF auths/spa.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/spa.c +macro-tls.o: auths/tls.c + @echo "$(CC) -DMACRO_PREDEF auths/tls.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/tls.c +macro-dkim.o: dkim.c + @echo "$(CC) -DMACRO_PREDEF dkim.c" + $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ dkim.c macro_predef: $(OBJ_MACRO) @echo "$(LNCC) -o $@" diff --git a/src/scripts/MakeLinks b/src/scripts/MakeLinks index f29d160ed..22e5a4bd7 100755 --- a/src/scripts/MakeLinks +++ b/src/scripts/MakeLinks @@ -110,7 +110,7 @@ for f in blob.h dbfunctions.h dbstuff.h exim.h functions.h globals.h \ tod.c transport.c tree.c verify.c version.c \ dkim.c dkim.h dkim_transport.c dmarc.c dmarc.h \ valgrind.h memcheck.h \ - predef.c predef.h + macro_predef.c macro_predef.h do ln -s ../src/$f $f done diff --git a/src/src/dkim.c b/src/src/dkim.c index dd176127a..41540b39d 100644 --- a/src/src/dkim.c +++ b/src/src/dkim.c @@ -15,7 +15,7 @@ # include "pdkim/pdkim.h" # ifdef MACRO_PREDEF -# include "predef.h" +# include "macro_predef.h" void dkim_params(void) diff --git a/src/src/macro_predef.c b/src/src/macro_predef.c new file mode 100644 index 000000000..ba1934885 --- /dev/null +++ b/src/src/macro_predef.c @@ -0,0 +1,296 @@ +/************************************************* +* Exim - an Internet mail transport agent * +*************************************************/ + +/* Copyright (c) Jeremy Harris 2017 */ +/* See the file NOTICE for conditions of use and distribution. */ + +/* Create a static data structure with the predefined macros, to be +included in the main Exim build */ + +#include "exim.h" +#include "macro_predef.h" + +unsigned mp_index = 0; + +/* Global dummy variables */ + +void fn_smtp_receive_timeout(const uschar * name, const uschar * str) {} +uschar * syslog_facility_str; + +/******************************************************************************/ + +void +builtin_macro_create_var(const uschar * name, const uschar * val) +{ +printf ("static macro_item p%d = { ", mp_index); +if (mp_index == 0) + printf(".next=NULL,"); +else + printf(".next=&p%d,", mp_index-1); + +printf(" .command_line=FALSE, .namelen=%d, .replen=%d," + " .name=US\"%s\", .replacement=US\"%s\" };\n", + Ustrlen(name), Ustrlen(val), CS name, CS val); +mp_index++; +} + + +void +builtin_macro_create(const uschar * name) +{ +builtin_macro_create_var(name, US"y"); +} + + +void +spf(uschar * buf, int len, const uschar * fmt, ...) +{ +va_list ap; +va_start(ap, fmt); + +while (*fmt && len > 1) + if (*fmt == '%' && fmt[1] == 'T') + { + uschar * s = va_arg(ap, uschar *); + while (*s && len-- > 1) + *buf++ = toupper(*s++); + fmt += 2; + } + else + { + *buf++ = *fmt++; len--; + } +*buf = '\0'; +va_end(ap); +} + +void +options_from_list(optionlist * opts, unsigned nopt, + const uschar * section, uschar * group) +{ +int i; +const uschar * s; +uschar buf[64]; + +/* The 'previously-defined-substring' rule for macros in config file +lines is done thus for these builtin macros: we know that the table +we source from is in strict alpha order, hence the builtins portion +of the macros list is in reverse-alpha (we prepend them) - so longer +macros that have substrings are always discovered first during +expansion. */ + +for (i = 0; i < nopt; i++) if (*(s = US opts[i].name) && *s != '*') + { + if (group) + spf(buf, sizeof(buf), CUS"_OPT_%T_%T_%T", section, group, s); + else + spf(buf, sizeof(buf), CUS"_OPT_%T_%T", section, s); + builtin_macro_create(buf); + } +} + + +/******************************************************************************/ + + +/* Create compile-time feature macros */ +static void +features(void) +{ +/* Probably we could work out a static initialiser for wherever +macros are stored, but this will do for now. Some names are awkward +due to conflicts with other common macros. */ + +#ifdef SUPPORT_CRYPTEQ + builtin_macro_create(US"_HAVE_CRYPTEQ"); +#endif +#if HAVE_ICONV + builtin_macro_create(US"_HAVE_ICONV"); +#endif +#if HAVE_IPV6 + builtin_macro_create(US"_HAVE_IPV6"); +#endif +#ifdef HAVE_SETCLASSRESOURCES + builtin_macro_create(US"_HAVE_SETCLASSRESOURCES"); +#endif +#ifdef SUPPORT_PAM + builtin_macro_create(US"_HAVE_PAM"); +#endif +#ifdef EXIM_PERL + builtin_macro_create(US"_HAVE_PERL"); +#endif +#ifdef EXPAND_DLFUNC + builtin_macro_create(US"_HAVE_DLFUNC"); +#endif +#ifdef USE_TCP_WRAPPERS + builtin_macro_create(US"_HAVE_TCPWRAPPERS"); +#endif +#ifdef SUPPORT_TLS + builtin_macro_create(US"_HAVE_TLS"); +# ifdef USE_GNUTLS + builtin_macro_create(US"_HAVE_GNUTLS"); +# else + builtin_macro_create(US"_HAVE_OPENSSL"); +# endif +#endif +#ifdef SUPPORT_TRANSLATE_IP_ADDRESS + builtin_macro_create(US"_HAVE_TRANSLATE_IP_ADDRESS"); +#endif +#ifdef SUPPORT_MOVE_FROZEN_MESSAGES + builtin_macro_create(US"_HAVE_MOVE_FROZEN_MESSAGES"); +#endif +#ifdef WITH_CONTENT_SCAN + builtin_macro_create(US"_HAVE_CONTENT_SCANNING"); +#endif +#ifndef DISABLE_DKIM + builtin_macro_create(US"_HAVE_DKIM"); +#endif +#ifndef DISABLE_DNSSEC + builtin_macro_create(US"_HAVE_DNSSEC"); +#endif +#ifndef DISABLE_EVENT + builtin_macro_create(US"_HAVE_EVENT"); +#endif +#ifdef SUPPORT_I18N + builtin_macro_create(US"_HAVE_I18N"); +#endif +#ifndef DISABLE_OCSP + builtin_macro_create(US"_HAVE_OCSP"); +#endif +#ifndef DISABLE_PRDR + builtin_macro_create(US"_HAVE_PRDR"); +#endif +#ifdef SUPPORT_PROXY + builtin_macro_create(US"_HAVE_PROXY"); +#endif +#ifdef SUPPORT_SOCKS + builtin_macro_create(US"_HAVE_SOCKS"); +#endif +#ifdef TCP_FASTOPEN + builtin_macro_create(US"_HAVE_TCP_FASTOPEN"); +#endif +#ifdef EXPERIMENTAL_LMDB + builtin_macro_create(US"_HAVE_LMDB"); +#endif +#ifdef EXPERIMENTAL_SPF + builtin_macro_create(US"_HAVE_SPF"); +#endif +#ifdef EXPERIMENTAL_SRS + builtin_macro_create(US"_HAVE_SRS"); +#endif +#ifdef EXPERIMENTAL_BRIGHTMAIL + builtin_macro_create(US"_HAVE_BRIGHTMAIL"); +#endif +#ifdef EXPERIMENTAL_DANE + builtin_macro_create(US"_HAVE_DANE"); +#endif +#ifdef EXPERIMENTAL_DCC + builtin_macro_create(US"_HAVE_DCC"); +#endif +#ifdef EXPERIMENTAL_DMARC + builtin_macro_create(US"_HAVE_DMARC"); +#endif +#ifdef EXPERIMENTAL_DSN_INFO + builtin_macro_create(US"_HAVE_DSN_INFO"); +#endif + +#ifdef LOOKUP_LSEARCH + builtin_macro_create(US"_HAVE_LOOKUP_LSEARCH"); +#endif +#ifdef LOOKUP_CDB + builtin_macro_create(US"_HAVE_LOOKUP_CDB"); +#endif +#ifdef LOOKUP_DBM + builtin_macro_create(US"_HAVE_LOOKUP_DBM"); +#endif +#ifdef LOOKUP_DNSDB + builtin_macro_create(US"_HAVE_LOOKUP_DNSDB"); +#endif +#ifdef LOOKUP_DSEARCH + builtin_macro_create(US"_HAVE_LOOKUP_DSEARCH"); +#endif +#ifdef LOOKUP_IBASE + builtin_macro_create(US"_HAVE_LOOKUP_IBASE"); +#endif +#ifdef LOOKUP_LDAP + builtin_macro_create(US"_HAVE_LOOKUP_LDAP"); +#endif +#ifdef EXPERIMENTAL_LMDB + builtin_macro_create(US"_HAVE_LOOKUP_LMDB"); +#endif +#ifdef LOOKUP_MYSQL + builtin_macro_create(US"_HAVE_LOOKUP_MYSQL"); +#endif +#ifdef LOOKUP_NIS + builtin_macro_create(US"_HAVE_LOOKUP_NIS"); +#endif +#ifdef LOOKUP_NISPLUS + builtin_macro_create(US"_HAVE_LOOKUP_NISPLUS"); +#endif +#ifdef LOOKUP_ORACLE + builtin_macro_create(US"_HAVE_LOOKUP_ORACLE"); +#endif +#ifdef LOOKUP_PASSWD + builtin_macro_create(US"_HAVE_LOOKUP_PASSWD"); +#endif +#ifdef LOOKUP_PGSQL + builtin_macro_create(US"_HAVE_LOOKUP_PGSQL"); +#endif +#ifdef LOOKUP_REDIS + builtin_macro_create(US"_HAVE_LOOKUP_REDIS"); +#endif +#ifdef LOOKUP_SQLITE + builtin_macro_create(US"_HAVE_LOOKUP_SQLITE"); +#endif +#ifdef LOOKUP_TESTDB + builtin_macro_create(US"_HAVE_LOOKUP_TESTDB"); +#endif +#ifdef LOOKUP_WHOSON + builtin_macro_create(US"_HAVE_LOOKUP_WHOSON"); +#endif + +#ifdef TRANSPORT_APPENDFILE +# ifdef SUPPORT_MAILDIR + builtin_macro_create(US"_HAVE_TRANSPORT_APPEND_MAILDIR"); +# endif +# ifdef SUPPORT_MAILSTORE + builtin_macro_create(US"_HAVE_TRANSPORT_APPEND_MAILSTORE"); +# endif +# ifdef SUPPORT_MBX + builtin_macro_create(US"_HAVE_TRANSPORT_APPEND_MBX"); +# endif +#endif +} + + +static void +options(void) +{ +options_main(); +options_routers(); +options_transports(); +options_auths(); +} + +static void +params(void) +{ +#ifndef DISABLE_DKIM +dkim_params(); +#endif +} + + +int +main(void) +{ +printf("#include \"exim.h\"\n"); +features(); +options(); +params(); + +printf("macro_item * macros = &p%d;\n", mp_index-1); +printf("macro_item * mlast = &p0;\n"); +exit(0); +} diff --git a/src/src/macro_predef.h b/src/src/macro_predef.h new file mode 100644 index 000000000..aece28cc7 --- /dev/null +++ b/src/src/macro_predef.h @@ -0,0 +1,19 @@ +/************************************************* +* Exim - an Internet mail transport agent * +*************************************************/ + +/* Copyright (c) Jeremy Harris 2017 */ +/* See the file NOTICE for conditions of use and distribution. */ + +/* Global functions */ + +extern void spf(uschar *, int, const uschar *, ...); +extern void builtin_macro_create(const uschar *); +extern void builtin_macro_create_var(const uschar *, const uschar *); +extern void options_from_list(optionlist *, unsigned, const uschar *, uschar *); + +extern void options_main(void); +extern void options_routers(void); +extern void options_transports(void); +extern void options_auths(void); + diff --git a/src/src/predef.c b/src/src/predef.c deleted file mode 100644 index 8ef11272d..000000000 --- a/src/src/predef.c +++ /dev/null @@ -1,296 +0,0 @@ -/************************************************* -* Exim - an Internet mail transport agent * -*************************************************/ - -/* Copyright (c) Jeremy Harris 2017 */ -/* See the file NOTICE for conditions of use and distribution. */ - -/* Create a static data structure with the predefined macros, to be -included in the main Exim build */ - -#include "exim.h" -#include "predef.h" - -unsigned mp_index = 0; - -/* Global dummy variables */ - -void fn_smtp_receive_timeout(const uschar * name, const uschar * str) {} -uschar * syslog_facility_str; - -/******************************************************************************/ - -void -builtin_macro_create_var(const uschar * name, const uschar * val) -{ -printf ("static macro_item p%d = { ", mp_index); -if (mp_index == 0) - printf(".next=NULL,"); -else - printf(".next=&p%d,", mp_index-1); - -printf(" .command_line=FALSE, .namelen=%d, .replen=%d," - " .name=US\"%s\", .replacement=US\"%s\" };\n", - Ustrlen(name), Ustrlen(val), CS name, CS val); -mp_index++; -} - - -void -builtin_macro_create(const uschar * name) -{ -builtin_macro_create_var(name, US"y"); -} - - -void -spf(uschar * buf, int len, const uschar * fmt, ...) -{ -va_list ap; -va_start(ap, fmt); - -while (*fmt && len > 1) - if (*fmt == '%' && fmt[1] == 'T') - { - uschar * s = va_arg(ap, uschar *); - while (*s && len-- > 1) - *buf++ = toupper(*s++); - fmt += 2; - } - else - { - *buf++ = *fmt++; len--; - } -*buf = '\0'; -va_end(ap); -} - -void -options_from_list(optionlist * opts, unsigned nopt, - const uschar * section, uschar * group) -{ -int i; -const uschar * s; -uschar buf[64]; - -/* The 'previously-defined-substring' rule for macros in config file -lines is done thus for these builtin macros: we know that the table -we source from is in strict alpha order, hence the builtins portion -of the macros list is in reverse-alpha (we prepend them) - so longer -macros that have substrings are always discovered first during -expansion. */ - -for (i = 0; i < nopt; i++) if (*(s = US opts[i].name) && *s != '*') - { - if (group) - spf(buf, sizeof(buf), CUS"_OPT_%T_%T_%T", section, group, s); - else - spf(buf, sizeof(buf), CUS"_OPT_%T_%T", section, s); - builtin_macro_create(buf); - } -} - - -/******************************************************************************/ - - -/* Create compile-time feature macros */ -static void -features(void) -{ -/* Probably we could work out a static initialiser for wherever -macros are stored, but this will do for now. Some names are awkward -due to conflicts with other common macros. */ - -#ifdef SUPPORT_CRYPTEQ - builtin_macro_create(US"_HAVE_CRYPTEQ"); -#endif -#if HAVE_ICONV - builtin_macro_create(US"_HAVE_ICONV"); -#endif -#if HAVE_IPV6 - builtin_macro_create(US"_HAVE_IPV6"); -#endif -#ifdef HAVE_SETCLASSRESOURCES - builtin_macro_create(US"_HAVE_SETCLASSRESOURCES"); -#endif -#ifdef SUPPORT_PAM - builtin_macro_create(US"_HAVE_PAM"); -#endif -#ifdef EXIM_PERL - builtin_macro_create(US"_HAVE_PERL"); -#endif -#ifdef EXPAND_DLFUNC - builtin_macro_create(US"_HAVE_DLFUNC"); -#endif -#ifdef USE_TCP_WRAPPERS - builtin_macro_create(US"_HAVE_TCPWRAPPERS"); -#endif -#ifdef SUPPORT_TLS - builtin_macro_create(US"_HAVE_TLS"); -# ifdef USE_GNUTLS - builtin_macro_create(US"_HAVE_GNUTLS"); -# else - builtin_macro_create(US"_HAVE_OPENSSL"); -# endif -#endif -#ifdef SUPPORT_TRANSLATE_IP_ADDRESS - builtin_macro_create(US"_HAVE_TRANSLATE_IP_ADDRESS"); -#endif -#ifdef SUPPORT_MOVE_FROZEN_MESSAGES - builtin_macro_create(US"_HAVE_MOVE_FROZEN_MESSAGES"); -#endif -#ifdef WITH_CONTENT_SCAN - builtin_macro_create(US"_HAVE_CONTENT_SCANNING"); -#endif -#ifndef DISABLE_DKIM - builtin_macro_create(US"_HAVE_DKIM"); -#endif -#ifndef DISABLE_DNSSEC - builtin_macro_create(US"_HAVE_DNSSEC"); -#endif -#ifndef DISABLE_EVENT - builtin_macro_create(US"_HAVE_EVENT"); -#endif -#ifdef SUPPORT_I18N - builtin_macro_create(US"_HAVE_I18N"); -#endif -#ifndef DISABLE_OCSP - builtin_macro_create(US"_HAVE_OCSP"); -#endif -#ifndef DISABLE_PRDR - builtin_macro_create(US"_HAVE_PRDR"); -#endif -#ifdef SUPPORT_PROXY - builtin_macro_create(US"_HAVE_PROXY"); -#endif -#ifdef SUPPORT_SOCKS - builtin_macro_create(US"_HAVE_SOCKS"); -#endif -#ifdef TCP_FASTOPEN - builtin_macro_create(US"_HAVE_TCP_FASTOPEN"); -#endif -#ifdef EXPERIMENTAL_LMDB - builtin_macro_create(US"_HAVE_LMDB"); -#endif -#ifdef EXPERIMENTAL_SPF - builtin_macro_create(US"_HAVE_SPF"); -#endif -#ifdef EXPERIMENTAL_SRS - builtin_macro_create(US"_HAVE_SRS"); -#endif -#ifdef EXPERIMENTAL_BRIGHTMAIL - builtin_macro_create(US"_HAVE_BRIGHTMAIL"); -#endif -#ifdef EXPERIMENTAL_DANE - builtin_macro_create(US"_HAVE_DANE"); -#endif -#ifdef EXPERIMENTAL_DCC - builtin_macro_create(US"_HAVE_DCC"); -#endif -#ifdef EXPERIMENTAL_DMARC - builtin_macro_create(US"_HAVE_DMARC"); -#endif -#ifdef EXPERIMENTAL_DSN_INFO - builtin_macro_create(US"_HAVE_DSN_INFO"); -#endif - -#ifdef LOOKUP_LSEARCH - builtin_macro_create(US"_HAVE_LOOKUP_LSEARCH"); -#endif -#ifdef LOOKUP_CDB - builtin_macro_create(US"_HAVE_LOOKUP_CDB"); -#endif -#ifdef LOOKUP_DBM - builtin_macro_create(US"_HAVE_LOOKUP_DBM"); -#endif -#ifdef LOOKUP_DNSDB - builtin_macro_create(US"_HAVE_LOOKUP_DNSDB"); -#endif -#ifdef LOOKUP_DSEARCH - builtin_macro_create(US"_HAVE_LOOKUP_DSEARCH"); -#endif -#ifdef LOOKUP_IBASE - builtin_macro_create(US"_HAVE_LOOKUP_IBASE"); -#endif -#ifdef LOOKUP_LDAP - builtin_macro_create(US"_HAVE_LOOKUP_LDAP"); -#endif -#ifdef EXPERIMENTAL_LMDB - builtin_macro_create(US"_HAVE_LOOKUP_LMDB"); -#endif -#ifdef LOOKUP_MYSQL - builtin_macro_create(US"_HAVE_LOOKUP_MYSQL"); -#endif -#ifdef LOOKUP_NIS - builtin_macro_create(US"_HAVE_LOOKUP_NIS"); -#endif -#ifdef LOOKUP_NISPLUS - builtin_macro_create(US"_HAVE_LOOKUP_NISPLUS"); -#endif -#ifdef LOOKUP_ORACLE - builtin_macro_create(US"_HAVE_LOOKUP_ORACLE"); -#endif -#ifdef LOOKUP_PASSWD - builtin_macro_create(US"_HAVE_LOOKUP_PASSWD"); -#endif -#ifdef LOOKUP_PGSQL - builtin_macro_create(US"_HAVE_LOOKUP_PGSQL"); -#endif -#ifdef LOOKUP_REDIS - builtin_macro_create(US"_HAVE_LOOKUP_REDIS"); -#endif -#ifdef LOOKUP_SQLITE - builtin_macro_create(US"_HAVE_LOOKUP_SQLITE"); -#endif -#ifdef LOOKUP_TESTDB - builtin_macro_create(US"_HAVE_LOOKUP_TESTDB"); -#endif -#ifdef LOOKUP_WHOSON - builtin_macro_create(US"_HAVE_LOOKUP_WHOSON"); -#endif - -#ifdef TRANSPORT_APPENDFILE -# ifdef SUPPORT_MAILDIR - builtin_macro_create(US"_HAVE_TRANSPORT_APPEND_MAILDIR"); -# endif -# ifdef SUPPORT_MAILSTORE - builtin_macro_create(US"_HAVE_TRANSPORT_APPEND_MAILSTORE"); -# endif -# ifdef SUPPORT_MBX - builtin_macro_create(US"_HAVE_TRANSPORT_APPEND_MBX"); -# endif -#endif -} - - -static void -options(void) -{ -options_main(); -options_routers(); -options_transports(); -options_auths(); -} - -static void -params(void) -{ -#ifndef DISABLE_DKIM -dkim_params(); -#endif -} - - -int -main(void) -{ -printf("#include \"exim.h\"\n"); -features(); -options(); -params(); - -printf("macro_item * macros = &p%d;\n", mp_index-1); -printf("macro_item * mlast = &p0;\n"); -exit(0); -} diff --git a/src/src/predef.h b/src/src/predef.h deleted file mode 100644 index aece28cc7..000000000 --- a/src/src/predef.h +++ /dev/null @@ -1,19 +0,0 @@ -/************************************************* -* Exim - an Internet mail transport agent * -*************************************************/ - -/* Copyright (c) Jeremy Harris 2017 */ -/* See the file NOTICE for conditions of use and distribution. */ - -/* Global functions */ - -extern void spf(uschar *, int, const uschar *, ...); -extern void builtin_macro_create(const uschar *); -extern void builtin_macro_create_var(const uschar *, const uschar *); -extern void options_from_list(optionlist *, unsigned, const uschar *, uschar *); - -extern void options_main(void); -extern void options_routers(void); -extern void options_transports(void); -extern void options_auths(void); - diff --git a/src/src/readconf.c b/src/src/readconf.c index ebadb0233..70ce78f1f 100644 --- a/src/src/readconf.c +++ b/src/src/readconf.c @@ -12,7 +12,7 @@ implementation of the conditional .ifdef etc. */ #include "exim.h" #ifdef MACRO_PREDEF -# include "predef.h" +# include "macro_predef.h" #endif static uschar * syslog_facility_str; diff --git a/src/src/route.c b/src/src/route.c index f33a11063..1b9676f3f 100644 --- a/src/src/route.c +++ b/src/src/route.c @@ -145,7 +145,7 @@ int optionlist_routers_size = nelem(optionlist_routers); #ifdef MACRO_PREDEF -# include "predef.h" +# include "macro_predef.h" void options_routers(void) diff --git a/src/src/transport.c b/src/src/transport.c index 6caeeecc9..89f1d74bd 100644 --- a/src/src/transport.c +++ b/src/src/transport.c @@ -90,7 +90,7 @@ int optionlist_transports_size = nelem(optionlist_transports); #ifdef MACRO_PREDEF -# include "predef.h" +# include "macro_predef.h" void options_transports(void)