osdev5/Makefile

53 lines
928 B
Makefile
Raw Normal View History

2021-09-29 10:50:37 +03:00
ARCH?=aarch64
ifeq ($(ARCH),aarch64)
MACH?=qemu
endif
GDB?=gdb-multiarch
LLVM_BASE=$(shell llvm-config --bindir)
OBJCOPY=$(LLVM_BASE)/llvm-objcopy
PROFILE?=debug
O=target/$(ARCH)-$(MACH)/$(PROFILE)
CARGO_BUILD_OPTS=--target=../etc/$(ARCH)-$(MACH).json
ifneq ($(MACH),)
CARGO_BUILD_OPTS+=--features mach_$(MACH)
endif
ifeq ($(PROFILE),release)
CARGO_BUILD_OPTS+=--release
endif
QEMU_OPTS=-s \
-chardev stdio,id=serial0,mux=on
ifeq ($(ARCH),x86_64)
$(error TODO)
else
ifeq ($(MACH),qemu)
QEMU_OPTS+=-kernel $(O)/kernel.bin \
-M virt,virtualization=on \
-cpu cortex-a72 \
-m 512 \
-serial chardev:serial0
endif
endif
.PHONY: address error etc kernel src
all: kernel
kernel:
cd kernel && cargo build $(CARGO_BUILD_OPTS)
ifeq ($(ARCH),aarch64)
$(OBJCOPY) -O binary $(O)/kernel $(O)/kernel.bin
endif
clean:
cargo clean
qemu:
qemu-system-$(ARCH) $(QEMU_OPTS)
gdb:
$(GDB) -x etc/gdbrc $(O)/kernel