[PATCH] Makefile: Make $(LLVM) more flexible

Charlie Jenkins charlie at rivosinc.com
Wed Apr 30 16:38:31 PDT 2025


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>
---
 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




More information about the opensbi mailing list