76 lines
1.7 KiB
Makefile
76 lines
1.7 KiB
Makefile
TOOLPREFIX = riscv64-linux-gnu
|
|
# TOOLPREFIX = toolchain/xpack-riscv-none-elf-gcc-14.2.0-3/bin/riscv-none-elf
|
|
# TOOLPREFIX = toolchain/gcc/bin/riscv-none-elf
|
|
|
|
CC = $(TOOLPREFIX)-gcc
|
|
AS = $(TOOLPREFIX)-as
|
|
LD = $(TOOLPREFIX)-ld
|
|
OBJCOPY = $(TOOLPREFIX)-objcopy
|
|
OBJDUMP = $(TOOLPREFIX)-objdump
|
|
|
|
ASFLAGS = -march=rv64gc -mabi=lp64
|
|
|
|
LDFLAGS = -Tkern/kernel.ld
|
|
LDFLAGS += -m elf64lriscv
|
|
|
|
CFLAGS = -Wall -Werror -O
|
|
CFLAGS += -Wno-unused-result
|
|
CFLAGS += -mcmodel=medany
|
|
CFLAGS += -march=rv64gc -mabi=lp64
|
|
CFLAGS += -ffreestanding
|
|
CFLAGS += -fno-common
|
|
CFLAGS += -nostdlib
|
|
CFLAGS += -mno-relax
|
|
CFLAGS += -std=gnu99
|
|
|
|
CFLAGS += -fno-stack-protector # Prevents code that needs libc / runtime support
|
|
CFLAGS += -MD # Generate header dependency files (.d)
|
|
CFLAGS += -fno-pie -no-pie # Fixed address linking
|
|
CFLAGS += -ggdb -gdwarf-2 # GDB debug info
|
|
CFLAGS += -fno-omit-frame-pointer # More reliable backtraces in GDB
|
|
|
|
CFLAGS += -I.
|
|
CFLAGS += -I./kern
|
|
CFLAGS += -I./kern/libkern
|
|
|
|
all: kern/kernel.elf
|
|
|
|
KERNEL_OBJ := \
|
|
kern/entry.o \
|
|
kern/start.o \
|
|
kern/kalloc.o \
|
|
kern/libkern/string.o \
|
|
kern/libkern/proc.o \
|
|
kern/libkern/uart.o \
|
|
kern/libkern/panic.o \
|
|
kern/libkern/memory.o \
|
|
kern/libkern/spinlock.o \
|
|
kern/libkern/mini-printf.o \
|
|
kern/libkern/stdio.o
|
|
|
|
kern/kernel.elf: $(KERNEL_OBJ)
|
|
@echo LD $@
|
|
@$(LD) $(LDFLAGS) -o $@ $^
|
|
|
|
%.o: %.c
|
|
@echo CC $@
|
|
@$(CC) $(CFLAGS) -nostdinc -I. -c $< -o $@
|
|
|
|
%.o: %.S
|
|
@echo AS $@
|
|
@$(AS) $(ASFLAGS) -o $@ $<
|
|
|
|
qemu: kern/kernel.elf
|
|
@echo QEMU $<
|
|
@qemu-system-riscv64 -machine virt -bios none -nographic -m 128M -smp 4 -kernel $<
|
|
|
|
clean:
|
|
rm -f *.o *.elf *.d lib/*.o lib/*.d
|
|
find . -type f -name '*.[od]' -exec rm -f {} +
|
|
|
|
format:
|
|
find . -type f -name '*.[ch]' -exec clang-format -i {} +
|
|
|
|
-include *.d
|
|
|
|
.PHONY: all
|