200x-xx-xx Nathan Sidwell <nathan@codesourcery.com> Richard Sandiford <richard@codesourcery.com>

gcc/
200x-xx-xx  Nathan Sidwell  <nathan@codesourcery.com>
	    Richard Sandiford  <richard@codesourcery.com>

	* config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
	(m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
	(m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
	m68k/t-mlib to tmake_file.
	(m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
	(m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
	(m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
	Allow it to be cf or m68k.  Set m68k_arch_family.  If that
	variable is not empty, add t-$m68k_arch_family to tmake_file.
	Add t-mlibs to tmake_file.
	* doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
	* config/m68k/t-cf: New file.
	* config/m68k/t-m68k: Likewise.
	* config/m68k/t-mlibs: Likewise.
	* config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
	(M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
	* config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
	Delete.
	* config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
	(INSTALL_LIBGCC): Delete.
	(M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
	* config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
	(M68K_MLIB_CPU): Define.
	* config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
	(M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.

Co-Authored-By: Richard Sandiford <richard@codesourcery.com>

From-SVN: r121743
This commit is contained in:
Nathan Sidwell 2007-02-09 13:47:25 +00:00 committed by Richard Sandiford
parent b44e7f07c5
commit 10e96df47c
11 changed files with 204 additions and 43 deletions

View File

@ -1,3 +1,36 @@
2007-02-09 Nathan Sidwell <nathan@codesourcery.com>
Richard Sandiford <richard@codesourcery.com>
* config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
(m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
(m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
m68k/t-mlib to tmake_file.
(m68020-*-elf*, m68k-*-elf*): Likewise. Add t-m68kbare as well.
(m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
(m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
Allow it to be cf or m68k. Set m68k_arch_family. If that
variable is not empty, add t-$m68k_arch_family to tmake_file.
Add t-mlibs to tmake_file.
* doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
* config/m68k/t-cf: New file.
* config/m68k/t-m68k: Likewise.
* config/m68k/t-mlibs: Likewise.
* config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
(M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
* config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
Delete.
* config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
(INSTALL_LIBGCC): Delete.
(M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
* config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
(M68K_MLIB_CPU): Define.
* config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
(M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
2007-02-09 Zdenek Dvorak <dvorakz@suse.cz>
Richard Guenther <rguenther@suse.de>

View File

@ -1479,30 +1479,35 @@ m68hc12-*-*|m6812-*-*)
;;
m68k-*-aout*)
default_m68k_cpu=68020
tmake_file="m68k/t-floatlib m68k/t-m68kbare"
default_cf_cpu=5206
tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-mlibs"
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kemb.h m68k/m68k-aout.h libgloss.h"
;;
m68k-*-coff*)
default_m68k_cpu=68020
tmake_file="m68k/t-floatlib m68k/t-m68kbare"
default_cf_cpu=5206
tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-mlibs"
tm_defines="${tm_defines} MOTOROLA=1 USE_GAS"
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kemb.h dbxcoff.h m68k/coff.h dbx.h"
use_fixproto=yes
;;
m68020-*-elf* | m68k-*-elf*)
default_m68k_cpu=68020
default_cf_cpu=5206
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h"
tm_defines="${tm_defines} MOTOROLA=1 USE_GAS"
tmake_file="m68k/t-floatlib m68k/t-m68kelf"
tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf m68k/t-mlibs"
extra_parts="crtbegin.o crtend.o"
;;
m68010-*-netbsdelf* | m68k*-*-netbsdelf*)
default_m68k_cpu=68020
default_cf_cpu=5475
tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h m68k/netbsd-elf.h"
tm_defines="${tm_defines} MOTOROLA=1 USE_GAS"
;;
m68k*-*-openbsd*)
default_m68k_cpu=68020
default_cf_cpu=5475
# needed to unconfuse gdb
tm_defines="${tm_defines} OBSD_OLD_GAS"
tm_file="${tm_file} openbsd.h m68k/openbsd.h"
@ -1514,6 +1519,7 @@ m68k-*-uclinuxoldabi*) # Motorola m68k/ColdFire running uClinux
# with uClibc, using the original
# m68k-elf-based ABI
default_m68k_cpu=68020
default_cf_cpu=5206
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/uclinux-oldabi.h"
tm_defines="${tm_defines} MOTOROLA=1 USE_GAS"
tmake_file="m68k/t-floatlib m68k/t-uclinux"
@ -1523,16 +1529,18 @@ m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
# with uClibc, using the new GNU/Linux-style
# ABI.
default_m68k_cpu=68020
default_cf_cpu=5206
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h flat.h m68k/linux.h m68k/uclinux.h"
tm_defines="${tm_defines} MOTOROLA=1 USE_GAS UCLIBC_DEFAULT=1"
extra_options="${extra_options} linux.opt"
tmake_file="m68k/t-floatlib m68k/t-uclinux"
tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
use_fixproto=no
;;
m68k-*-linux*) # Motorola m68k's running GNU/Linux
# with ELF format using glibc 2
# aka the GNU/Linux C library 6.
default_m68k_cpu=68020
default_cf_cpu=5475
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h m68k/linux.h"
extra_options="${extra_options} m68k/ieee.opt"
tm_defines="${tm_defines} MOTOROLA=1 USE_GAS"
@ -1544,7 +1552,8 @@ m68k-*-linux*) # Motorola m68k's running GNU/Linux
;;
m68k-*-rtems*)
default_m68k_cpu=68020
tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff t-rtems m68k/t-rtems"
default_cf_cpu=5206
tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff t-rtems m68k/t-rtems m68k/t-mlibs"
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h"
tm_defines="${tm_defines} MOTOROLA=1 USE_GAS"
extra_parts="crtbegin.o crtend.o"
@ -2656,7 +2665,14 @@ if test x$with_cpu = x ; then
with_cpu=`echo ${target} | sed 's/-.*$//'`
;;
m68k*-*-*)
with_cpu=m${default_m68k_cpu}
case "$with_arch" in
"cf")
with_cpu=${default_cf_cpu}
;;
"" | "m68k")
with_cpu=m${default_m68k_cpu}
;;
esac
;;
sparc*-*-*)
with_cpu="`echo ${target} | sed 's/-.*$//'`"
@ -2807,7 +2823,16 @@ case "${target}" in
;;
m680[012]0-*-* | m68k*-*-*)
supported_defaults="cpu"
supported_defaults="arch cpu"
case "$with_arch" in
"" | "m68k"| "cf")
m68k_arch_family="$with_arch"
;;
*)
echo "Invalid --with-arch=$with_arch" 1>&2
exit 1
;;
esac
# We always have a $with_cpu setting here.
case "$with_cpu" in
@ -3093,6 +3118,9 @@ case ${target} in
m680[012]0-*-* | m68k*-*-*)
target_cpu_default2=$m68k_cpu_ident
if [ x"$m68k_arch_family" != x ]; then
tmake_file="m68k/t-$m68k_arch_family $tmake_file"
fi
;;
mips*-*-*)

