[PATCH] Makefile: Make $(LLVM) more flexible
Anup Patel
anup at brainfault.org
Sat Jun 14 00:34:26 PDT 2025
On Thu, May 1, 2025 at 5:09 AM Charlie Jenkins <charlie at rivosinc.com> wrote:
>
> Introduce a way for developers to easily switch between LLVM versions
> with LLVM=/path/to/llvm/ and LLVM=-version. This is a useful
> addition to the existing LLVM=1 variable which will select the first
> clang and llvm binutils available on the path.
>
> Signed-off-by: Charlie Jenkins <charlie at rivosinc.com>
LGTM.
Reviewed-by: Anup Patel <anup at brainfault.org>
Tested-by: Anup Patel <anup at brainfault.org>
Applied this patch to the riscv/opensbi repo.
Thanks,
Anup
> ---
> Makefile | 14 ++++++++++----
> README.md | 12 ++++++++++++
> 2 files changed, 22 insertions(+), 4 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index e90836c7c4ad16c30d4d80649ff8b228413190ad..37d4cf41a2214e0a829f1d4a53f3f4f9ae09ee41 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -104,10 +104,16 @@ endif
>
> # Setup compilation commands
> ifneq ($(LLVM),)
> -CC = clang
> -AR = llvm-ar
> -LD = ld.lld
> -OBJCOPY = llvm-objcopy
> +ifneq ($(filter %/,$(LLVM)),)
> +LLVM_PREFIX := $(LLVM)
> +else ifneq ($(filter -%,$(LLVM)),)
> +LLVM_SUFFIX := $(LLVM)
> +endif
> +
> +CC = $(LLVM_PREFIX)clang$(LLVM_SUFFIX)
> +AR = $(LLVM_PREFIX)llvm-ar$(LLVM_SUFFIX)
> +LD = $(LLVM_PREFIX)ld.lld$(LLVM_SUFFIX)
> +OBJCOPY = $(LLVM_PREFIX)llvm-objcopy$(LLVM_SUFFIX)
> else
> ifdef CROSS_COMPILE
> CC = $(CROSS_COMPILE)gcc
> diff --git a/README.md b/README.md
> index 2795cc1a5ff0df62d83a4b5c3062ff2b682dbcab..fd40be0b4988815d8d02386271aeaeb787541215 100644
> --- a/README.md
> +++ b/README.md
> @@ -252,6 +252,18 @@ option with:
> make LLVM=1
> ```
>
> +To build with a specific version of LLVM, a path to a directory containing the
> +LLVM tools can be provided:
> +```
> +make LLVM=/path/to/llvm/
> +```
> +
> +If you have versioned llvm tools you would like to use, such as `clang-17`, the LLVM variable can
> +be set as:
> +```
> +make LLVM=-17
> +```
> +
> When using Clang, *CROSS_COMPILE* often does not need to be defined unless
> using GNU binutils with prefixed binary names. *PLATFORM_RISCV_XLEN* will be
> used to infer a default triple to pass to Clang, so if *PLATFORM_RISCV_XLEN*
>
> ---
> base-commit: 316daaf1c299c29ac46e52145f65521f48ec63b5
> change-id: 20250430-improve_llvm_building-cff31918e1a6
> --
> - Charlie
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
More information about the opensbi
mailing list