invoke.texi: Document -print-multiarch.
2013-01-14 Matthias Klose <doko@ubuntu.com> * doc/invoke.texi: Document -print-multiarch. * doc/install.texi: Document --enable-multiarch. * doc/fragments.texi: Document MULTILIB_OSDIRNAMES, MULTIARCH_DIRNAME. * configure.ac: Add --enable-multiarch option. Substitute with_cpu, with_float. * configure: Regenerate. * Makefile.in (s-mlib): Pass MULTIARCH_DIRNAME to genmultilib. enable_multiarch, with_cpu, with_float: New macros. if_multiarch: New macro, define in terms of enable_multiarch. * genmultilib: Add new argument for the multiarch name. * gcc.c (multiarch_dir): Define. (for_each_path): Search for multiarch suffixes. (driver_handle_option): Handle multiarch option. (do_spec_1): Pass -imultiarch if defined. (main): Print multiarch. (set_multilib_dir): Separate multilib and multiarch names from multilib_select. (print_multilib_info): Ignore multiarch names in multilib_select. * incpath.c (add_standard_paths): Search the multiarch include dirs. * cppdefault.h (default_include): Document multiarch in multilib member. * cppdefault.c: [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an include directory for multiarch directories. * common.opt: New options --print-multiarch and -imultilib. * config.gcc <i[34567]86-*-linux* | x86_64-*-linux*> (tmake_file): Include i386/t-linux. <i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu> (tmake_file): Include i386/t-kfreebsd. <i[34567]86-*-gnu*> (tmake_file): Include i386/t-gnu. * config/i386/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES, define MULTIARCH_DIRNAME. * config/i386/t-gnu: New file. * config/i386/t-kfreebsd: Likewise. * config/i386/t-linux: Likewise. * config/sparc/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES. * config/sparc/t-linux: New file; define MULTIARCH_DIRNAME. * config.gcc <sparc-*-linux*> (tmake_file): Include sparc/t-linux for 32bit non-biarch configurations. * config/pa/t-linux: New file; define MULTIARCH_DIRNAME. * config.gcc <hppa*64*-*-linux*, hppa*-*-linux*> (tmake_file): Include pa/t-linux. * config/mips/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES. * config/arm/t-linux-eabi: Define MULTIARCH_DIRNAME for linux target. * config/rs6000/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES. * config/rs6000/t-linux: New file; define MULTIARCH_DIRNAME. * config/rs6000/t-fprules (SOFT_FLOAT_CPUS): New macro. Add e300c2 to the list. (MULTILIB_MATCHES_FLOAT): Define in terms of SOFT_FLOAT_CPUS. * config.gcc <powerpc-*-linux* | powerpc64-*-linux*> (tmake_file): Include rs6000/t-linux for 32bit non-biarch configurations. * config/s390/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES. * config/m68k/t-linux: Define MULTIARCH_DIRNAME. * config/ia64/t-linux: New file; define MULTIARCH_DIRNAME. * config.gcc <ia64*-*-linux*> (tmake_file): Include ia64/t-linux. * config/alpha/t-linux: New file; define MULTIARCH_DIRNAME. * config.gcc <alpha*-*-linux*> (tmake_file): Include alpha/t-linux. From-SVN: r195153
This commit is contained in:
parent
77fd7d7410
commit
363bc42cf0
|
@ -1,3 +1,72 @@
|
|||
2013-01-14 Matthias Klose <doko@ubuntu.com>
|
||||
|
||||
* doc/invoke.texi: Document -print-multiarch.
|
||||
* doc/install.texi: Document --enable-multiarch.
|
||||
* doc/fragments.texi: Document MULTILIB_OSDIRNAMES, MULTIARCH_DIRNAME.
|
||||
* configure.ac: Add --enable-multiarch option.
|
||||
Substitute with_cpu, with_float.
|
||||
* configure: Regenerate.
|
||||
* Makefile.in (s-mlib): Pass MULTIARCH_DIRNAME to genmultilib.
|
||||
enable_multiarch, with_cpu, with_float: New macros.
|
||||
if_multiarch: New macro, define in terms of enable_multiarch.
|
||||
* genmultilib: Add new argument for the multiarch name.
|
||||
* gcc.c (multiarch_dir): Define.
|
||||
(for_each_path): Search for multiarch suffixes.
|
||||
(driver_handle_option): Handle multiarch option.
|
||||
(do_spec_1): Pass -imultiarch if defined.
|
||||
(main): Print multiarch.
|
||||
(set_multilib_dir): Separate multilib and multiarch names
|
||||
from multilib_select.
|
||||
(print_multilib_info): Ignore multiarch names in multilib_select.
|
||||
* incpath.c (add_standard_paths): Search the multiarch include dirs.
|
||||
* cppdefault.h (default_include): Document multiarch in multilib
|
||||
member.
|
||||
* cppdefault.c: [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an
|
||||
include directory for multiarch directories.
|
||||
* common.opt: New options --print-multiarch and -imultilib.
|
||||
|
||||
* config.gcc <i[34567]86-*-linux* | x86_64-*-linux*> (tmake_file):
|
||||
Include i386/t-linux.
|
||||
<i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu> (tmake_file):
|
||||
Include i386/t-kfreebsd.
|
||||
<i[34567]86-*-gnu*> (tmake_file): Include i386/t-gnu.
|
||||
* config/i386/t-linux64: Add multiarch names in
|
||||
MULTILIB_OSDIRNAMES, define MULTIARCH_DIRNAME.
|
||||
* config/i386/t-gnu: New file.
|
||||
* config/i386/t-kfreebsd: Likewise.
|
||||
* config/i386/t-linux: Likewise.
|
||||
|
||||
* config/sparc/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
|
||||
* config/sparc/t-linux: New file; define MULTIARCH_DIRNAME.
|
||||
* config.gcc <sparc-*-linux*> (tmake_file): Include sparc/t-linux
|
||||
for 32bit non-biarch configurations.
|
||||
|
||||
* config/pa/t-linux: New file; define MULTIARCH_DIRNAME.
|
||||
* config.gcc <hppa*64*-*-linux*, hppa*-*-linux*> (tmake_file):
|
||||
Include pa/t-linux.
|
||||
|
||||
* config/mips/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
|
||||
|
||||
* config/arm/t-linux-eabi: Define MULTIARCH_DIRNAME for linux target.
|
||||
|
||||
* config/rs6000/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
|
||||
* config/rs6000/t-linux: New file; define MULTIARCH_DIRNAME.
|
||||
* config/rs6000/t-fprules (SOFT_FLOAT_CPUS): New macro. Add e300c2
|
||||
to the list.
|
||||
(MULTILIB_MATCHES_FLOAT): Define in terms of SOFT_FLOAT_CPUS.
|
||||
* config.gcc <powerpc-*-linux* | powerpc64-*-linux*> (tmake_file):
|
||||
Include rs6000/t-linux for 32bit non-biarch configurations.
|
||||
|
||||
* config/s390/t-linux64: Add multiarch names in MULTILIB_OSDIRNAMES.
|
||||
|
||||
* config/m68k/t-linux: Define MULTIARCH_DIRNAME.
|
||||
|
||||
* config/ia64/t-linux: New file; define MULTIARCH_DIRNAME.
|
||||
* config.gcc <ia64*-*-linux*> (tmake_file): Include ia64/t-linux.
|
||||
|
||||
* config/alpha/t-linux: New file; define MULTIARCH_DIRNAME.
|
||||
* config.gcc <alpha*-*-linux*> (tmake_file): Include alpha/t-linux.
|
||||
|
||||
2013-01-14 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* tree-vectorizer.h (vect_get_single_scalar_iteraion_cost): Fix typo.
|
||||
|
|
|
@ -540,6 +540,21 @@ extra_modes_file=@extra_modes_file@
|
|||
extra_opt_files=@extra_opt_files@
|
||||
host_hook_obj=@out_host_hook_obj@
|
||||
|
||||
# Multiarch support
|
||||
enable_multiarch = @enable_multiarch@
|
||||
with_cpu = @with_cpu@
|
||||
with_float = @with_float@
|
||||
ifeq ($(enable_multiarch),yes)
|
||||
if_multiarch = $(1)
|
||||
else
|
||||
ifeq ($(enable_multiarch),auto)
|
||||
# SYSTEM_HEADER_DIR is makefile syntax, cannot be evaluated in configure.ac
|
||||
if_multiarch = $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib/*/crti.o),$(1))
|
||||
else
|
||||
if_multiarch =
|
||||
endif
|
||||
endif
|
||||
|
||||
# ------------------------
|
||||
# Installation directories
|
||||
# ------------------------
|
||||
|
@ -1833,10 +1848,11 @@ s-mlib: $(srcdir)/genmultilib Makefile
|
|||
"$(MULTILIB_EXTRA_OPTS)" \
|
||||
"$(MULTILIB_EXCLUSIONS)" \
|
||||
"$(MULTILIB_OSDIRNAMES)" \
|
||||
"$(MULTIARCH_DIRNAME)" \
|
||||
"@enable_multilib@" \
|
||||
> tmp-mlib.h; \
|
||||
else \
|
||||
$(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \
|
||||
$(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' "$(MULTIARCH_DIRNAME)" no \
|
||||
> tmp-mlib.h; \
|
||||
fi
|
||||
$(SHELL) $(srcdir)/../move-if-change tmp-mlib.h multilib.h
|
||||
|
|
|
@ -345,6 +345,9 @@ Driver Alias(print-multi-lib)
|
|||
-print-multi-os-directory
|
||||
Driver Alias(print-multi-os-directory)
|
||||
|
||||
-print-multiarch
|
||||
Driver Alias(print-multiarch)
|
||||
|
||||
-print-prog-name
|
||||
Driver Separate Alias(print-prog-name=)
|
||||
|
||||
|
@ -2260,6 +2263,10 @@ iplugindir=
|
|||
Common Joined Var(plugindir_string) Init(0)
|
||||
-iplugindir=<dir> Set <dir> to be the default plugin directory
|
||||
|
||||
imultiarch
|
||||
Common Joined Separate RejectDriver Var(imultiarch) Init(0)
|
||||
-imultiarch <dir> Set <dir> to be the multiarch include subdirectory
|
||||
|
||||
l
|
||||
Driver Joined Separate
|
||||
|
||||
|
@ -2317,6 +2324,9 @@ Driver Var(print_multi_lib)
|
|||
|
||||
print-multi-os-directory
|
||||
Driver Var(print_multi_os_directory)
|
||||
|
||||
print-multiarch
|
||||
Driver Var(print_multiarch)
|
||||
|
||||
print-prog-name=
|
||||
Driver JoinedOrMissing Var(print_prog_name)
|
||||
|
|
|
@ -777,6 +777,7 @@ esac
|
|||
case ${target} in
|
||||
alpha*-*-linux*)
|
||||
tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
|
||||
tmake_file="${tmake_file} alpha/t-linux"
|
||||
extra_options="${extra_options} alpha/elf.opt"
|
||||
target_cpu_default="MASK_GAS"
|
||||
;;
|
||||
|
@ -1063,6 +1064,7 @@ hppa*64*-*-linux*)
|
|||
tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \
|
||||
glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
|
||||
pa/pa64-linux.h"
|
||||
tmake_file="${tmake_file} pa/t-linux"
|
||||
gas=yes gnu_ld=yes
|
||||
need_64bit_hwint=yes
|
||||
;;
|
||||
|
@ -1070,6 +1072,7 @@ hppa*-*-linux*)
|
|||
target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
|
||||
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
|
||||
pa/pa32-regs.h pa/pa32-linux.h"
|
||||
tmake_file="${tmake_file} pa/t-linux"
|
||||
;;
|
||||
# port not yet contributed.
|
||||
#hppa*-*-openbsd*)
|
||||
|
@ -1548,7 +1551,7 @@ ia64*-*-freebsd*)
|
|||
;;
|
||||
ia64*-*-linux*)
|
||||
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
|
||||
tmake_file="${tmake_file} ia64/t-ia64 t-libunwind"
|
||||
tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
|
||||
target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
|
||||
;;
|
||||
ia64*-*-hpux*)
|
||||
|
@ -2075,6 +2078,7 @@ powerpc-*-linux* | powerpc64-*-linux*)
|
|||
;;
|
||||
*)
|
||||
tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
|
||||
tmake_file="$tmake_file rs6000/t-linux"
|
||||
;;
|
||||
esac
|
||||
case ${target} in
|
||||
|
@ -2438,6 +2442,7 @@ sparc-*-linux*)
|
|||
tmake_file="${tmake_file} sparc/t-linux64"
|
||||
else
|
||||
tm_file="${tm_file} sparc/linux.h"
|
||||
tmake_file="${tmake_file} sparc/t-linux"
|
||||
fi
|
||||
;;
|
||||
sparc-*-netbsdelf*)
|
||||
|
@ -3559,9 +3564,14 @@ case ${target} in
|
|||
|
||||
i[34567]86-*-darwin* | x86_64-*-darwin*)
|
||||
;;
|
||||
i[34567]86-*-linux* | x86_64-*-linux* | \
|
||||
i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
|
||||
i[34567]86-*-gnu*)
|
||||
i[34567]86-*-linux* | x86_64-*-linux*)
|
||||
tmake_file="$tmake_file i386/t-linux"
|
||||
;;
|
||||
i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
|
||||
tmake_file="$tmake_file i386/t-kfreebsd"
|
||||
;;
|
||||
i[34567]86-*-gnu*)
|
||||
tmake_file="$tmake_file i386/t-gnu"
|
||||
;;
|
||||
i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
|
||||
;;
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
MULTIARCH_DIRNAME = $(call if_multiarch,alpha-linux-gnu)
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2005, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2005-2012 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
|
@ -24,3 +24,8 @@ MULTILIB_DIRNAMES =
|
|||
#MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
|
||||
#MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te
|
||||
#MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
|
||||
|
||||
ifneq (,$(findstring gnueabi,$(target)))
|
||||
ARM_EB = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),eb)
|
||||
MULTIARCH_DIRNAME = $(call if_multiarch,arm$(ARM_EB)-linux-gnueabi$(if $(filter hard,$(with_float)),hf))
|
||||
endif
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
MULTIARCH_DIRNAME = $(call if_multiarch,i386-gnu)
|
|
@ -0,0 +1,5 @@
|
|||
MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu)
|
||||
|
||||
# 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)))
|
|
@ -0,0 +1 @@
|
|||
MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu)
|
|
@ -34,6 +34,6 @@
|
|||
comma=,
|
||||
MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
|
||||
MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
|
||||
MULTILIB_OSDIRNAMES = m64=../lib64
|
||||
MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
|
||||
MULTILIB_OSDIRNAMES+= mx32=../libx32
|
||||
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)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
MULTIARCH_DIRNAME = $(call if_multiarch,ia64-linux-gnu)
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2008, 2010, 2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2008, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
|
@ -19,6 +19,10 @@
|
|||
# Only include multilibs for 680x0 and ColdFire CPUs with an MMU.
|
||||
M68K_MLIB_CPU += && ((CPU ~ "^m680") || (CPU ~ "^mcf")) && (FLAGS ~ "FL_MMU")
|
||||
|
||||
ifeq ($(M68K_ARCH),m68k)
|
||||
MULTIARCH_DIRNAME = $(call if_multiarch,m68k-linux-gnu)
|
||||
endif
|
||||
|
||||
# This rule uses MULTILIB_MATCHES to generate a definition of
|
||||
# SYSROOT_SUFFIX_SPEC.
|
||||
sysroot-suffix.h: $(srcdir)/config/m68k/print-sysroot-suffix.sh
|
||||
|
|
|
@ -18,4 +18,9 @@
|
|||
|
||||
MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
|
||||
MULTILIB_DIRNAMES = n32 32 64
|
||||
MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64
|
||||
MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el)
|
||||
MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
|
||||
MULTILIB_OSDIRNAMES = \
|
||||
../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))
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
MULTIARCH_DIRNAME = $(call if_multiarch,hppa-linux-gnu)
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2002, 2005, 2006, 2008, 2011 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002, 2005, 2006, 2008, 2011, 2012 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
|
@ -16,17 +16,8 @@
|
|||
# along with GCC; see the file COPYING3. If not see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
MULTILIB_MATCHES_FLOAT = msoft-float=mcpu?401 \
|
||||
msoft-float=mcpu?403 \
|
||||
msoft-float=mcpu?405 \
|
||||
msoft-float=mcpu?440 \
|
||||
msoft-float=mcpu?464 \
|
||||
msoft-float=mcpu?476 \
|
||||
msoft-float=mcpu?ec603e \
|
||||
msoft-float=mcpu?801 \
|
||||
msoft-float=mcpu?821 \
|
||||
msoft-float=mcpu?823 \
|
||||
msoft-float=mcpu?860
|
||||
SOFT_FLOAT_CPUS = e300c2 401 403 405 440 464 476 ec603e 801 821 823 860
|
||||
MULTILIB_MATCHES_FLOAT = $(foreach cpu, $(SOFT_FLOAT_CPUS), msoft-float=mcpu?$(cpu))
|
||||
|
||||
# Build the libraries for both hard and soft floating point by default
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
# do not define the multiarch name if configured for a soft-float cpu
|
||||
# or soft-float.
|
||||
ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float)))
|
||||
ifneq (,$(findstring spe,$(target)))
|
||||
MULTIARCH_DIRNAME = powerpc-linux-gnuspe$(if $(findstring rs6000/e500-double.h, $(tm_file_list)),,v1)
|
||||
else
|
||||
MULTIARCH_DIRNAME = powerpc-linux-gnu
|
||||
endif
|
||||
endif
|
|
@ -31,5 +31,7 @@ MULTILIB_DIRNAMES = 64 32 nof
|
|||
MULTILIB_EXTRA_OPTS = fPIC mstrict-align
|
||||
MULTILIB_EXCEPTIONS = m64/msoft-float
|
||||
MULTILIB_EXCLUSIONS = m64/!m32/msoft-float
|
||||
MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof
|
||||
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)
|
||||
MULTILIB_OSDIRNAMES += nof
|
||||
MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT)
|
||||
|
|
|
@ -7,4 +7,5 @@
|
|||
|
||||
MULTILIB_OPTIONS = m64/m31
|
||||
MULTILIB_DIRNAMES = 64 32
|
||||
MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
|
||||
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)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
MULTIARCH_DIRNAME = $(call if_multiarch,sparc-linux-gnu)
|
|
@ -1,5 +1,5 @@
|
|||
# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004,
|
||||
# 2006, 2010, 2011 Free Software Foundation, Inc.
|
||||
# 2006, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
|
@ -26,4 +26,5 @@
|
|||
|
||||
MULTILIB_OPTIONS = m64/m32
|
||||
MULTILIB_DIRNAMES = 64 32
|
||||
MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
|
||||
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)
|
||||
|
|
|
@ -764,6 +764,9 @@ SYSROOT_CFLAGS_FOR_TARGET
|
|||
enable_shared
|
||||
enable_fixed_point
|
||||
enable_decimal_float
|
||||
with_float
|
||||
with_cpu
|
||||
enable_multiarch
|
||||
enable_multilib
|
||||
ENABLE_BUILD_WITH_CXX
|
||||
coverage_flags
|
||||
|
@ -875,6 +878,7 @@ enable_gather_detailed_mem_stats
|
|||
enable_build_with_cxx
|
||||
with_stabs
|
||||
enable_multilib
|
||||
enable_multiarch
|
||||
enable___cxa_atexit
|
||||
enable_decimal_float
|
||||
enable_fixed_point
|
||||
|
@ -1576,6 +1580,7 @@ Optional Features:
|
|||
enable detailed memory allocation stats gathering
|
||||
--enable-build-with-cxx build with C++ compiler instead of C compiler
|
||||
--enable-multilib enable library support for multiple ABIs
|
||||
--enable-multiarch enable support for multiarch paths
|
||||
--enable-__cxa_atexit enable __cxa_atexit for C++
|
||||
--enable-decimal-float={no,yes,bid,dpd}
|
||||
enable decimal float extension to C. Selecting 'bid'
|
||||
|
@ -7030,6 +7035,37 @@ fi
|
|||
|
||||
|
||||
|
||||
# Determine whether or not multiarch is enabled.
|
||||
# Check whether --enable-multiarch was given.
|
||||
if test "${enable_multiarch+set}" = set; then :
|
||||
enableval=$enable_multiarch; case "${enableval}" in
|
||||
yes|no|auto) enable_multiarch=$enableval;;
|
||||
*) as_fn_error "bad value ${enableval} given for --enable-multiarch option" "$LINENO" 5 ;;
|
||||
esac
|
||||
else
|
||||
enable_multiarch=auto
|
||||
fi
|
||||
|
||||
if test x${enable_multiarch} = xauto; then
|
||||
if test x${with_native_system_header_dir} != x; then
|
||||
ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
|
||||
enable_multiarch=no
|
||||
fi
|
||||
if test x$host != x$target && test "x$with_sysroot" = x; then
|
||||
ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
|
||||
enable_multiarch=no
|
||||
fi
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for multiarch configuration" >&5
|
||||
$as_echo_n "checking for multiarch configuration... " >&6; }
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_multiarch$ma_msg_suffix" >&5
|
||||
$as_echo "$enable_multiarch$ma_msg_suffix" >&6; }
|
||||
|
||||
# needed for setting the multiarch name for soft-float/hard-float ABIs
|
||||
|
||||
|
||||
|
||||
# Enable __cxa_atexit for C++.
|
||||
# Check whether --enable-__cxa_atexit was given.
|
||||
if test "${enable___cxa_atexit+set}" = set; then :
|
||||
|
@ -18010,7 +18046,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 18013 "configure"
|
||||
#line 18049 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
@ -18116,7 +18152,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 18119 "configure"
|
||||
#line 18155 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
|
|
@ -623,6 +623,32 @@ AC_ARG_ENABLE(multilib,
|
|||
[], [enable_multilib=yes])
|
||||
AC_SUBST(enable_multilib)
|
||||
|
||||
# Determine whether or not multiarch is enabled.
|
||||
AC_ARG_ENABLE(multiarch,
|
||||
[AS_HELP_STRING([--enable-multiarch],
|
||||
[enable support for multiarch paths])],
|
||||
[case "${enableval}" in
|
||||
yes|no|auto) enable_multiarch=$enableval;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
|
||||
esac], [enable_multiarch=auto])
|
||||
if test x${enable_multiarch} = xauto; then
|
||||
if test x${with_native_system_header_dir} != x; then
|
||||
ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
|
||||
enable_multiarch=no
|
||||
fi
|
||||
if test x$host != x$target && test "x$with_sysroot" = x; then
|
||||
ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
|
||||
enable_multiarch=no
|
||||
fi
|
||||
fi
|
||||
AC_MSG_CHECKING(for multiarch configuration)
|
||||
AC_SUBST(enable_multiarch)
|
||||
AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
|
||||
|
||||
# needed for setting the multiarch name for soft-float/hard-float ABIs
|
||||
AC_SUBST(with_cpu)
|
||||
AC_SUBST(with_float)
|
||||
|
||||
# Enable __cxa_atexit for C++.
|
||||
AC_ARG_ENABLE(__cxa_atexit,
|
||||
[AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
|
||||
|
|
|
@ -63,6 +63,7 @@ const struct default_include cpp_include_defaults[]
|
|||
#endif
|
||||
#ifdef LOCAL_INCLUDE_DIR
|
||||
/* /usr/local/include comes before the fixincluded header files. */
|
||||
{ LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
|
||||
{ LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
|
||||
#endif
|
||||
#ifdef PREFIX_INCLUDE_DIR
|
||||
|
@ -90,6 +91,7 @@ const struct default_include cpp_include_defaults[]
|
|||
#endif
|
||||
#ifdef NATIVE_SYSTEM_HEADER_DIR
|
||||
/* /usr/include comes dead last. */
|
||||
{ NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
|
||||
{ NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
|
||||
#endif
|
||||
{ 0, 0, 0, 0, 0, 0 }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* CPP Library.
|
||||
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
1999, 2000, 2003, 2004, 2006, 2007, 2012 Free Software Foundation, Inc.
|
||||
Contributed by Per Bothner, 1994-95.
|
||||
Based on CCCP program by Paul Rubin, June 1986
|
||||
Adapted to ANSI C, Richard Stallman, Jan 1987
|
||||
|
@ -43,9 +43,11 @@ struct default_include
|
|||
C++. */
|
||||
const char add_sysroot; /* FNAME should be prefixed by
|
||||
cpp_SYSROOT. */
|
||||
const char multilib; /* FNAME should have the multilib path
|
||||
specified with -imultilib
|
||||
appended. */
|
||||
const char multilib; /* FNAME should have appended
|
||||
- the multilib path specified with -imultilib
|
||||
when set to 1,
|
||||
- the multiarch path specified with
|
||||
-imultiarch, when set to 2. */
|
||||
};
|
||||
|
||||
extern const struct default_include cpp_include_defaults[];
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
@c 1999, 2000, 2001, 2003, 2004, 2005, 2008, 2011
|
||||
@c 1999, 2000, 2001, 2003, 2004, 2005, 2008, 2011, 2012
|
||||
@c Free Software Foundation, Inc.
|
||||
@c This is part of the GCC manual.
|
||||
@c For copying conditions, see the file gcc.texi.
|
||||
|
@ -93,6 +93,12 @@ Write one element in @code{MULTILIB_DIRNAMES} for each element in
|
|||
default value will be @code{MULTILIB_OPTIONS}, with all slashes treated
|
||||
as spaces.
|
||||
|
||||
@code{MULTILIB_DIRNAMES} describes the multilib directories using GCC
|
||||
conventions and is applied to directories that are part of the GCC
|
||||
installation. When multilib-enabled, the compiler will add a
|
||||
subdirectory of the form @var{prefix}/@var{multilib} before each
|
||||
directory in the search path for libraries and crt files.
|
||||
|
||||
For example, if @code{MULTILIB_OPTIONS} is set to @samp{m68000/m68020
|
||||
msoft-float}, then the default value of @code{MULTILIB_DIRNAMES} is
|
||||
@samp{m68000 m68020 msoft-float}. You may specify a different value if
|
||||
|
@ -129,6 +135,60 @@ compiler. In that case, set @code{MULTILIB_EXTRA_OPTS} to be the list
|
|||
of options to be used for all builds. If you set this, you should
|
||||
probably set @code{CRTSTUFF_T_CFLAGS} to a dash followed by it.
|
||||
|
||||
@findex MULTILIB_OSDIRNAMES
|
||||
@item MULTILIB_OSDIRNAMES
|
||||
If @code{MULTILIB_OPTIONS} is used, this variable specifies
|
||||
a list of subdirectory names, that are used to modify the search
|
||||
path depending on the chosen multilib. Unlike @code{MULTILIB_DIRNAMES},
|
||||
@code{MULTILIB_OSDIRNAMES} describes the multilib directories using
|
||||
operating systems conventions, and is applied to the directories such as
|
||||
@code{lib} or those in the @env{LIBRARY_PATH} environment variable.
|
||||
The format is either the same as of
|
||||
@code{MULTILIB_DIRNAMES}, or a set of mappings. When it is the same
|
||||
as @code{MULTILIB_DIRNAMES}, it describes the multilib directories
|
||||
using operating system conventions, rather than GCC conventions. When it is a set
|
||||
of mappings of the form @var{gccdir}=@var{osdir}, the left side gives
|
||||
the GCC convention and the right gives the equivalent OS defined
|
||||
location. If the @var{osdir} part begins with a @samp{!},
|
||||
GCC will not search in the non-multilib directory and use
|
||||
exclusively the multilib directory. Otherwise, the compiler will
|
||||
examine the search path for libraries and crt files twice; the first
|
||||
time it will add @var{multilib} to each directory in the search path,
|
||||
the second it will not.
|
||||
|
||||
For configurations that support both multilib and multiarch,
|
||||
@code{MULTILIB_OSDIRNAMES} also encodes the multiarch name, thus
|
||||
subsuming @code{MULTIARCH_DIRNAME}. The multiarch name is appended to
|
||||
each directory name, separated by a colon (e.g.
|
||||
@samp{../lib32:i386-linux-gnu}).
|
||||
|
||||
Each multiarch subdirectory will be searched before the corresponding OS
|
||||
multilib directory, for example @samp{/lib/i386-linux-gnu} before
|
||||
@samp{/lib/../lib32}. The multiarch name will also be used to modify the
|
||||
system header search path, as explained for @code{MULTIARCH_DIRNAME}.
|
||||
|
||||
@findex MULTIARCH_DIRNAME
|
||||
@item MULTIARCH_DIRNAME
|
||||
This variable specifies the multiarch name for configurations that are
|
||||
multiarch-enabled but not multilibbed configurations.
|
||||
|
||||
The multiarch name is used to augment the search path for libraries, crt
|
||||
files and system header files with additional locations. The compiler
|
||||
will add a multiarch subdirectory of the form
|
||||
@var{prefix}/@var{multiarch} before each directory in the library and
|
||||
crt search path. It will also add two directories
|
||||
@code{LOCAL_INCLUDE_DIR}/@var{multiarch} and
|
||||
@code{NATIVE_SYSTEM_HEADER_DIR}/@var{multiarch}) to the system header
|
||||
search path, respectively before @code{LOCAL_INCLUDE_DIR} and
|
||||
@code{NATIVE_SYSTEM_HEADER_DIR}.
|
||||
|
||||
@code{MULTIARCH_DIRNAME} is not used for configurations that support
|
||||
both multilib and multiarch. In that case, multiarch names are encoded
|
||||
in @code{MULTILIB_OSDIRNAMES} instead.
|
||||
|
||||
More documentation about multiarch can be found at
|
||||
@uref{http://wiki.debian.org/Multiarch}.
|
||||
|
||||
@findex SPECS
|
||||
@item SPECS
|
||||
Unfortunately, setting @code{MULTILIB_EXTRA_OPTS} is not enough, since
|
||||
|
|
|
@ -1032,6 +1032,15 @@ For ARM targets, possible values for @var{dialect} are @code{gnu} or
|
|||
@code{gnu2}, which select between the original GNU dialect and the GNU TLS
|
||||
descriptor-based dialect.
|
||||
|
||||
@item --enable-multiarch
|
||||
Specify whether to enable or disable multiarch support. The default is
|
||||
to check for glibc start files in a multiarch location, and enable it
|
||||
if the files are found. The auto detection is enabled for native builds,
|
||||
and for cross builds configured with @option{--with-sysroot}, and without
|
||||
@option{--with-native-system-header-dir}.
|
||||
More documentation about multiarch can be found at
|
||||
@uref{http://wiki.debian.org/Multiarch}.
|
||||
|
||||
@item --disable-multilib
|
||||
Specify that multiple target
|
||||
libraries to support different target variants, calling
|
||||
|
|
|
@ -6035,6 +6035,11 @@ sibling directories this prints e.g.@: @file{../lib64}, @file{../lib} or
|
|||
@file{../lib32}, or if OS libraries are present in @file{lib/@var{subdir}}
|
||||
subdirectories it prints e.g.@: @file{amd64}, @file{sparcv9} or @file{ev6}.
|
||||
|
||||
@item -print-multiarch
|
||||
@opindex print-multiarch
|
||||
Print the path to OS libraries for the selected multiarch,
|
||||
relative to some @file{lib} subdirectory.
|
||||
|
||||
@item -print-prog-name=@var{program}
|
||||
@opindex print-prog-name
|
||||
Like @option{-print-file-name}, but searches for a program such as @samp{cpp}.
|
||||
|
|
82
gcc/gcc.c
82
gcc/gcc.c
|
@ -1153,6 +1153,11 @@ static const char *multilib_dir;
|
|||
set_multilib_dir based on the compilation options. */
|
||||
|
||||
static const char *multilib_os_dir;
|
||||
|
||||
/* Subdirectory to use for locating libraries in multiarch conventions. Set by
|
||||
set_multilib_dir based on the compilation options. */
|
||||
|
||||
static const char *multiarch_dir;
|
||||
|
||||
/* Structure to keep track of the specs that have been defined so far.
|
||||
These are accessed using %(specname) in a compiler or link
|
||||
|
@ -2078,6 +2083,7 @@ for_each_path (const struct path_prefix *paths,
|
|||
struct prefix_list *pl;
|
||||
const char *multi_dir = NULL;
|
||||
const char *multi_os_dir = NULL;
|
||||
const char *multiarch_suffix = NULL;
|
||||
const char *multi_suffix;
|
||||
const char *just_multi_suffix;
|
||||
char *path = NULL;
|
||||
|
@ -2095,11 +2101,14 @@ for_each_path (const struct path_prefix *paths,
|
|||
}
|
||||
if (do_multi && multilib_os_dir && strcmp (multilib_os_dir, ".") != 0)
|
||||
multi_os_dir = concat (multilib_os_dir, dir_separator_str, NULL);
|
||||
if (multiarch_dir)
|
||||
multiarch_suffix = concat (multiarch_dir, dir_separator_str, NULL);
|
||||
|
||||
while (1)
|
||||
{
|
||||
size_t multi_dir_len = 0;
|
||||
size_t multi_os_dir_len = 0;
|
||||
size_t multiarch_len = 0;
|
||||
size_t suffix_len;
|
||||
size_t just_suffix_len;
|
||||
size_t len;
|
||||
|
@ -2108,16 +2117,15 @@ for_each_path (const struct path_prefix *paths,
|
|||
multi_dir_len = strlen (multi_dir);
|
||||
if (multi_os_dir)
|
||||
multi_os_dir_len = strlen (multi_os_dir);
|
||||
if (multiarch_suffix)
|
||||
multiarch_len = strlen (multiarch_suffix);
|
||||
suffix_len = strlen (multi_suffix);
|
||||
just_suffix_len = strlen (just_multi_suffix);
|
||||
|
||||
if (path == NULL)
|
||||
{
|
||||
len = paths->max_len + extra_space + 1;
|
||||
if (suffix_len > multi_os_dir_len)
|
||||
len += suffix_len;
|
||||
else
|
||||
len += multi_os_dir_len;
|
||||
len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len);
|
||||
path = XNEWVEC (char, len);
|
||||
}
|
||||
|
||||
|
@ -2146,6 +2154,16 @@ for_each_path (const struct path_prefix *paths,
|
|||
break;
|
||||
}
|
||||
|
||||
/* Now try the multiarch path. */
|
||||
if (!skip_multi_dir
|
||||
&& !pl->require_machine_suffix && multiarch_dir)
|
||||
{
|
||||
memcpy (path + len, multiarch_suffix, multiarch_len + 1);
|
||||
ret = callback (path, callback_info);
|
||||
if (ret)
|
||||
break;
|
||||
}
|
||||
|
||||
/* Now try the base path. */
|
||||
if (!pl->require_machine_suffix
|
||||
&& !(pl->os_multilib ? skip_multi_os_dir : skip_multi_dir))
|
||||
|
@ -2970,6 +2988,9 @@ display_help (void)
|
|||
fputs (_(" -print-libgcc-file-name Display the name of the compiler's companion library\n"), stdout);
|
||||
fputs (_(" -print-file-name=<lib> Display the full path to library <lib>\n"), stdout);
|
||||
fputs (_(" -print-prog-name=<prog> Display the full path to compiler component <prog>\n"), stdout);
|
||||
fputs (_("\
|
||||
-print-multiarch Display the target's normalized GNU triplet, used as\n\
|
||||
a component in the library path\n"), stdout);
|
||||
fputs (_(" -print-multi-directory Display the root directory for versions of libgcc\n"), stdout);
|
||||
fputs (_("\
|
||||
-print-multi-lib Display the mapping between command line options and\n\
|
||||
|
@ -3244,6 +3265,7 @@ driver_handle_option (struct gcc_options *opts,
|
|||
case OPT_print_multi_directory:
|
||||
case OPT_print_sysroot:
|
||||
case OPT_print_multi_os_directory:
|
||||
case OPT_print_multiarch:
|
||||
case OPT_print_sysroot_headers_suffix:
|
||||
case OPT_time:
|
||||
case OPT_wrapper:
|
||||
|
@ -4896,6 +4918,15 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
|
|||
do_spec_1 (" ", 0, NULL);
|
||||
}
|
||||
|
||||
if (multiarch_dir)
|
||||
{
|
||||
do_spec_1 ("-imultiarch", 1, NULL);
|
||||
/* Make this a separate argument. */
|
||||
do_spec_1 (" ", 0, NULL);
|
||||
do_spec_1 (multiarch_dir, 1, NULL);
|
||||
do_spec_1 (" ", 0, NULL);
|
||||
}
|
||||
|
||||
if (gcc_exec_prefix)
|
||||
{
|
||||
do_spec_1 ("-iprefix", 1, NULL);
|
||||
|
@ -6532,6 +6563,15 @@ main (int argc, char **argv)
|
|||
return (0);
|
||||
}
|
||||
|
||||
if (print_multiarch)
|
||||
{
|
||||
if (multiarch_dir == NULL)
|
||||
printf ("\n");
|
||||
else
|
||||
printf ("%s\n", multiarch_dir);
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (print_sysroot)
|
||||
{
|
||||
if (target_system_root)
|
||||
|
@ -7302,7 +7342,9 @@ default_arg (const char *p, int len)
|
|||
options are present, then we will ignore this completely. Passing
|
||||
that, gcc will consider each multilib_select in turn using the same
|
||||
rules for matching the options. If a match is found, that subdirectory
|
||||
will be used. */
|
||||
will be used.
|
||||
A subdirectory name is optionally followed by a colon and the corresponding
|
||||
multiarch name. */
|
||||
|
||||
static void
|
||||
set_multilib_dir (void)
|
||||
|
@ -7514,10 +7556,25 @@ set_multilib_dir (void)
|
|||
q++;
|
||||
if (q < end)
|
||||
{
|
||||
char *new_multilib_os_dir = XNEWVEC (char, end - q);
|
||||
memcpy (new_multilib_os_dir, q + 1, end - q - 1);
|
||||
new_multilib_os_dir[end - q - 1] = '\0';
|
||||
multilib_os_dir = new_multilib_os_dir;
|
||||
const char *q2 = q + 1, *ml_end = end;
|
||||
char *new_multilib_os_dir;
|
||||
|
||||
while (q2 < end && *q2 != ':')
|
||||
q2++;
|
||||
if (*q2 == ':')
|
||||
ml_end = q2;
|
||||
new_multilib_os_dir = XNEWVEC (char, ml_end - q);
|
||||
memcpy (new_multilib_os_dir, q + 1, ml_end - q - 1);
|
||||
new_multilib_os_dir[ml_end - q - 1] = '\0';
|
||||
multilib_os_dir = *new_multilib_os_dir ? new_multilib_os_dir : ".";
|
||||
|
||||
if (q2 < end && *q2 == ':')
|
||||
{
|
||||
char *new_multiarch_dir = XNEWVEC (char, end - q2);
|
||||
memcpy (new_multiarch_dir, q2 + 1, end - q2 - 1);
|
||||
new_multiarch_dir[end - q2 - 1] = '\0';
|
||||
multiarch_dir = new_multiarch_dir;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -7577,9 +7634,10 @@ print_multilib_info (void)
|
|||
}
|
||||
|
||||
/* When --disable-multilib was used but target defines
|
||||
MULTILIB_OSDIRNAMES, entries starting with .: are there just
|
||||
to find multilib_os_dir, so skip them from output. */
|
||||
if (this_path[0] == '.' && this_path[1] == ':')
|
||||
MULTILIB_OSDIRNAMES, entries starting with .: (and not starting
|
||||
with .:: for multiarch configurations) are there just to find
|
||||
multilib_os_dir, so skip them from output. */
|
||||
if (this_path[0] == '.' && this_path[1] == ':' && this_path[2] != ':')
|
||||
skip = 1;
|
||||
|
||||
/* Check for matches with the multilib_exclusions. We don't bother
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
# Generates multilib.h.
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1999, 2002, 2007
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1999, 2002, 2007, 2012
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
#This file is part of GCC.
|
||||
|
@ -73,6 +73,8 @@
|
|||
# the os directory names are used exclusively. Use the mapping when
|
||||
# there is no one-to-one equivalence between GCC levels and the OS.
|
||||
|
||||
# The optional eighth argument is the multiarch name.
|
||||
|
||||
# The last option should be "yes" if multilibs are enabled. If it is not
|
||||
# "yes", all GCC multilib dir names will be ".".
|
||||
|
||||
|
@ -121,7 +123,8 @@ exceptions=$4
|
|||
extra=$5
|
||||
exclusions=$6
|
||||
osdirnames=$7
|
||||
enable_multilib=$8
|
||||
multiarch=$8
|
||||
enable_multilib=$9
|
||||
|
||||
echo "static const char *const multilib_raw[] = {"
|
||||
|
||||
|
@ -222,6 +225,9 @@ fi
|
|||
# names.
|
||||
toosdirnames=
|
||||
defaultosdirname=
|
||||
if [ -n "${multiarch}" ]; then
|
||||
defaultosdirname=::${multiarch}
|
||||
fi
|
||||
if [ -n "${osdirnames}" ]; then
|
||||
set x ${osdirnames}
|
||||
shift
|
||||
|
@ -229,6 +235,9 @@ if [ -n "${osdirnames}" ]; then
|
|||
case "$1" in
|
||||
.=*)
|
||||
defaultosdirname=`echo $1 | sed 's|^.=|:|'`
|
||||
if [ -n "${multiarch}" ]; then
|
||||
defaultosdirname=${defaultosdirname}:${multiarch}
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
*=*)
|
||||
|
@ -314,13 +323,13 @@ for combo in ${combinations}; do
|
|||
dirout=`echo ${combo} | sed -e 's/=/-/g'`
|
||||
fi
|
||||
# Remove the leading and trailing slashes.
|
||||
dirout=`echo ${dirout} | sed -e 's|^/||' -e 's|/$||g'`
|
||||
dirout=`echo ${dirout} | sed -e 's|^/||' -e 's|/*:/*|:|' -e 's|/$||g'`
|
||||
|
||||
# Use the OS directory names rather than the option names.
|
||||
if [ -n "${toosdirnames}" ]; then
|
||||
osdirout=`echo ${combo} | sed ${toosdirnames}`
|
||||
# Remove the leading and trailing slashes.
|
||||
osdirout=`echo ${osdirout} | sed -e 's|^/||' -e 's|/$||g'`
|
||||
osdirout=`echo ${osdirout} | sed -e 's|^/||' -e 's|/*:/*|:|' -e 's|/$||g'`
|
||||
if [ "x${enable_multilib}" != xyes ]; then
|
||||
dirout=".:${osdirout}"
|
||||
disable_multilib=yes
|
||||
|
|
|
@ -150,8 +150,14 @@ add_standard_paths (const char *sysroot, const char *iprefix,
|
|||
if (!filename_ncmp (p->fname, cpp_GCC_INCLUDE_DIR, len))
|
||||
{
|
||||
char *str = concat (iprefix, p->fname + len, NULL);
|
||||
if (p->multilib && imultilib)
|
||||
if (p->multilib == 1 && imultilib)
|
||||
str = concat (str, dir_separator_str, imultilib, NULL);
|
||||
else if (p->multilib == 2)
|
||||
{
|
||||
if (!imultiarch)
|
||||
continue;
|
||||
str = concat (str, dir_separator_str, imultiarch, NULL);
|
||||
}
|
||||
add_path (str, SYSTEM, p->cxx_aware, false);
|
||||
}
|
||||
}
|
||||
|
@ -203,8 +209,14 @@ add_standard_paths (const char *sysroot, const char *iprefix,
|
|||
else
|
||||
str = update_path (p->fname, p->component);
|
||||
|
||||
if (p->multilib && imultilib)
|
||||
if (p->multilib == 1 && imultilib)
|
||||
str = concat (str, dir_separator_str, imultilib, NULL);
|
||||
else if (p->multilib == 2)
|
||||
{
|
||||
if (!imultiarch)
|
||||
continue;
|
||||
str = concat (str, dir_separator_str, imultiarch, NULL);
|
||||
}
|
||||
|
||||
add_path (str, SYSTEM, p->cxx_aware, false);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue