summaryrefslogtreecommitdiff
path: root/makefile
blob: acda2c3c6d5e9f175ec4b9934ea542666841e3fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# vim: noexpandtab tabstop=4 shiftwidth=4
CXX     = i386-elf-gcc
CFLAGS  = -std=gnu99 -ffreestanding -O2 -Wall -Wextra -nostdlib -Iinclude
ASM     = nasm

OBJECTS = gdt.o boot.o print.o kernel.o

%.o : src/%.c
	$(CXX) $(CFLAGS) -o $@ -c $<

%.o : src/%.s
	$(ASM) -felf32 $< -o $@

os.bin : $(OBJECTS)
	$(CXX) -T linker.ld -o os.bin $(CFLAGS) $(OBJECTS) -lgcc

os.iso : os.bin
	mkdir -p isodir/boot/grub
	mv os.bin isodir/boot/os.bin
	echo "menuentry 'os' {" >> grub.cfg
	echo "    multiboot /boot/os.bin" >> grub.cfg
	echo "}" >> grub.cfg
	mv grub.cfg isodir/boot/grub/grub.cfg
	grub-mkrescue -o os.iso isodir

clean :
	rm -rf *.o *.iso *.bin *.cfg isodir/