kornos/Makefile

38 lines
1.0 KiB
Makefile

COMPONENTS = kernel
ARCH ?= x86_64
KERNEL_HDD = kornos.img
.PHONY: clean all $(COMPONENTS)
.DEFAULT_GOAL = $(KERNEL_HDD)
$(COMPONENTS):
$(MAKE) -C $@ bin/$@-$(ARCH)
disk: $(KERNEL_HDD)
run: $(KERNEL_HDD)
qemu-system-$(ARCH) \
-m 16M \
-drive file=$(KERNEL_HDD),format=raw \
-smp 2 \
-enable-kvm \
-debugcon stdio
ext/limine/limine-install:
$(MAKE) -C ext/limine/ limine-install
$(KERNEL_HDD): ext/limine/limine-install $(COMPONENTS)
rm -f $(KERNEL_HDD)
dd if=/dev/zero bs=1M count=0 seek=64 of=$(KERNEL_HDD) status=none
parted -s $(KERNEL_HDD) mklabel msdos
parted -s $(KERNEL_HDD) mkpart primary 1 100%
echfs-utils -m -p0 $(KERNEL_HDD) quick-format 32768 > /dev/null # silence UUID
@for f in $(COMPONENTS); do echo "Installing $$f ($$(du -h $$f/bin/$$f-$(ARCH) | cut -f1))"; echfs-utils -m -p0 $@ import $$f/bin/$$f-$(ARCH) $$f; done
echfs-utils -m -p0 $(KERNEL_HDD) import ext/limine.cfg limine.cfg
ext/limine/limine-install ext/limine/limine.bin $(KERNEL_HDD)
clean:
rm -f $(KERNEL_HDD)
for f in $(COMPONENTS); do $(MAKE) -C $$f clean; done