diff options
Diffstat (limited to 'build/autoconf/hooks.m4')
-rw-r--r-- | build/autoconf/hooks.m4 | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/build/autoconf/hooks.m4 b/build/autoconf/hooks.m4 new file mode 100644 index 000000000..5c921b549 --- /dev/null +++ b/build/autoconf/hooks.m4 @@ -0,0 +1,82 @@ +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 Wrap AC_INIT_PREPARE to add the above trap. +define([_MOZ_AC_INIT_PREPARE], defn([AC_INIT_PREPARE])) +define([AC_INIT_PREPARE], +[_MOZ_AC_INIT_PREPARE($1) + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +> subconfigures +> skip_subconfigures +]) + +define([AC_OUTPUT_SUBDIRS], +[for moz_config_dir in $1; do + _CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + case "$moz_config_dir" in + *:*) + objdir=$(echo $moz_config_dir | awk -F: '{print [$]2}') + ;; + *) + objdir=$moz_config_dir + ;; + esac + dnl Because config.status, storing AC_SUBSTs, is written before any + dnl subconfigure runs, we need to use a file. Moreover, some subconfigures + dnl are started from a subshell, and variable modifications from a subshell + dnl wouldn't be preserved. + echo $objdir >> subconfigures + + dumpenv="true | " + case "$host" in + *-mingw*) + _CONFIG_SHELL=$(cd $(dirname $_CONFIG_SHELL); pwd -W)/$(basename $_CONFIG_SHELL) + if test ! -e "$_CONFIG_SHELL" -a -e "${_CONFIG_SHELL}.exe"; then + _CONFIG_SHELL="${_CONFIG_SHELL}.exe" + fi + dnl Yes, this is horrible. But since msys doesn't preserve environment + dnl variables and command line arguments as they are when transitioning + dnl from msys (this script) to python (below), we have to resort to hacks, + dnl storing the environment and command line arguments from a msys process + dnl (perl), and reading it from python. + dumpenv="$PERL $_topsrcdir/build/win32/dumpenv4python.pl $ac_configure_args | " + ;; + esac + + eval $dumpenv $PYTHON $_topsrcdir/build/subconfigure.py --prepare "$srcdir" "$moz_config_dir" "$_CONFIG_SHELL" $ac_configure_args ifelse($2,,,--cache-file="$2") + + dnl Actual subconfigure execution happens in MOZ_RUN_CONFIG_STATUS +done +]) + +define([AC_OUTPUT_SUBDIRS_NOW], +[ +for moz_config_dir_ in $1; do + AC_OUTPUT_SUBDIRS($moz_config_dir_,$2) + tail -1 subconfigures >> skip_subconfigures + MOZ_RUN_SUBCONFIGURES(`tail -1 skip_subconfigures`) +done +]) + +define([MOZ_RUN_SUBCONFIGURES], +[dnl Execute subconfigure, unless --no-recursion was passed to configure. +if test "$no_recursion" != yes; then + trap '' EXIT + if ! $PYTHON $_topsrcdir/build/subconfigure.py $1; then + exit 1 + fi +fi +]) + +define([MOZ_RUN_ALL_SUBCONFIGURES],[ +MOZ_RUN_SUBCONFIGURES([--list subconfigures --skip skip_subconfigures]) +]) + +dnl Print error messages in config.log as well as stderr +define([AC_MSG_ERROR], +[{ echo "configure: error: $1" 1>&2; echo "configure: error: $1" 1>&5; exit 1; }]) |