This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: toplevel configure hits sed program length limit on HP-UX
- From: Ralf Wildenhues <Ralf dot Wildenhues at gmx dot de>
- To: Paolo Bonzini <bonzini at gnu dot org>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Sun, 6 Sep 2009 20:01:00 +0200
- Subject: Re: toplevel configure hits sed program length limit on HP-UX
- References: <20090831185418.GC31114@gmx.de> <4A9C1F2C.5080005@gnu.org> <20090831195746.GA21485@gmx.de> <4A9C2BC1.6040203@gnu.org> <20090831204138.GD21485@gmx.de> <4A9C412F.3000705@gnu.org>
[ dropping autoconf@, moving from gcc@ to -patches ]
* Paolo Bonzini wrote on Mon, Aug 31, 2009 at 11:31:27PM CEST:
> On 08/31/2009 10:41 PM, Ralf Wildenhues wrote:
> > AC_CONFIG_COMMANDS([Makefile], [commands to fix up Makefile])
> >
> >and do whatever $extrasub did yourself in those commands.
>
> If you do want to fix HP-UX sed, this indeed seems like a better plan.
OK to apply? Tested by ensuring old and new toplevel Makefile are
identical.
Thanks,
Ralf
Fix toplevel config.status for HP-UX sed.
ChangeLog:
2009-09-06 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure.ac: Do not use $extrasub for replacing @if/@endif
parts in Makefile; instead, use additional arguments to
AC_CONFIG_COMMANDS to do the replacement manually, with several
sed invocations, to avoid HP-UX sed command limits.
* configure: Regenerate.
diff --git a/configure.ac b/configure.ac
index 592a8e3..a85c3bd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2410,12 +2410,13 @@ INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g`
# configuration, so that the top-level Makefile reconfigures them,
# like we used to do when configure itself was recursive.
-# Loop over modules. $extrasub must be used with care, limiting as
-# much as possible the usage of range addresses. That's because autoconf
-# splits the sed script to overcome limits in the number of commands,
-# and relying on carefully-timed sed passes may turn out to be very hard
-# to maintain later. In this particular case, you just have to be careful
-# not to nest @if/@endif pairs, because configure will not warn you at all.
+# Loop over modules. We used to use the "$extrasub" feature from Autoconf
+# but now we're fixing up the Makefile ourselves with the additional
+# commands passed to AC_CONFIG_FILES. Use separate variables
+# extrasub-{build,host,target} not because there is any reason to split
+# the substitutions up that way, but only to remain below the limit of
+# 99 commands in a script, for HP-UX sed.
+# Do not nest @if/@endif pairs, because configure will not warn you at all.
AC_ARG_ENABLE([bootstrap],
[ --enable-bootstrap enable bootstrapping @<:@yes if native build@:>@],,
@@ -2502,18 +2503,20 @@ fi
AC_MSG_RESULT($BUILD_CONFIG)
AC_SUBST(BUILD_CONFIG)
+extrasub_build=
for module in ${build_configdirs} ; do
if test -z "${no_recursion}" \
&& test -f ${build_subdir}/${module}/Makefile; then
echo 1>&2 "*** removing ${build_subdir}/${module}/Makefile to force reconfigure"
rm -f ${build_subdir}/${module}/Makefile
fi
- extrasub="$extrasub
+ extrasub_build="$extrasub_build
/^@if build-$module\$/d
/^@endif build-$module\$/d
/^@if build-$module-$bootstrap_suffix\$/d
/^@endif build-$module-$bootstrap_suffix\$/d"
done
+extrasub_host=
for module in ${configdirs} ; do
if test -z "${no_recursion}"; then
for file in stage*-${module}/Makefile prev-${module}/Makefile ${module}/Makefile; do
@@ -2523,12 +2526,13 @@ for module in ${configdirs} ; do
fi
done
fi
- extrasub="$extrasub
+ extrasub_host="$extrasub_host
/^@if $module\$/d
/^@endif $module\$/d
/^@if $module-$bootstrap_suffix\$/d
/^@endif $module-$bootstrap_suffix\$/d"
done
+extrasub_target=
for module in ${target_configdirs} ; do
if test -z "${no_recursion}" \
&& test -f ${target_subdir}/${module}/Makefile; then
@@ -2542,14 +2546,15 @@ for module in ${target_configdirs} ; do
*) target_bootstrap_suffix=no-bootstrap ;;
esac
- extrasub="$extrasub
+ extrasub_target="$extrasub_target
/^@if target-$module\$/d
/^@endif target-$module\$/d
/^@if target-$module-$target_bootstrap_suffix\$/d
/^@endif target-$module-$target_bootstrap_suffix\$/d"
done
-extrasub="$extrasub
+# Do the final fixup along with target modules.
+extrasub_target="$extrasub_target
/^@if /,/^@endif /d"
# Create the serialization dependencies. This uses a temporary file.
@@ -3167,4 +3172,12 @@ case "$target" in
esac
AC_SUBST(compare_exclusions)
-AC_OUTPUT(Makefile)
+AC_CONFIG_FILES([Makefile],
+ [sed "$extrasub_build" Makefile |
+ sed "$extrasub_host" |
+ sed "$extrasub_target" > mf$$
+ mv -f mf$$ Makefile],
+ [extrasub_build="$extrasub_build"
+ extrasub_host="$extrasub_host"
+ extrasub_target="$extrasub_target"])
+AC_OUTPUT