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
|
2021-10-01 18:37:47 +03:00
|
|
|
MKIMAGE?=mkimage
|
2021-09-29 10:50:37 +03:00
|
|
|
|
|
|
|
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 \
|
2021-09-29 18:56:52 +03:00
|
|
|
-M virt,virtualization=off \
|
2021-09-29 10:50:37 +03:00
|
|
|
-cpu cortex-a72 \
|
|
|
|
-m 512 \
|
2021-10-08 12:24:31 +03:00
|
|
|
-serial chardev:serial0 \
|
|
|
|
-device virtio-serial-pci
|
2021-09-29 10:50:37 +03:00
|
|
|
endif
|
2021-10-01 18:37:47 +03:00
|
|
|
ifeq ($(MACH),rpi3b)
|
|
|
|
QEMU_OPTS+=-kernel $(O)/kernel.bin \
|
|
|
|
-M raspi3b \
|
|
|
|
-serial null \
|
|
|
|
-serial chardev:serial0
|
|
|
|
endif
|
2021-09-29 10:50:37 +03:00
|
|
|
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
|
2021-10-01 18:37:47 +03:00
|
|
|
ifeq ($(MACH),orangepi3)
|
|
|
|
$(LLVM_BASE)/llvm-strip $(O)/kernel
|
|
|
|
$(LLVM_BASE)/llvm-size $(O)/kernel
|
|
|
|
endif
|
2021-09-29 10:50:37 +03:00
|
|
|
|
|
|
|
clean:
|
|
|
|
cargo clean
|
|
|
|
|
2021-10-07 14:43:14 +03:00
|
|
|
clippy:
|
|
|
|
cd kernel && cargo clippy $(CARGO_BUILD_OPTS)
|
|
|
|
|
2021-09-29 18:56:52 +03:00
|
|
|
qemu: all
|
2021-10-07 13:56:17 +03:00
|
|
|
$(QEMU_PREFIX)qemu-system-$(ARCH) $(QEMU_OPTS)
|
2021-09-29 10:50:37 +03:00
|
|
|
|
2021-09-29 18:56:52 +03:00
|
|
|
gdb: all
|
2021-09-29 10:50:37 +03:00
|
|
|
$(GDB) -x etc/gdbrc $(O)/kernel
|