[PATCH 9/9] doc: clang: Update and correct support notes

Tom Rini trini at konsulko.com
Tue Nov 21 14:40:17 CET 2023


On Tue, Nov 21, 2023 at 02:26:14PM +0100, Heinrich Schuchardt wrote:
> On 4/6/23 01:48, Tom Rini wrote:
> > At this point, clang can be used on both 32bit and 64bit targets without
> > issue.
> > 
> > Signed-off-by: Tom Rini <trini at konsulko.com>
> > Reviewed-by: Simon Glass <sjg at chromium.org>
> > ---
> >   doc/build/clang.rst | 16 ++++------------
> >   1 file changed, 4 insertions(+), 12 deletions(-)
> > 
> > diff --git a/doc/build/clang.rst b/doc/build/clang.rst
> > index 1d35616eb5ef..222487032ce0 100644
> > --- a/doc/build/clang.rst
> > +++ b/doc/build/clang.rst
> > @@ -11,14 +11,6 @@ The ARM backend can be instructed not to use the r9 and x18 registers using
> >   supported inline assembly is needed to get and set the r9 or x18 value. This
> >   leads to larger code then strictly necessary, but at least works.
> > 
> > -**NOTE:** target compilation only work for _some_ ARM boards at the moment.
> > -Also AArch64 is not supported currently due to a lack of private libgcc
> > -support. Boards which reassign gd in c will also fail to compile, but there is
> > -in no strict reason to do so in the ARM world, since crt0.S takes care of this.
> > -These assignments can be avoided by changing the init calls but this is not in
> > -mainline yet.
> > -
> > -
> >   Debian based
> >   ------------
> > 
> > @@ -28,14 +20,14 @@ Required packages can be installed via apt, e.g.
> > 
> >       sudo apt-get install clang
> > 
> > -Note that we still use binutils for some tools so we must continue to set
> > -CROSS_COMPILE. To compile U-Boot with Clang on Linux without IAS use e.g.
> > +Note that we make use of the CROSS_COMPILE variable to determine what to tell
> > +clang to use as the build target.
> > +To compile U-Boot with Clang on Linux without IAS use e.g.
> 
> I had a hard time understanding this text block.

Note that the logic in question (from the top-level Makefile) is:
ifeq ($(cc-name),clang)
ifneq ($(CROSS_COMPILE),)
CLANG_TARGET    := --target=$(notdir $(CROSS_COMPILE:%-=%))
...

So yes, "make CROSS_COMPILE=arm-linux-gnueabi- CC=clang" should in turn
invoke "clang --target=arm-linux-gnueabi".

> Do you mean:
> 
> "We use of the CROSS_COMPILE variable to derive the build target which
> is passed as -target parameter to clang.
> 
> The CROSS_COMPILE variable further determines the paths to other build
> tools. As assembler we use the binary pointed to by '$(CROSS_COMPILE)as'
> instead of the LLVM integrated assembler (IAS).
> 
> Here is an example demonstrating building U-Boot for the Raspberry Pi 2
> using clang:"

That is clearer, yes, thanks. And then I see my example needs fixing
again too. I'll v2 this patch at some point soon, thanks.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20231121/0d7508c3/attachment.sig>


More information about the U-Boot mailing list