diff --git a/Makefile b/Makefile index 85748bc4..adb4862c 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 2795cc1a..fd40be0b 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*