HhhOS/Makefile

46 lines
881 B
Makefile

PROJECT_ROOT = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
ifeq ($(BUILD_MODE),debug)
CFLAGS += -g
endif
TARGET = i686-elf
CC = $(TARGET)-gcc
STRIP = $(TARGET)-strip
NASM = nasm
QEMU = qemu-system-i386
CFLAGS += -std=gnu17 -ffreestanding -O2 -Wall -Wextra
LDFLAGS += -ffreestanding -O2 -nostdlib -lgcc
NASMFLAGS += -felf32
BIN = isodir/boot/hhhos.bin
ISO = HhhOS.iso
OBJS = boot.o kernel.o string.o terminal.o
.PHONY: all qemu clean
all: qemu
qemu: $(ISO)
$(QEMU) -cdrom $(ISO)
$(ISO): $(BIN)
mkdir -p isodir/boot/grub
cp $(PROJECT_ROOT)grub.cfg isodir/boot/grub/grub.cfg
grub-mkrescue -o $(ISO) isodir
$(BIN): $(OBJS)
mkdir -p isodir/boot
$(CC) -T $(PROJECT_ROOT)linker.ld $(LDFLAGS) -o $@ $^
%.o: $(PROJECT_ROOT)%.c
$(CC) -c $(CFLAGS) -I$(PROJECT_ROOT)include -o $@ $<
%.o: $(PROJECT_ROOT)%.asm
$(NASM) $(NASMFLAGS) -o $@ $<
clean:
rm -fr HhhOS $(OBJS)