summaryrefslogtreecommitdiffstats
path: root/m4/multilib-fix.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/multilib-fix.m4')
-rw-r--r--m4/multilib-fix.m478
1 files changed, 78 insertions, 0 deletions
diff --git a/m4/multilib-fix.m4 b/m4/multilib-fix.m4
new file mode 100644
index 0000000..d822a79
--- /dev/null
+++ b/m4/multilib-fix.m4
@@ -0,0 +1,78 @@
+# Automake-1.10's AM_ENABLE_MULTILIB is buggy - it
+# does not properly preserve quoting when copying
+# ac_configure_args to the 'config.status' it creates.
+# I guess one level of quoting is removed when the
+# copying happens (by means of a 'here'-document in
+# AC_OUTPUT_COMMANDS).
+#
+# Note that we cannot use a different name since
+# automake 'knows' about AM_ENABLE_MULTILIB and
+# behaves differently if we would, e.g., name the
+# modified macro 'MY_ENABLE_MULTILIB'.
+# Hence we hope that we can override automake/aclocal's
+# definition.
+#
+# Below (look at the 'sed' code) we replace all occurrences
+# of '$' by '\$' so that 'config.status' again says '$'.
+#
+# This is important if we want to pass e.g.,
+#
+# --exec-prefix='${prefix}/xxx'
+#
+# correctly to the multisubdir configurations.
+#
+# AM_ENABLE_MULTILIB([MAKEFILE], [REL-TO-TOP-SRCDIR])
+# ---------------------------------------------------
+# Add --enable-multilib to configure.
+AC_DEFUN([AM_ENABLE_MULTILIB],
+[# Default to --enable-multilib
+AC_ARG_ENABLE(multilib,
+[ --enable-multilib build many library versions (default)],
+[case "$enableval" in
+ yes) multilib=yes ;;
+ no) multilib=no ;;
+ *) AC_MSG_ERROR([bad value $enableval for multilib option]) ;;
+ esac],
+ [multilib=yes])
+
+# We may get other options which we leave undocumented:
+# --with-target-subdir, --with-multisrctop, --with-multisubdir
+# See config-ml.in if you want the gory details.
+
+if test "$srcdir" = "."; then
+ if test "$with_target_subdir" != "."; then
+ multi_basedir="$srcdir/$with_multisrctop../$2"
+ else
+ multi_basedir="$srcdir/$with_multisrctop$2"
+ fi
+else
+ multi_basedir="$srcdir/$2"
+fi
+AC_SUBST(multi_basedir)
+
+# Even if the default multilib is not a cross compilation,
+# it may be that some of the other multilibs are.
+if test $cross_compiling = no && test $multilib = yes \
+ && test "x${with_multisubdir}" != x ; then
+ cross_compiling=maybe
+fi
+
+AC_OUTPUT_COMMANDS([
+# Only add multilib support code if we just rebuilt the top-level
+# Makefile.
+case " $CONFIG_FILES " in
+ *" ]m4_default([$1],Makefile)[ "*)
+ ac_file=]m4_default([$1],Makefile)[ . ${multi_basedir}/config-ml.in
+ ;;
+esac],
+ [
+srcdir="$srcdir"
+host="$host"
+target="$target"
+with_multisubdir="$with_multisubdir"
+with_multisrctop="$with_multisrctop"
+with_target_subdir="$with_target_subdir"
+ac_configure_args="${multilib_arg} `echo ${ac_configure_args} | sed -e 's/[$]/\\\\$/g'`"
+multi_basedir="$multi_basedir"
+CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+CC="$CC"])])dnl