Merge changes from topic "hm/make-refactor" into integration

* changes:
  docs(prerequisites): use LLVM utilities to build with clang
  build(make): use clang binutils to compile
This commit is contained in:
Manish Pandey 2022-05-04 14:17:38 +02:00 committed by TrustedFirmware Code Review
commit b7bd9863dc
3 changed files with 33 additions and 33 deletions

View file

@ -263,24 +263,24 @@ ENABLE_FEAT_RNG = $(if $(findstring rng,${arch-features}),1,0)
# Determine if FEAT_SB is supported
ENABLE_FEAT_SB = $(if $(findstring sb,${arch-features}),1,0)
ifneq ($(findstring armclang,$(notdir $(CC))),)
TF_CFLAGS_aarch32 = -target arm-arm-none-eabi $(march32-directive)
TF_CFLAGS_aarch64 = -target aarch64-arm-none-eabi $(march64-directive)
LD = $(LINKER)
AS = $(CC) -c -x assembler-with-cpp $(TF_CFLAGS_$(ARCH))
CPP = $(CC) -E $(TF_CFLAGS_$(ARCH))
PP = $(CC) -E $(TF_CFLAGS_$(ARCH))
else ifneq ($(findstring clang,$(notdir $(CC))),)
CLANG_CCDIR = $(if $(filter-out ./,$(dir $(CC))),$(dir $(CC)),)
TF_CFLAGS_aarch32 = $(target32-directive) $(march32-directive)
TF_CFLAGS_aarch64 = -target aarch64-elf $(march64-directive)
LD = $(CLANG_CCDIR)ld.lld
ifeq (, $(shell which $(LD)))
$(error "No $(LD) in PATH, make sure it is installed or set LD to a different linker")
endif
AS = $(CC) -c -x assembler-with-cpp $(TF_CFLAGS_$(ARCH))
CPP = $(CC) -E
PP = $(CC) -E
ifneq ($(findstring clang,$(notdir $(CC))),)
ifneq ($(findstring armclang,$(notdir $(CC))),)
TF_CFLAGS_aarch32 := -target arm-arm-none-eabi $(march32-directive)
TF_CFLAGS_aarch64 := -target aarch64-arm-none-eabi $(march64-directive)
LD := $(LINKER)
else
TF_CFLAGS_aarch32 := $(target32-directive) $(march32-directive)
TF_CFLAGS_aarch64 := -target aarch64-elf $(march64-directive)
LD := $(shell $(CC) --print-prog-name ld.lld)
AR := $(shell $(CC) --print-prog-name llvm-ar)
OD := $(shell $(CC) --print-prog-name llvm-objdump)
OC := $(shell $(CC) --print-prog-name llvm-objcopy)
endif
CPP := $(CC) -E $(TF_CFLAGS_$(ARCH))
PP := $(CC) -E $(TF_CFLAGS_$(ARCH))
AS := $(CC) -c -x assembler-with-cpp $(TF_CFLAGS_$(ARCH))
else ifneq ($(findstring gcc,$(notdir $(CC))),)
TF_CFLAGS_aarch32 = $(march32-directive)
TF_CFLAGS_aarch64 = $(march64-directive)

View file

@ -18,16 +18,12 @@ Performing an Initial Build
It is possible to build TF-A using Clang or Arm Compiler 6. To do so
``CC`` needs to point to the clang or armclang binary, which will
also select the clang or armclang assembler. Be aware that for Arm Compiler,
the GNU linker is used by default. However for Clang LLVM linker (LLD)
is used by default. In case of being needed the linker can be overridden
using the ``LD`` variable. LLVM linker (LLD) version 9 is
known to work with TF-A.
In both cases ``CROSS_COMPILE`` should be set as described above.
Arm Compiler 6 will be selected when the base name of the path assigned
to ``CC`` matches the string 'armclang'.
also select the clang or armclang assembler. Arm Compiler 6 will be selected
when the base name of the path assigned to ``CC`` matches the string
'armclang'. GNU binutils are required since the TF-A build system doesn't
currently support Arm Scatter files. Meaning the GNU linker is used by
default for Arm Compiler 6. Because of this dependency, ``CROSS_COMPILE``
should be set as described above.
For AArch64 using Arm Compiler 6:
@ -36,6 +32,11 @@ Performing an Initial Build
export CROSS_COMPILE=<path-to-aarch64-gcc>/bin/aarch64-none-elf-
make CC=<path-to-armclang>/bin/armclang PLAT=<platform> all
On the other hand, Clang uses LLVM linker (LLD) and other LLVM binutils by
default instead of GNU utilities (LLVM linker (LLD) 14.0.0 is known to
work with TF-A). ``CROSS_COMPILE`` need not be set for Clang. Please note,
that the default linker may be manually overridden using the ``LD`` variable.
Clang will be selected when the base name of the path assigned to ``CC``
contains the string 'clang'. This is to allow both clang and clang-X.Y
to work.
@ -44,7 +45,6 @@ Performing an Initial Build
.. code:: shell
export CROSS_COMPILE=<path-to-aarch64-gcc>/bin/aarch64-none-elf-
make CC=<path-to-clang>/bin/clang PLAT=<platform> all
- Change to the root directory of the TF-A source tree and build.
@ -115,4 +115,4 @@ Performing an Initial Build
--------------
*Copyright (c) 2020, Arm Limited. All rights reserved.*
*Copyright (c) 2020-2022, Arm Limited. All rights reserved.*

View file

@ -27,8 +27,8 @@ Toolchain
target the Armv7-A or Armv8-A architectures:
- GCC >= 11.2-2022.02 (from the `Arm Developer website`_)
- Clang >= 4.0
- Arm Compiler >= 6.0
- Clang >= 14.0.0
- Arm Compiler >= 6.18
In addition, a native compiler is required to build the supporting tools.
@ -160,7 +160,7 @@ documentation, available `here <https://git-scm.com/docs/githooks>`_.
--------------
*Copyright (c) 2021, Arm Limited. All rights reserved.*
*Copyright (c) 2021-2022, Arm Limited. All rights reserved.*
.. _Arm Developer website: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads
.. _Gerrit Code Review: https://www.gerritcodereview.com/