4
gcc/config/m68k/t-cf Normal file
View File

@ -0,0 +1,4 @@
# Select only ColdFire-specific CPUs.
M68K_MLIB_CPU += && (CPU ~ "^mcf")
M68K_ARCH := cf

4
gcc/config/m68k/t-m68k Normal file
View File

@ -0,0 +1,4 @@
# Select only 680x0-specific CPUs.
M68K_MLIB_CPU += && (CPU !~ "^mcf")
M68K_ARCH := m68k

View File

@ -1,7 +1,4 @@
MULTILIB_OPTIONS = m68000/m68020/m5200/mcpu32/m68040/m68060 m68881/msoft-float
MULTILIB_DIRNAMES =
MULTILIB_MATCHES = m68000=mc68000 m68000=m68302 mcpu32=m68332 m68020=mc68020
MULTILIB_EXCEPTIONS = m68000/msoft-float m5200/m68881 m5200/msoft-float mcpu32/m68881 mcpu32/msoft-float m68040/m68881 m68060/m68881
# Add soft-float multilibs.
M68K_MLIB_DIRNAMES += softfp
M68K_MLIB_OPTIONS += msoft-float
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib

View File

@ -1,15 +1,3 @@
MULTILIB_OPTIONS = m68000/m68020/m5200/m5206e/m528x/m5307/m5407/mcfv4e/mcpu32/m68040/m68060 m68881/msoft-float
MULTILIB_DIRNAMES =
MULTILIB_MATCHES = m68000=mc68000 m68000=m68302 mcpu32=m68332 m68020=mc68020 m5206e=m5272
MULTILIB_EXCEPTIONS = m68000/msoft-float m5200/m68881 m5200/msoft-float \
m5206e/m68881 m5206e/msoft-float m528x/m68881 m528x/msoft-float \
m5307/m68881 m5307/msoft-float m5407/m68881 m5407/msoft-float \
mcpu32/m68881 mcpu32/msoft-float m68040/m68881 m68040/msoft-float \
m68060/m68881 m68060/msoft-float \
mcfv4e/msoft-float mcfv4e/m68881
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# from ../t-svr4
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
# no pic for now

