summaryrefslogtreecommitdiff
path: root/Makefile
blob: f3f5b474e3564a92bcfcbdb3df0536b0690a6d99 (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
BUILD_DIR=build
ISO_DIR=isodir

.PHONY: all
all: $(BUILD_DIR)/myos.bin
	grub-file --is-x86-multiboot $(BUILD_DIR)/myos.bin
	mkdir -p $(ISO_DIR)/boot/grub
	cp $(BUILD_DIR)/myos.bin $(ISO_DIR)/boot/myos.bin
	cp grub.cfg $(ISO_DIR)/boot/grub/grub.cfg
	grub-mkrescue -o myos.iso $(ISO_DIR)

$(BUILD_DIR)/boot.o: boot.s
	mkdir -p $(BUILD_DIR)
	i686-elf-as boot.s -o $(BUILD_DIR)/boot.o

$(BUILD_DIR)/kernel.o: kernel.c
	mkdir -p $(BUILD_DIR)
	i686-elf-gcc -c kernel.c -o $(BUILD_DIR)/kernel.o -std=gnu99 -ffreestanding -O2 -Wall -Wextra

$(BUILD_DIR)/myos.bin: $(BUILD_DIR)/kernel.o $(BUILD_DIR)/boot.o
	mkdir -p $(BUILD_DIR)
	i686-elf-gcc -T linker.ld -o $(BUILD_DIR)/myos.bin -ffreestanding -O2 -nostdlib $(BUILD_DIR)/boot.o $(BUILD_DIR)/kernel.o -lgcc

.PHONY: clean
clean:
	rm -rf $(BUILD_DIR) $(ISO_DIR) myos.iso