# DP: - Disable some biarch libraries for biarch builds.
# DP: - Fix multilib builds on kernels which don't support all multilibs.

--- a/src/config-ml.in
+++ b/src/config-ml.in
@@ -505,6 +505,25 @@ if [ x$with_multi_buildlist != x ]; then
   done
 fi
 
+if [ -z "$biarch_multidir_names" ]; then
+  biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp"
+  echo "WARNING: biarch_multidir_names is unset. Use default value:"
+  echo "  $biarch_multidir_names"
+fi
+ml_srcbase=`basename $ml_realsrcdir`
+old_multidirs="${multidirs}"
+multidirs=""
+for x in ${old_multidirs}; do
+    case " $x " in
+	" 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf "|" m4-nofpu ")
+	case "$biarch_multidir_names" in
+	    *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;;
+	esac
+	;;
+	*) multidirs="${multidirs} ${x}" ;;
+    esac
+done
+
 # Remove extraneous blanks from multidirs.
 # Tests like `if [ -n "$multidirs" ]' require it.
 multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
@@ -946,9 +965,19 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
 	fi
     fi
 
+    ml_configure_args=
+    for arg in ${ac_configure_args}
+    do
+      case $arg in
+      *CC=*)  ml_configure_args=${ml_config_env} ;;
+      *CXX=*) ml_configure_args=${ml_config_env} ;;
+      *) ;;
+      esac
+    done
+
     if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
 	--with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
-	"${ac_configure_args}" ${ml_config_env} ${ml_srcdiroption} ; then
+	"${ac_configure_args}" ${ml_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then
       true
     else
       exit 1