97
gcc/config/m68k/t-mlibs Normal file
View File

@ -0,0 +1,97 @@
# multilibs -*- mode:Makefile -*-
# An awk command to extract lines from the m68k-devices.def file that
# match $1 and then print the string defined by $2. Leading and
# trailing whitespace is removed. $1 & $2 can make use of
# CPU -- the cpu identifier (has leading 'm'/'mcf')
# FLAGS -- the cpu capability flags
# CPU_NAME -- the cpu name (has no leading m/mcf)
# MLIB -- the multilib cpu name (no leading m/mcf)
# This is intended to be used as $(call M68K_AWK,predicate,string)
M68K_AWK = $(strip $(shell $(AWK) 'BEGIN { FS="[ \t]*[,()][ \t]*"; ORS=" " }; \
/^M68K_DEVICE/ { CPU=$$3; FLAGS=$$8; \
CPU_NAME=substr($$2,2,length($$2)-2); \
MLIB=substr($$5,2,length($$5)-2); \
if ($1) print $2 }' $(srcdir)/config/m68k/m68k-devices.def))
# Add a multilib for each distinct architecture. M68K_MLIB_CPU, if defined,
# adds additional restrictions.
M68K_MLIB_CPUS := $(call M68K_AWK,\
(CPU_NAME == MLIB) $(M68K_MLIB_CPU), \
"m"MLIB)
# Make the default cpu the default multilib.
M68K_MLIB_DEFAULT := $(call M68K_AWK, CPU == "$(target_cpu_default)", MLIB)
ifeq ($(filter m$(M68K_MLIB_DEFAULT),$(M68K_MLIB_CPUS)),)
$(error Error default cpu '$(target_cpu_default)' is not in multilib set '$(M68K_MLIB_CPUS)')
endif
# Sed arguments that convert mcpu=* arguments into canonical forms.
# We want to use the legacy m68* options instead of the new -mcpu=68*
# options when compiling multilibs because the former are recognised
# by older binutils.
CANONICALIZE_OPTIONS = -e 's|mcpu=68|m68|g' -e 's|mcpu=cpu32|mcpu32|g'
MULTILIB_DIRNAMES := $(filter-out m$(M68K_MLIB_DEFAULT),$(M68K_MLIB_CPUS))
MULTILIB_OPTIONS := $(shell echo $(MULTILIB_DIRNAMES:m%=mcpu=%) \
| sed -e 's| |/|g' $(CANONICALIZE_OPTIONS))
# Add subtarget specific options & dirs.
MULTILIB_DIRNAMES += $(M68K_MLIB_DIRNAMES)
MULTILIB_OPTIONS += $(M68K_MLIB_OPTIONS)
MULTILIB_MATCHES :=
ifneq ($(M68K_ARCH),cf)
# Map the new-style options to the legacy m68k ones.
MULTILIB_MATCHES += m68000=mcpu?68000 m68000=march?68000 m68000=mc68000 \
m68000=m68302 \
m68020=mcpu?68020 m68020=march?68020 m68020=mc68020 \
m68030=mcpu?68030 m68030=march?68030 \
m68040=mcpu?68040 m68040=march?68040 \
m68060=mcpu?68060 m68060=march?68060 \
mcpu32=mcpu?cpu32 mcpu32=march?cpu32 mcpu32=m68332
endif
ifneq ($(M68K_ARCH),m68k)
# Map the legacy ColdFire options to the new ones.
MULTILIB_MATCHES += mcpu?5206=m5200 mcpu?5206e=m5206e mcpu?5208=m528x \
mcpu?5307=m5300 mcpu?5307=m5307 \
mcpu?5407=m5400 mcpu?5407=m5407 \
mcpu?5475=mcfv4e
# Map -march=* options to the representative -mcpu=* option.
MULTILIB_MATCHES += mcpu?5206e=march?isaa mcpu?5208=march?isaaplus \
mcpu?5407=march?isab
endif
# Match non-representative -mcpu options to their representative option.
MULTILIB_MATCHES += \
$(call M68K_AWK, \
(CPU_NAME != MLIB) $(M68K_MLIB_CPU), \
(match(MLIB, "^68") || MLIB == "cpu32" \
? "m"MLIB"=mcpu?"CPU_NAME \
: "mcpu?"MLIB"=mcpu?"CPU_NAME))
MULTILIB_EXCEPTIONS :=
ifeq ($(firstword $(M68K_MLIB_OPTIONS)),msoft-float)
# Exclude soft-float multilibs for targets that default to soft-float anyway.
MULTILIB_EXCEPTIONS += $(call M68K_AWK,\
(CPU_NAME == MLIB) $(M68K_MLIB_CPU) \
&& (((CPU ~ "^mcf") && !match(FLAGS, "FL_CF_FPU")) \
|| CPU == "cpu32" \
|| CPU == "m68000"), \
"mcpu="MLIB"/msoft-float*")
endif
# Remove the default CPU from the explicit exceptions.
MULTILIB_EXCEPTIONS := \
$(patsubst mcpu=$(M68K_MLIB_DEFAULT)/%,%,$(MULTILIB_EXCEPTIONS))
# Convert all options to canonical form.
MULTILIB_EXCEPTIONS := $(shell echo $(MULTILIB_EXCEPTIONS) | \
sed $(CANONICALIZE_OPTIONS))
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib

