42 lines
943 B
Makefile
Executable File
42 lines
943 B
Makefile
Executable File
CFLAGS = -I../include -Wall -Wextra
|
|
LDFLAGS =
|
|
|
|
CURDIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
|
|
|
|
OUT := build
|
|
|
|
BIN = $(OUT)/
|
|
SHELL_HACK := $(shell mkdir -p $(OUT))
|
|
|
|
|
|
TEST_OBJ = $(OUT)/kernel.elf
|
|
TEST_DUMP = $(OUT)/kernel.dump
|
|
TEST_BIN = $(OUT)/kernel.bin
|
|
|
|
|
|
.PHONY: kernel clean
|
|
|
|
kernel: $(TEST_OBJ) $(TEST_BIN)
|
|
|
|
$(TEST_OBJ):
|
|
riscv64-unknown-elf-gcc -g -march=rv64gc -mabi=lp64d -nostdlib -T link.ld -o $@ kernel.c start.s
|
|
riscv64-unknown-elf-objdump -d -S $@ > $(TEST_DUMP)
|
|
|
|
$(TEST_BIN): $(TEST_OBJ)
|
|
riscv64-unknown-elf-objcopy -O binary $< $@
|
|
|
|
clean:
|
|
$(RM) -r $(BIN)
|
|
|
|
qemu: kernel
|
|
qemu-system-riscv64 -machine virt -smp 1 -bios none -kernel $(TEST_OBJ) -nographic -s -S
|
|
|
|
|
|
# gdb: kernel
|
|
# gdb-multiarch \
|
|
# -ex "file $(TEST_OBJ)" \
|
|
# -ex "set debug remote 1" \
|
|
# -ex "target remote localhost:1234" \
|
|
|
|
gdb: kernel
|
|
gdb-multiarch $(TEST_OBJ) -ex "target remote localhost:1234"
|