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 -march=rv32i -mabi=ilp32 -Wl,-Ttext=0x0 -nostdlib -g -o $@ $< # riscv64-unknown-elf-gcc -march=rv64gc -mabi=lp64 -Wl,-Ttext=0x0 -nostdlib -g -o $@ $< 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"