View File

@ -1,5 +1,4 @@
# gdb gets confused if pic code is linked with non pic
# We cope by building all variants of libgcc.
MULTILIB_OPTIONS = fpic/fPIC
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
M68K_MLIB_OPTIONS += fpic/fPIC
M68K_MLIB_DIRNAMES += fpic fPIC

View File

@ -1,7 +1,4 @@
# Custom multilibs for RTEMS
MULTILIB_OPTIONS = m68000/m68020/m5200/mcpu32/m68030/m68040/m68060 m68881/msoft-float
MULTILIB_DIRNAMES =
MULTILIB_MATCHES = m68000=mc68000 m68000=m68302 mcpu32=m68332 m68020=mc68020 m68030=mc68030
MULTILIB_MATCHES += m5200=m528x
MULTILIB_EXCEPTIONS = m68000/msoft-float m5200/m68881 m5200/msoft-float mcpu32/m68881 mcpu32/msoft-float m68040/m68881 m68060/m68881
M68K_MLIB_CPU += && (match(MLIB, "^68") \
|| MLIB == "cpu32" \
|| MLIB == "5206")

View File

@ -1,10 +1,9 @@
# crti and crtn are provided by uClibc.
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
MULTILIB_OPTIONS = m68000/m5200/m5206e/m528x/m5307/m5407/mcpu32 msep-data/mid-shared-library
MULTILIB_DIRNAMES =
MULTILIB_MATCHES = m68000=mc68000 m68000=m68302 mcpu32=m68332 m5206e=m5272
MULTILIB_EXCEPTIONS = m68000/msep-data* m68000/mid-shared-library* msep-data* mid-shared-library*
# Only include multilibs for the 68020 and for CPUs without an MMU.
M68K_MLIB_CPU += && (MLIB == "68020" || !match(FLAGS, "FL_MMU"))
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# Add multilibs for execute-in-place and shared-library code.
M68K_MLIB_OPTIONS += msep-data/mid-shared-library
M68K_MLIB_DIRNAMES += msep-data mid-shared-library

View File

@ -3426,9 +3426,24 @@ applications. There are no standard Unix configurations.
<hr />
@end html
@heading @anchor{m68k-x-x}m68k-*-*
You can specify a default target using @option{--with-cpu=@var{target}}.
This @var{target} can either be a @option{-mcpu} argument or one of the
following values: @samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030},
By default, @samp{m68k-*-aout}, @samp{m68k-*-coff*},
@samp{m68k-*-elf*}, @samp{m68k-*-rtems} and @samp{m68k-*-uclinux}
build libraries for both M680x0 and ColdFire processors. If you only
need the M680x0 libraries, you can omit the ColdFire ones by passing
@option{--with-arch=m68k} to @command{configure}. Alternatively, you
can omit the M680x0 libraries by passing @option{--with-arch=cf} to
@command{configure}. These targets default to 5206 code when
configured with @option{--with-arch=cf} and 68020 code otherwise.
The @samp{m68k-*-linux-gnu}, @samp{m68k-*-netbsd} and
@samp{m68k-*-openbsd} targets also support the @option{--with-arch}
option. They will generate ColdFire CFV4e code when configured with
@option{--with-arch=cf} and 68020 code otherwise.
You can override the default processors listed above by configuring
with @option{--with-cpu=@var{target}}. This @var{target} can either
be a @option{-mcpu} argument or one of the following values:
@samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030},
@samp{m68040}, @samp{m68060}, @samp{m68020-40} and @samp{m68020-60}.
@html