[arm] Rework multlib builds for symbianelf
authorRichard Earnshaw <rearnsha@arm.com>
Fri, 16 Jun 2017 21:06:07 +0000 (21:06 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 16 Jun 2017 21:06:07 +0000 (21:06 +0000)
Symbianelf used to build multilib for armv5t with softfp, but that
architecture doesn't really support floating point instructions.  This
patch reworks the multilib configuration to use armv5te as the base
when building for floating point.

I'm not sure just how useful the symbian port is these days, so this
has only been very lightly tested (checks that libgcc builds for all
multilib variants).  Perhaps we should consider deprecating this
config?

* config/arm/t-symbian: Rewrite for new option infrastructure.

From-SVN: r249304

gcc/ChangeLog
gcc/config/arm/t-symbian

index fce364221944bcd01d654edbc8ced12c0a0fa6a7..6f73286654a9aeb8cf0854cbc26c3d60d7f88ab4 100644 (file)
@@ -1,3 +1,7 @@
+2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/arm/t-symbian: Rewrite for new option infrastructure.
+
 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
 
        * config/arm/t-phoenix (MULTILIB_REUSE): Clear variable.
index bc10b5856d8d5bad7caad7f30134aae74be66d1c..003651ebfe142739624a7d84fc9bf05c27861ed3 100644 (file)
@@ -22,5 +22,35 @@ EXTRA_HEADERS += $(srcdir)/ginclude/unwind-arm-common.h
 # multilib for those without -- using the soft-float ABI in both
 # cases.  Symbian OS object should be compiled with interworking
 # enabled, so there are no separate thumb-mode libraries.
-MULTILIB_OPTIONS     = mfloat-abi=softfp
-MULTILIB_DIRNAMES    = softfp
+
+# Reset all the multilib variables.
+MULTILIB_OPTIONS       =
+MULTILIB_DIRNAMES      =
+MULTILIB_EXCEPTIONS    =
+MULTILIB_REUSE         =
+MULTILIB_MATCHES       =
+MULTILIB_REQUIRED      =
+
+MULTILIB_OPTIONS       += march=armv5te+fp
+MULTILIB_DIRNAMES      += v5te
+
+MULTILIB_OPTIONS       += mfloat-abi=softfp
+MULTILIB_DIRNAMES      += softfp
+
+MULTLILIB_REQUIRED     += march=armv5te+fp/mfloat-abi=softfp
+
+MULTILIB_MATCHES       += $(foreach ARCH, $(all_early_arch), \
+                            march?armv5te+fp=march?$(ARCH)+fp)
+
+MULTILIB_MATCHES       += $(foreach FPARCH, $(v7a_fps), \
+                            march?armv5te+fp=march?armv7-a+$(FPARCH))
+
+MULTILIB_MATCHES       += $(foreach FPARCH, $(v7ve_fps), \
+                            march?armv5te+fp=march?armv7ve+$(FPARCH))
+
+MULTILIB_MATCHES       += $(foreach ARCH, $(all_v7_a_r), \
+                            march?armv5te+fp=march?$(ARCH)+fp)
+
+MULTILIB_MATCHES       += $(foreach ARCH, $(all_v8_archs), \
+                            $(foreach FPARCH, $(v8_fps), \
+                              march?armv5te+fp=march?$(ARCH)+$(FPARCH)))