[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