On 11/11/2019 13:33, sayed israr wrote:
---------- Forwarded message ---------
From: Israr Sayed <sd.israr@xxxxxxxxx>
Date: Mon, Nov 11, 2019 at 5:38 PM
Subject: Re: Is it possible to build Single GCC Executable for armv5,
armv6, armv7-{cortex-xx-{A,R,M}},armv8 etc.?
To: Jonathan Wakely <jwakely.gcc@xxxxxxxxx>
I am building GCC from sources.Where i can configure it with 2 ways:
(1) --with-arch --with-cpu --with-fpu --with-float options .
(2) --with-multilib-list= .
In --with-multilib-list, we can configure for various combinations of
armv*-*-*.
For example, I want to build gcc for with arch = armv7, armv7-m, armv7e-m,
with float = hard, softfp, soft.
with fpu = fpv, fpv4, fpv4-d16 etc..
whereas if in configure i mention --with-arch --with-fpu --with-float.That
will build GCC for those options only.
I have a prebuilt arm GCC binary for STM32F controllers, which is built for
whole range of armv7-M, armv7e-m along with FPUs.
there configure options show --with-multilib-list=rmprofile.
rmprofile is the multilib option for configure.Which is exactly what
gcc/config/arm/t-rmprofile file is about.
I hope i can explain my question better.
You can configure the compiler with --with-multlib-list=xxx
where xxx is any of "aprofile", "rmprofile" and "aprofile,rmprofile"
If you do this, DO NOT specify any of --with-fpu, --with-cpu,
--with-tune or --with-arch.
Be warned, the full set of multilibs is LARGE. It requires a fast
machine and/or a lot of time to build them all.
You can, of course, edit any of the files - the GPL gives you that
right, but if you do so, you're most likely on your own. The multilib
configurations are complex and rely heavily on GNU Makefile trickery to
express all the required combinations.
R.
------------------------------------------------------
On Mon, Nov 11, 2019 at 11:40:39AM +0000, Jonathan Wakely wrote:
On Sun, 10 Nov 2019 at 11:36, Israr Sayed <sd.israr@xxxxxxxxx> wrote:
Digging into the sources of GCC I noticed in files gcc/config/arm/t-*,
There are multiple arm target options.
Reading [GCC internal Manual], These are called Target Makefile
Fragments, which will be included in main Makefile, like MULTILIB_OPTIONS,
MULTILIB_DIRNAMES, MULTILIB_MATCHES, MULTILIB_REQUIRED, MULTILIB_REUSE,
MULTILIB_EXTRA_OPTS, MULTILIB_OSDIRNAMES, MULTIARCH_DIRNAME.
What I am not able to understand that how to bring it in at the time of
configure.Which option to choose?
More over is it possible to edit those t-* files as per the requirement
and how?
Please Help.
I don't understand your question. Your email's subject talks about a
single GCC executable for multiple ARM variants, which is supported
automatically. When you configure GCC for an ARM target you can select
the specific processor type using the -march and/or -mcpu options. See
the documentation of command-line options in the GCC manual.
You don't need to do anything special to use the target makefile
fragments, they're used automatically, as needed.