aboutsummaryrefslogtreecommitdiff
path: root/gcc/config.gcc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2017-01-11 14:39:00 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2017-01-11 14:39:00 +0000
commita92ffb3e945608131f5edf3ec2d6d583e417083b (patch)
tree5bbd0872a85c391ee212c559fe8febfa9e2fbc81 /gcc/config.gcc
parentca280d38f95255a876fc56547d55ab3db50ea38f (diff)
downloadgcc-a92ffb3e945608131f5edf3ec2d6d583e417083b.zip
gcc-a92ffb3e945608131f5edf3ec2d6d583e417083b.tar.gz
gcc-a92ffb3e945608131f5edf3ec2d6d583e417083b.tar.bz2
[arm] Replace command-line option .def files with single definition file
The files arm-cores.def, arm-fpus.def and arm-arches.def are parsed and used in several places and the format is slightly awkward to maintain as they must be parsable in C and by certain scripts. Furthermore, changes to the content that affects every entry is particularly awkward for dealing with merges. This patch replaces all three files with a single file that specifies all the command-line related definitions in a new format that allows for better checking for consistency as well as (hopefully) easier to merge changes. The awk script used to parse it is relatively complicated, but should be pretty portable. It works by parsing in all the data and then operating one of a number of possible sub-commands to generate the desired output. The new method picked up one error. The CPU descriptions referred to an architecture ARMv5tej which was not supported by -march. This has been fixed by adding the relevant entry to the architecture list. gcc: * config.gcc: Use new awk script to check CPU, FPU and architecture parameters for --with-... options. * config/arm/parsecpu.awk: New file * config/arm/arm-cpus.in: New file. * config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def files. * config/arm/arm.c: Include arm-cpu-data.h instead of processing .def files. * config/arm/t-arm: Update dependency rules. * common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead of processing .def files. * config/arm/genopt.sh: Deleted. * config/arm/gentune.sh: Deleted. * config/arm/arm-cores.def: Deleted. * config/arm/arm-arches.def: Deleted. * config/arm/arm-fpus.def: Deleted. * config/arm/arm-tune.md: Regenerated. * config/arm/arm-tables.opt: Regenerated. * config/arm/arm-cpu.h: New generated file. * config/arm/arm-cpu-data.h: New generated file. * config/arm/arm-cpu-cdata.h: New generated file. Contrib: * gcc_update: Adjust touch list. From-SVN: r244316
Diffstat (limited to 'gcc/config.gcc')
-rw-r--r--gcc/config.gcc63
1 files changed, 23 insertions, 40 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 5413246..a826187 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -3675,41 +3675,24 @@ case "${target}" in
arm*-*-*)
supported_defaults="arch cpu float tune fpu abi mode tls"
- for which in cpu tune; do
- # See if it matches any of the entries in arm-cores.def
+ for which in cpu tune arch; do
+ # See if it matches a supported value
eval "val=\$with_$which"
- if [ x"$val" = x ] \
- || grep "^ARM_CORE(\"$val\"," \
- ${srcdir}/config/arm/arm-cores.def \
- > /dev/null; then
- # Ok
- new_val=`grep "^ARM_CORE(\"$val\"," \
- ${srcdir}/config/arm/arm-cores.def | \
- sed -e 's/^[^,]*,[ ]*//' | \
- sed -e 's/,.*$//'`
- if [ x"$val" != x ] ; then
- eval "target_${which}_cname=$new_val"
- echo "For $val real value is $new_val"
+ if [ x"$val" != x ]; then
+ cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
+ -v cmd="chk$which $val" \
+ ${srcdir}/config/arm/arm-cpus.in`
+ if [ "$cpu" = "error" ]; then
+ echo "Unknown target in --with-$which=$val" 1>&2
+ exit 1
+ else
+ new_val=$cpu
+ eval "target_${which}_cname=$new_val"
+ echo "For $val real value is $new_val"
fi
- true
- else
- echo "Unknown CPU used in --with-$which=$val" 1>&2
- exit 1
fi
done
- # See if it matches any of the entries in arm-arches.def
- if [ x"$with_arch" = x ] \
- || grep "^ARM_ARCH(\"$with_arch\"," \
- ${srcdir}/config/arm/arm-arches.def \
- > /dev/null; then
- # OK
- true
- else
- echo "Unknown arch used in --with-arch=$with_arch" 1>&2
- exit 1
- fi
-
case "$with_float" in
"" \
| soft | hard | softfp)
@@ -3721,16 +3704,16 @@ case "${target}" in
;;
esac
- # see if it matches any of the entries in arm-fpus.def
- if [ x"$with_fpu" = x ] \
- || grep "^ARM_FPU(\"$with_fpu\"," \
- ${srcdir}/config/arm/arm-fpus.def \
- > /dev/null; then
- # OK
- true
- else
- echo "Unknown fpu used in --with-fpu=$with_fpu" 1>&2
- exit 1
+ # see if --with-fpu matches any of the supported FPUs
+ if [ x"$with_fpu" != x ] ; then
+ fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
+ -v cmd="chkfpu $with_fpu" \
+ ${srcdir}/config/arm/arm-cpus.in`
+ if [ "$fpu" = "error"]
+ then
+ echo "Unknown target in --with-$which=$val" 1>&2
+ exit 1
+ fi
fi
case "$with_abi" in