COMPONENTS = kernel ARCH ?= x86_64 KERNEL_HDD = kornos.img .PHONY: clean all $(COMPONENTS) run bochs .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 \ $(QEMUFLAGS) bochs: $(KERNEL_HDD) ext/bochsrc rm -f $(KERNEL_HDD).lock bochs -qf ext/bochsrc rm bochsout.txt ext/limine/limine-install: $(MAKE) -C ext/limine/ limine-install ext/echfs/echfs-utils: $(MAKE) -C ext/echfs/ echfs-utils $(KERNEL_HDD): ext/limine/limine-install ext/echfs/echfs-utils $(COMPONENTS) @rm -f $(KERNEL_HDD) @echo Creating $(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% @ext/echfs/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))"; ext/echfs/echfs-utils -m -p0 $@ import $$f/bin/$$f-$(ARCH) $$f; done @echo Installing bootloader @ext/echfs/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