51 lines
1.4 KiB
Makefile
51 lines
1.4 KiB
Makefile
COMPONENTS = kernel
|
|
|
|
ARCH ?= x86_64
|
|
|
|
KERNEL_HDD = kornos.img
|
|
|
|
.PHONY: clean all $(COMPONENTS) run bochs gdb
|
|
.DEFAULT_GOAL = $(KERNEL_HDD)
|
|
|
|
$(COMPONENTS):
|
|
$(MAKE) -C $@ $(ARCH)
|
|
|
|
disk: $(KERNEL_HDD)
|
|
run: $(KERNEL_HDD)
|
|
qemu-system-$(ARCH) \
|
|
-m 16M \
|
|
-drive file=$(KERNEL_HDD),format=raw \
|
|
-smp 2 \
|
|
-enable-kvm \
|
|
-debugcon stdio \
|
|
$(QEMUFLAGS)
|
|
|
|
bochs: $(KERNEL_HDD) ext/bochsrc
|
|
rm -f $(KERNEL_HDD).lock
|
|
bochs -qf ext/bochsrc
|
|
rm bochsout.txt
|
|
|
|
gdb:
|
|
QEMUFLAGS="-s -S" $(MAKE) run & (sleep 1; gdb -x ext/gdbinit)
|
|
|
|
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
|