osdev5/Makefile

87 lines
1.6 KiB
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
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 \
2021-10-14 19:20:51 +03:00
-chardev stdio,id=serial1,mux=on
2021-09-29 10:50:37 +03:00
ifeq ($(ARCH),x86_64)
$(error TODO)
else
ifeq ($(MACH),qemu)
2021-10-14 19:20:51 +03:00
QEMU_OPTS+=-kernel $(O)/kernel.bin \
2021-10-11 18:54:36 +03:00
-M virt,virtualization=on \
2021-09-29 10:50:37 +03:00
-cpu cortex-a72 \
-m 512 \
2021-10-14 19:20:51 +03:00
-serial chardev:serial1 \
-device qemu-xhci \
-net none
2021-09-29 10:50:37 +03:00
endif
2021-10-14 19:20:51 +03:00
ifeq ($(MACH),rpi3)
2021-10-01 18:37:47 +03:00
QEMU_OPTS+=-kernel $(O)/kernel.bin \
2021-10-14 19:20:51 +03:00
-dtb etc/bcm2837-rpi-3-b-plus.dtb \
2021-10-01 18:37:47 +03:00
-M raspi3b \
-serial null \
2021-10-14 19:20:51 +03:00
-serial chardev:serial1
2021-10-01 18:37:47 +03:00
endif
2021-09-29 10:50:37 +03:00
endif
2021-10-10 21:24:22 +03:00
ifeq ($(QEMU_DINT),1)
QEMU_OPTS+=-d int
endif
ifeq ($(QEMU_PAUSE),1)
QEMU_OPTS+=-S
endif
2021-09-29 10:50:37 +03:00
.PHONY: address error etc kernel src
all: kernel
kernel:
cd kernel && cargo build $(CARGO_BUILD_OPTS)
2021-10-14 19:20:51 +03:00
ifeq ($(ARCH),aarch64)
$(LLVM_BASE)/llvm-strip -o $(O)/kernel.strip $(O)/kernel
$(LLVM_BASE)/llvm-size $(O)/kernel.strip
$(OBJCOPY) -O binary $(O)/kernel.strip $(O)/kernel.bin
2021-10-14 19:20:51 +03:00
endif
ifeq ($(MACH),orangepi3)
$(MKIMAGE) \
-A arm64 \
-O linux \
-T kernel \
-C none \
-a 0x48000000 \
-e 0x48000000 \
-n kernel \
-d $(O)/kernel.bin \
$(O)/uImage
2021-10-01 18:37:47 +03:00
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