dnl This Source Code Form is subject to the terms of the Mozilla Public dnl License, v. 2.0. If a copy of the MPL was not distributed with this dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. dnl For use in AC_SUBST replacement define([MOZ_DIVERSION_SUBST], 11) dnl Replace AC_SUBST to store values in a format suitable for python. dnl The necessary comma after the tuple can't be put here because it dnl can mess around with things like: dnl AC_SOMETHING(foo,AC_SUBST(),bar) define([AC_SUBST], [ifdef([AC_SUBST_SET_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_SET on the same variable ($1)])], [ifdef([AC_SUBST_LIST_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_LIST on the same variable ($1)])], [ifdef([AC_SUBST_TOML_LIST_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_TOML_LIST on the same variable ($1)])], [ifdef([AC_SUBST_$1], , [define([AC_SUBST_$1], )dnl AC_DIVERT_PUSH(MOZ_DIVERSION_SUBST)dnl (''' $1 ''', r''' [$]$1 ''') AC_DIVERT_POP()dnl ])])])])]) dnl Like AC_SUBST, but makes the value available as a set in python, dnl with values got from the value of the environment variable, split on dnl whitespaces. define([AC_SUBST_SET], [ifdef([AC_SUBST_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_SET on the same variable ($1)])], [ifdef([AC_SUBST_LIST_$1], [m4_fatal([Cannot use AC_SUBST_LIST and AC_SUBST_SET on the same variable ($1)])], [ifdef([AC_SUBST_TOML_LIST_$1], [m4_fatal([Cannot use AC_SUBST_TOML_LIST and AC_SUBST_SET on the same variable ($1)])], [ifdef([AC_SUBST_SET_$1], , [define([AC_SUBST_SET_$1], )dnl AC_DIVERT_PUSH(MOZ_DIVERSION_SUBST)dnl (''' $1 ''', unique_list(split(r''' [$]$1 '''))) AC_DIVERT_POP()dnl ])])])])]) dnl Like AC_SUBST, but makes the value available as a list in python, dnl with values got from the value of the environment variable, split on dnl whitespaces. define([AC_SUBST_LIST], [ifdef([AC_SUBST_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_LIST on the same variable ($1)])], [ifdef([AC_SUBST_SET_$1], [m4_fatal([Cannot use AC_SUBST_SET and AC_SUBST_LIST on the same variable ($1)])], [ifdef([AC_SUBST_TOML_LIST_$1], [m4_fatal([Cannot use AC_SUBST_TOML_LIST and AC_SUBST_LIST on the same variable ($1)])], [ifdef([AC_SUBST_LIST_$1], , [define([AC_SUBST_LIST_$1], )dnl AC_DIVERT_PUSH(MOZ_DIVERSION_SUBST)dnl (''' $1 ''', list(split(r''' [$]$1 '''))) AC_DIVERT_POP()dnl ])])])])]) dnl Like AC_SUBST, but makes the value available as a string of comma-separated dnl quoted strings in python, with values got from the value of the environment dnl variable, split on whitespaces. The value is suitable for embedding into a dnl .toml list. define([AC_SUBST_TOML_LIST], [ifdef([AC_SUBST_$1], [m4_fatal([Cannot use AC_SUBST and AC_SUBST_TOML_LIST on the same variable ($1)])], [ifdef([AC_SUBST_SET_$1], [m4_fatal([Cannot use AC_SUBST_SET and AC_SUBST_TOML_LIST on the same variable ($1)])], [ifdef([AC_SUBST_LIST_$1], [m4_fatal([Cannot use AC_SUBST_LIST and AC_SUBST_TOML_LIST on the same variable ($1)])], [ifdef([AC_SUBST_TOML_LIST_$1], , [define([AC_SUBST_TOML_LIST_$1], )dnl AC_DIVERT_PUSH(MOZ_DIVERSION_SUBST)dnl (''' $1 ''', r''' %s ''' % str(', '.join("'%s'" % s for s in split(r''' [$]$1 ''')))) AC_DIVERT_POP()dnl ])])])])]) dnl Ignore AC_SUBSTs for variables we don't have use for but that autoconf dnl itself exports. define([AC_SUBST_CFLAGS], ) define([AC_SUBST_CPPFLAGS], ) define([AC_SUBST_CXXFLAGS], ) define([AC_SUBST_FFLAGS], ) define([AC_SUBST_DEFS], ) define([AC_SUBST_LDFLAGS], ) define([AC_SUBST_LIBS], ) dnl Wrap AC_DEFINE to store values in a format suitable for python. dnl autoconf's AC_DEFINE still needs to be used to fill confdefs.h, dnl which is #included during some compile checks. dnl The necessary comma after the tuple can't be put here because it dnl can mess around with things like: dnl AC_SOMETHING(foo,AC_DEFINE(),bar) define([_MOZ_AC_DEFINE], defn([AC_DEFINE])) define([AC_DEFINE], [cat >> confdefs.pytmp <<\EOF (''' $1 ''', ifelse($#, 2, [r''' $2 '''], $#, 3, [r''' $2 '''], ' 1 ')) EOF ifelse($#, 2, _MOZ_AC_DEFINE([$1], [$2]), $#, 3, _MOZ_AC_DEFINE([$1], [$2], [$3]),_MOZ_AC_DEFINE([$1]))dnl ]) dnl Wrap AC_DEFINE_UNQUOTED to store values in a format suitable for dnl python. define([_MOZ_AC_DEFINE_UNQUOTED], defn([AC_DEFINE_UNQUOTED])) define([AC_DEFINE_UNQUOTED], [cat >> confdefs.pytmp <>>)dnl echo creating $CONFIG_STATUS cat > $CONFIG_STATUS <> $CONFIG_STATUS rm confdefs.pytmp confdefs.h cat >> $CONFIG_STATUS <<\EOF ] substs = [ EOF dnl The MOZ_DIVERSION_SUBST output diversion contains AC_SUBSTs, in the dnl expected format, but lacks the final comma (see above). sed 's/$/,/' >> $CONFIG_STATUS <> $CONFIG_STATUS done cat >> $CONFIG_STATUS <<\EOF ] flags = [ undivert(MOZ_DIVERSION_ARGS)dnl ] EOF changequote([, ]) ]) define([m4_fatal],[ errprint([$1 ]) m4exit(1) ]) define([AC_OUTPUT], [ifelse($#_$1, 1_, [MOZ_CREATE_CONFIG_STATUS() MOZ_RUN_CONFIG_STATUS()], [m4_fatal([Use CONFIGURE_SUBST_FILES in moz.build files to create substituted files.])] )]) define([AC_CONFIG_HEADER], [m4_fatal([Use CONFIGURE_DEFINE_FILES in moz.build files to produce header files.]) ])