forked from PoliEcho-holding-org/kern
* We did loose tasking and only have a paging skeleton, but hey it took like 4 months so i'm happy that there's something :p
56 lines
1.4 KiB
Makefile
56 lines
1.4 KiB
Makefile
include config.mk
|
|
|
|
TARGET = ./$(IMG_NAME)
|
|
OFFSET = 1048576
|
|
SYSROOT = ./sysroot
|
|
|
|
# Modules
|
|
KERNEL = ./kernel
|
|
MODULES = $(KERNEL)
|
|
|
|
# Treat these targets as names and not files
|
|
.PHONY: all clean $(MODULES) qemu
|
|
|
|
all: $(TARGET)
|
|
$(TARGET): $(SYSROOT) $(MODULES)
|
|
cp /usr/share/limine/limine-bios.sys $(SYSROOT)/boot
|
|
echo -e 'timeout: 0\n\n/kern.\n\tprotocol: limine\n\tpath: boot():/boot/kernel.elf\n' > $(SYSROOT)/boot/limine.conf
|
|
dd if=/dev/zero of=$(TARGET) bs=1M count=$(IMG_SIZE)
|
|
echo ',,c,*' | sfdisk $(TARGET) >/dev/null
|
|
mformat -F -i $(TARGET)@@$(OFFSET) ::
|
|
mcopy -i $(TARGET)@@$(OFFSET) $(SYSROOT)/* ::
|
|
limine bios-install $(TARGET)
|
|
|
|
# Build out base directory structure
|
|
$(SYSROOT):
|
|
@mkdir $(SYSROOT)
|
|
@mkdir $(SYSROOT)/boot
|
|
@mkdir $(SYSROOT)/dev
|
|
@mkdir $(SYSROOT)/etc
|
|
@mkdir $(SYSROOT)/usr
|
|
@mkdir $(SYSROOT)/usr/bin
|
|
@mkdir $(SYSROOT)/usr/include
|
|
@mkdir $(SYSROOT)/usr/lib
|
|
@mkdir $(SYSROOT)/usr/sbin
|
|
@mkdir $(SYSROOT)/usr/share
|
|
@ln -s usr/bin $(SYSROOT)/bin
|
|
@ln -s usr/lib $(SYSROOT)/lib
|
|
@ln -s usr/sbin $(SYSROOT)/sbin
|
|
@mkdir $(SYSROOT)/tmp
|
|
|
|
$(MODULES):
|
|
$(MAKE) -C $@ SYSROOT=$(abspath $(SYSROOT))
|
|
|
|
clean:
|
|
rm -f $(TARGET)
|
|
rm -fr $(SYSROOT)
|
|
for m in $(MODULES); do $(MAKE) -C $$m clean; done
|
|
|
|
qemu:
|
|
qemu-system-x86_64\
|
|
-drive format=raw,file=$(TARGET),index=0,media=disk\
|
|
-m $(Q_MEMORY) -accel tcg -monitor stdio -net none\
|
|
-rtc base=localtime,clock=host,driftfix=slew\
|
|
-audiodev $(Q_AUDIODEV),id=audio0 -machine pcspk-audiodev=audio0
|
|
|