summaryrefslogtreecommitdiff
path: root/makefile
blob: b36e07044cf365ee799e408369d7d6721df1e732 (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 = boot.o gdt.o isr.o idt.o port.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/