.EXPORT_ALL_VARIABLES: TOPDIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) SYSROOTDIR := $(TOPDIR)/sysroot TOOLSDIR := $(TOPDIR)/tools BINDIR = /bin LIBDIR = /usr/lib INCDIR = /usr/include ASMDIR = /usr/asm AS = fasm RM = rm -f MK_BUGREPORT := \"https://git.cute.engineering/d0p1/StupidOS/issues\" MK_COMMIT := \"$(shell git rev-parse --short HEAD)\" SUBDIRS := external tools include boot kernel lib bin TARGET = stupid.tar.gz floppy1440.img floppy2880.img ifneq ($(OS),Windows_NT) EXEXT = TARGET += stupid.iso stupid.hdd else EXEXT = .exe endif .PHONY: all all: $(TARGET) GOAL:=install clean: GOAL:=clean .PHONY: $(SUBDIRS) $(SUBDIRS): @echo "📁 $@" @DESTDIR=$(SYSROOTDIR) $(MAKE) -C $@ $(GOAL) .PHONY: stupid.iso stupid.iso: $(SUBDIRS) $(TOPDIR)/tools/create-iso $@ sysroot .PHONY: stupid.hdd stupid.hdd: $(SUBDIRS) @echo "" .PHONY: stupid.tar.gz stupid.tar.gz: $(SUBDIRS) tar -czvf $@ sysroot .PHONY: floppy1440.img floppy1440.img: $(SUBDIRS) dd if=/dev/zero of=$@ bs=512 count=1440 mformat -C -f 1440 -i $@ dd if=boot/bootsect/boot_floppy1440.bin of=$@ conv=notrunc mcopy -i $@ boot/loader/stpdldr.sys ::/STPDLDR.SYS mcopy -i $@ kernel/vmstupid.sys ::/VMSTUPID.SYS .PHONY: floppy2880.img floppy2880.img: $(SUBDIRS) dd if=/dev/zero of=$@ bs=512 count=2880 mformat -C -f 2880 -i $@ dd if=boot/bootsect/boot_floppy2880.bin of=$@ conv=notrunc mcopy -i $@ boot/loader/stpdldr.sys ::/STPDLDR.SYS mcopy -i $@ kernel/vmstupid.sys ::/VMSTUPID.SYS OVMF32.fd: wget 'https://retrage.github.io/edk2-nightly/bin/DEBUGIa32_OVMF.fd' -O $@ .PHONY: run run: all qemu-system-i386 \ -rtc base=localtime \ -drive file=floppy1440.img,if=none,format=raw,id=boot \ -drive file=fat:rw:./sysroot,if=none,id=hdd \ -device floppy,drive=boot \ -device ide-hd,drive=hdd \ -global isa-fdc.bootindexA=0 \ -serial mon:stdio .PHONY: run-efi run-efi: all OVMF32.fd qemu-system-i386 \ -bios OVMF32.fd \ -rtc base=localtime \ -drive file=fat:rw:./sysroot,if=none,id=hdd \ -device ide-hd,drive=hdd \ -serial stdio .PHONY: docs docs: @mkdir -p docs/html naturaldocs -p docs/config -img docs/img -xi sysroot -i . -ro -o HTML docs/html cp docs/img/favicon.ico docs/html/ .PHONY: clean clean: $(SUBDIRS) $(RM) $(TARGET)