all: start32.bin
clean:
	-@rm *.bin 2> /dev/null || true

start32.bin: src/*
	fasm src/start32.asm start32.bin
image: start32.bin mount grub-cfg roska.img mnt/roska/
	cp start32.bin mnt/roska/
	sync

qemu-run: image roska.img
	qemu-system-i386 roska.img -serial stdio
bochs-run: image roska.img
	touch serial.out
	bochs -qf bochsrc.txt
mount: roska.img mnt/
	@if ! mountpoint -q "mnt/"; then \
		sudo mount -o loop,offset=1048576,umask=177,dmask=022,uid=$(shell id -u),gid=$(shell id -g) roska.img mnt/; \
	fi;
umount:
	@if mountpoint -q "mnt/"; then \
		sudo umount mnt/; \
	fi;
mnt/:
	@mkdir -p mnt
mnt/roska/: mount roska.img
	@mkdir -p mnt/roska
build/:
	@mkdir build

roska.img: mnt/
	dd if=/dev/zero of=roska.img bs=1k count=16128
	echo 'type=83' | sudo sfdisk roska.img
	sudo losetup /dev/loop0 roska.img
	sudo losetup /dev/loop1 roska.img -o1048576
	sudo mkdosfs -F32 -f 2 /dev/loop1
	sudo mount /dev/loop1 mnt/
	sudo grub-install --target=i386-pc --root-directory=mnt --boot-directory=mnt/boot --no-floppy --modules="normal part_msdos multiboot" /dev/loop0
	sudo umount mnt/
	sudo losetup -d /dev/loop1
	sudo losetup -d /dev/loop0
grub-cfg: grub.cfg mount
	cp grub.cfg mnt/boot/grub/grub.cfg
lo-unsetup: umount
	sudo losetup -d /dev/loop1
	sudo losetup -d /dev/loop0