diff --git a/Makefile b/Makefile index bbe690c..cadee98 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,28 @@ -CODE=src/ -CROSS_COMPILE=riscv64-unknown-elf- -CC=$(CROSS_COMPILE)gcc -GDB=$(CROSS_COMPILE)gdb -CFLAGS=-march=rv64gc -mabi=lp64d -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles -Tkernel.ld -g -Wall -Wextra -EMU=qemu-system-riscv64 -EFLAGS=-machine virt -cpu rv64 -bios opensbi-riscv64-generic-fw_dynamic.bin -m 256m -nographic -global virtio-mmio.force-legacy=false -s #-S +TARGET = riscv64-unknown-elf +CC = $(TARGET)-gcc +GDB = $(TARGET)-gdb +EMU = qemu-system-riscv64 -.PHONY: all clean run +CODE = src/ + +CFLAGS = -march=rv64gc -mabi=lp64d -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles -Tkernel.ld -g -Wall -Wextra +ifeq ($(CC),clang) + CFLAGS += -target $(TARGET) -mno-relax -Wno-unused-command-line-argument +endif + +EFLAGS = -machine virt -cpu rv64 -bios opensbi-riscv64-generic-fw_dynamic.bin -m 256m -nographic -global virtio-mmio.force-legacy=false -s +ifdef WAIT_GDB + EFLAGS += -S +endif + +.PHONY: all clean run gdb all: $(CODE)*.s $(CODE)*.c $(CC) $(CFLAGS) $? -o kernel - + +clean: + -rm kernel + run: $(EMU) $(EFLAGS) -kernel kernel