From c0da6cce91b0294904c75916b7ed79c319577a80 Mon Sep 17 00:00:00 2001
From: Dima Kogan <dima@secretsauce.net>
Date: Mon, 15 Dec 2014 14:48:09 -0800
Subject: [PATCH 04/11] added multi-arch-specific install-location patch

Added cross-ma-install-location.diff, a multiarch analogue or the existing
cross-install-location.diff. Using this if with_deps_on_target_arch_pkgs
---
 debian/patches/cross-ma-install-location.diff | 422 ++++++++++++++++++
 debian/rules.patch                            |  10 +-
 2 files changed, 429 insertions(+), 3 deletions(-)
 create mode 100644 debian/patches/cross-ma-install-location.diff

diff --git a/debian/patches/cross-ma-install-location.diff b/debian/patches/cross-ma-install-location.diff
new file mode 100644
index 0000000..ca7be69
--- /dev/null
+++ b/debian/patches/cross-ma-install-location.diff
@@ -0,0 +1,422 @@
+Index: b/src/boehm-gc/configure.ac
+===================================================================
+--- a/src/boehm-gc/configure.ac
++++ b/src/boehm-gc/configure.ac
+@@ -498,14 +498,8 @@
+   AC_DEFINE(USE_MMAP, 1, [use MMAP instead of sbrk to get new memory])
+ fi
+ 
+-if test -n "$with_cross_host" &&
+-   test x"$with_cross_host" != x"no"; then
+-  toolexecdir='$(exec_prefix)/$(target_noncanonical)'
+-  toolexeclibdir='$(toolexecdir)/lib'
+-else
+-  toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
+-  toolexeclibdir='$(libdir)'
+-fi
++toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
++toolexeclibdir='$(libdir)'
+ multi_os_directory=`$CC -print-multi-os-directory`
+ case $multi_os_directory in
+   .) ;; # Avoid trailing /.
+Index: b/src/libada/configure.ac
+===================================================================
+--- a/src/libada/configure.ac
++++ b/src/libada/configure.ac
+@@ -65,15 +65,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libffi/configure.ac
+===================================================================
+--- a/src/libffi/configure.ac
++++ b/src/libffi/configure.ac
+@@ -497,14 +497,9 @@
+     AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
+   fi)
+ 
+-if test -n "$with_cross_host" &&
+-   test x"$with_cross_host" != x"no"; then
+-  toolexecdir='$(exec_prefix)/$(target_alias)'
+-  toolexeclibdir='$(toolexecdir)/lib'
+-else
+-  toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-  toolexeclibdir='$(libdir)'
+-fi
++toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++toolexeclibdir='$(libdir)'
++
+ multi_os_directory=`$CC -print-multi-os-directory`
+ case $multi_os_directory in
+   .) ;; # Avoid trailing /.
+Index: b/src/libgcc/configure.ac
+===================================================================
+--- a/src/libgcc/configure.ac
++++ b/src/libgcc/configure.ac
+@@ -95,8 +95,6 @@
+ slibdir="$with_slibdir",
+ if test "${version_specific_libs}" = yes; then
+   slibdir='$(libsubdir)'
+-elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
+-  slibdir='$(exec_prefix)/$(host_noncanonical)/lib'
+ else
+   slibdir='$(libdir)'
+ fi)
+@@ -141,15 +139,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_noncanonical)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libgfortran/configure.ac
+===================================================================
+--- a/src/libgfortran/configure.ac
++++ b/src/libgfortran/configure.ac
+@@ -98,15 +98,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libgo/configure.ac
+===================================================================
+--- a/src/libgo/configure.ac
++++ b/src/libgo/configure.ac
+@@ -80,14 +80,8 @@
+ 
+ # Calculate glibgo_toolexecdir, glibgo_toolexeclibdir
+ # Install a library built with a cross compiler in tooldir, not libdir.
+-if test -n "$with_cross_host" &&
+-   test x"$with_cross_host" != x"no"; then
+-  nover_glibgo_toolexecdir='${exec_prefix}/${host_alias}'
+-  nover_glibgo_toolexeclibdir='${toolexecdir}/lib'
+-else
+-  nover_glibgo_toolexecdir='${libdir}/gcc/${host_alias}'
+-  nover_glibgo_toolexeclibdir='${libdir}'
+-fi
++nover_glibgo_toolexecdir='${libdir}/gcc/${host_alias}'
++nover_glibgo_toolexeclibdir='${libdir}'
+ multi_os_directory=`$GOC -print-multi-os-directory`
+ case $multi_os_directory in
+   .) ;; # Avoid trailing /.
+Index: b/src/libgomp/configure.ac
+===================================================================
+--- a/src/libgomp/configure.ac
++++ b/src/libgomp/configure.ac
+@@ -76,15 +76,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libitm/configure.ac
+===================================================================
+--- a/src/libitm/configure.ac
++++ b/src/libitm/configure.ac
+@@ -90,15 +90,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libjava/configure.ac
+===================================================================
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -1571,15 +1571,8 @@
+     toolexeclibdir=$toolexecmainlibdir
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_noncanonical)'
+-      toolexecmainlibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
+-      toolexecmainlibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
++    toolexecmainlibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
+Index: b/src/libobjc/configure.ac
+===================================================================
+--- a/src/libobjc/configure.ac
++++ b/src/libobjc/configure.ac
+@@ -108,15 +108,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_noncanonical)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libquadmath/configure.ac
+===================================================================
+--- a/src/libquadmath/configure.ac
++++ b/src/libquadmath/configure.ac
+@@ -93,15 +93,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libssp/configure.ac
+===================================================================
+--- a/src/libssp/configure.ac
++++ b/src/libssp/configure.ac
+@@ -170,15 +170,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libstdc++-v3/acinclude.m4
+===================================================================
+--- a/src/libstdc++-v3/acinclude.m4
++++ b/src/libstdc++-v3/acinclude.m4
+@@ -840,14 +840,8 @@
+   # Calculate glibcxx_toolexecdir, glibcxx_toolexeclibdir
+   # Install a library built with a cross compiler in tooldir, not libdir.
+   if test x"$glibcxx_toolexecdir" = x"no"; then
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      glibcxx_toolexecdir='${exec_prefix}/${host_alias}'
+-      glibcxx_toolexeclibdir='${toolexecdir}/lib'
+-    else
+-      glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
+-      glibcxx_toolexeclibdir='${libdir}'
+-    fi
++    glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
++    glibcxx_toolexeclibdir='${libdir}'
+     multi_os_directory=`$CXX -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/zlib/configure.ac
+===================================================================
+--- a/src/zlib/configure.ac
++++ b/src/zlib/configure.ac
+@@ -91,14 +91,9 @@
+ 
+ AC_CHECK_HEADERS(unistd.h)
+ 
+-if test -n "$with_cross_host" &&
+-   test x"$with_cross_host" != x"no"; then
+-  toolexecdir='$(exec_prefix)/$(target_alias)'
+-  toolexeclibdir='$(toolexecdir)/lib'
+-else
+-  toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-  toolexeclibdir='$(libdir)'
+-fi
++toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++toolexeclibdir='$(libdir)'
++
+ if test "$GCC" = yes && $CC -print-multi-os-directory > /dev/null 2>&1; then
+   multiosdir=/`$CC -print-multi-os-directory`
+   case $multiosdir in
+Index: b/src/libatomic/configure.ac
+===================================================================
+--- a/src/libatomic/configure.ac
++++ b/src/libatomic/configure.ac
+@@ -96,15 +96,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libsanitizer/configure.ac
+===================================================================
+--- a/src/libsanitizer/configure.ac
++++ b/src/libsanitizer/configure.ac
+@@ -40,15 +40,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libvtv/configure.ac
+===================================================================
+--- a/src/libvtv/configure.ac
++++ b/src/libvtv/configure.ac
+@@ -72,15 +72,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+Index: b/src/libcilkrts/configure.ac
+===================================================================
+--- a/src/libcilkrts/configure.ac
++++ b/src/libcilkrts/configure.ac
+@@ -103,15 +103,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
+--- a/src/libmpx/configure.ac
++++ b/src/libmpx/configure.ac
+@@ -70,15 +70,8 @@
+     toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+     ;;
+   no)
+-    if test -n "$with_cross_host" &&
+-       test x"$with_cross_host" != x"no"; then
+-      # Install a library built with a cross compiler in tooldir, not libdir.
+-      toolexecdir='$(exec_prefix)/$(target_alias)'
+-      toolexeclibdir='$(toolexecdir)/lib'
+-    else
+-      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+-      toolexeclibdir='$(libdir)'
+-    fi
++    toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++    toolexeclibdir='$(libdir)'
+     multi_os_directory=`$CC -print-multi-os-directory`
+     case $multi_os_directory in
+       .) ;; # Avoid trailing /.
diff --git a/debian/rules.patch b/debian/rules.patch
index c3ca7be..0d555f8 100644
--- a/debian/rules.patch
+++ b/debian/rules.patch
@@ -319,9 +319,13 @@ debian_patches += arm-multilib-defaults
 
 ifeq ($(DEB_CROSS),yes)
   debian_patches += cross-fixes
-  debian_patches += cross-install-location
-  ifeq ($(with_d),yes)
-    debian_patches += gdc-cross-install-location
+  ifeq ($(with_deps_on_target_arch_pkgs),yes)
+    debian_patches += cross-ma-install-location
+  else
+    debian_patches += cross-install-location
+    ifeq ($(with_d),yes)
+      debian_patches += gdc-cross-install-location
+    endif
   endif
 endif
 
-- 
2.17.0

