@@ -17,6 +17,10 @@ DEFINES := -DF_CPU=$(F_CLK) \
17
17
-DF_TIMER=$(F_TICK ) \
18
18
-include config.h
19
19
20
+ # Toolchain override (default to GNU)
21
+ CROSS_COMPILE ?= riscv32-unknown-elf-
22
+ TOOLCHAIN_TYPE ?= gnu
23
+
20
24
# Architecture flags
21
25
ARCH_FLAGS = -march=rv32imzicsr -mabi=ilp32
22
26
@@ -28,26 +32,30 @@ CFLAGS += -mstrict-align -ffreestanding -nostdlib -fomit-frame-pointer
28
32
CFLAGS += $(INC_DIRS ) $(DEFINES ) -fdata-sections -ffunction-sections
29
33
30
34
ifeq ($(CC_IS_CLANG ) ,1)
35
+ ifeq ($(TOOLCHAIN_TYPE ) ,llvm)
31
36
CC = $(CROSS_COMPILE ) clang
32
37
AS = $(CROSS_COMPILE ) clang
33
38
LD = $(CROSS_COMPILE ) ld.lld
34
39
DUMP = $(CROSS_COMPILE ) llvm-objdump -M no-aliases
35
40
READ = $(CROSS_COMPILE ) llvm-readelf
36
41
OBJ = $(CROSS_COMPILE ) llvm-objcopy
37
42
SIZE = $(CROSS_COMPILE ) llvm-size
43
+ AR = $(CROSS_COMPILE ) llvm-ar
38
44
39
45
CFLAGS += --target=riscv32-unknown-elf
40
46
CFLAGS += -Wno-unused-command-line-argument
41
47
ASFLAGS = --target=riscv32-unknown-elf $(ARCH_FLAGS )
42
48
LDFLAGS = -m elf32lriscv --gc-sections
43
49
else
44
50
CC = $(CC_DEFAULT )
51
+ CC = $(CROSS_COMPILE ) gcc
45
52
AS = $(CROSS_COMPILE ) as
46
53
LD = $(CROSS_COMPILE ) ld
47
54
DUMP = $(CROSS_COMPILE ) objdump -Mno-aliases
48
55
READ = $(CROSS_COMPILE ) readelf
49
56
OBJ = $(CROSS_COMPILE ) objcopy
50
57
SIZE = $(CROSS_COMPILE ) size
58
+ AR = $(CROSS_COMPILE ) ar
51
59
52
60
ASFLAGS = $(ARCH_FLAGS )
53
61
LDFLAGS = -melf32lriscv --gc-sections
0 commit comments