[CCing port maintainers] Currently the MULTIARCH_DIRNAME is not correctly set for the x86_64-kfreebsd-gnu target, and is not set at all for architectures which do have multilib configurations by default. This patch makes sure that MULTIARCH_DIRNAME is always set to the default multilib configuration for these multilib targets.
I am using this macro in a local patch which installs the host specific C++ headers to /usr/include/$(MULTIARCH_DIRNAME)/c++/4.x.y instead of $(gcc_gxx_include_dir)/$(target_noncanonical). Ok for the trunk? Matthias
2013-06-12 Matthias Klose <d...@ubuntu.com> * config/i386/t-linux64: Set MULTIARCH_DIRNAME. * config/i386/t-kfreebsd: Set MULTIARCH_DIRNAME. * config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend i386/t-linux to $tmake_file. * config/mips/t-linux64: Set MULTIARCH_DIRNAME. * config/rs6000/t-linux64: Set MULTIARCH_DIRNAME. * config/s390/t-linux64: Set MULTIARCH_DIRNAME. * config/sparc/t-linux64: Set MULTIARCH_DIRNAME. Index: config/sparc/t-linux64 =================================================================== --- config/sparc/t-linux64 (revision 200012) +++ config/sparc/t-linux64 (working copy) @@ -27,3 +27,5 @@ MULTILIB_DIRNAMES = 64 32 MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) + +MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) Index: config/mips/t-linux64 =================================================================== --- config/mips/t-linux64 (revision 200012) +++ config/mips/t-linux64 (working copy) @@ -24,3 +24,13 @@ ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + +ifneq (,$(findstring abin32,$(target))) +MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) +else +ifneq (,$(findstring abi64,$(target))) +MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) +else +MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) +endif +endif Index: config/rs6000/t-linux64 =================================================================== --- config/rs6000/t-linux64 (revision 200012) +++ config/rs6000/t-linux64 (working copy) @@ -30,3 +30,5 @@ MULTILIB_EXTRA_OPTS = fPIC MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:powerpc64-linux-gnu) MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) + +MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) Index: config/s390/t-linux64 =================================================================== --- config/s390/t-linux64 (revision 200012) +++ config/s390/t-linux64 (working copy) @@ -9,3 +9,5 @@ MULTILIB_DIRNAMES = 64 32 MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) + +MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) Index: config/i386/t-kfreebsd =================================================================== --- config/i386/t-kfreebsd (revision 200012) +++ config/i386/t-kfreebsd (working copy) @@ -1,5 +1,9 @@ -MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) +ifeq (,$(MULTIARCH_DIRNAME)) + MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) +endif # MULTILIB_OSDIRNAMES are set in t-linux64. KFREEBSD_OS = $(filter kfreebsd%, $(word 3, $(subst -, ,$(target)))) MULTILIB_OSDIRNAMES := $(filter-out mx32=%,$(subst linux,$(KFREEBSD_OS),$(MULTILIB_OSDIRNAMES))) + +MULTIARCH_DIRNAME := $(subst linux,$(KFREEBSD_OS),$(MULTIARCH_DIRNAME)) Index: config/i386/t-linux64 =================================================================== --- config/i386/t-linux64 (revision 200012) +++ config/i386/t-linux64 (working copy) @@ -36,3 +36,13 @@ MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) + +ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) + MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32) + else + MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu) + endif +else + MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu) +endif Index: config.gcc =================================================================== --- config.gcc (revision 200012) +++ config.gcc (working copy) @@ -3738,7 +3738,7 @@ i[34567]86-*-darwin* | x86_64-*-darwin*) ;; i[34567]86-*-linux* | x86_64-*-linux*) - tmake_file="$tmake_file i386/t-linux" + tmake_file="i386/t-linux $tmake_file" ;; i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) tmake_file="$tmake_file i386/t-kfreebsd"