45 lines
1.1 KiB
Makefile
45 lines
1.1 KiB
Makefile
.DELETE_ON_ERROR:
|
|
|
|
CC = gcc
|
|
GCCPARAMS = -m32 -fno-pie -nostdlib -fstrength-reduce -fomit-frame-pointer -finline-functions -fno-builtin -nostdinc -fno-stack-protector -Wall -Wextra
|
|
ASPARAMS = -f elf32
|
|
LDPARAMS = -m elf_i386
|
|
|
|
SRC := kernel
|
|
OBJ := obj
|
|
|
|
SOURCES := $(wildcard $(SRC)/*.c)
|
|
ASMSOURCES := $(wildcard $(SRC)/*.s)
|
|
OBJECTS := $(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(SOURCES))
|
|
ASMOBJECTS := $(patsubst $(SRC)/%.s, $(OBJ)/%.o, $(ASMSOURCES))
|
|
|
|
run: kernel.iso
|
|
bochs -f support_files/boch.txt -q
|
|
|
|
$(OBJ)/%.o: $(SRC)/%.c
|
|
mkdir -p obj/bin
|
|
$(CC) $(GCCPARAMS) $(SRC) -c -o $@ $<
|
|
|
|
$(OBJ)/%.o: $(SRC)/%.s
|
|
mkdir -p obj/bin
|
|
nasm $(ASPARAMS) -o $@ $<
|
|
|
|
kernel.o: build_numbers.c $(OBJECTS) $(ASMOBJECTS)
|
|
@sh support_files/run_linker.sh "$(LDPARAMS)" obj/bin/$@ "$(OBJECTS)" "$(ASMOBJECTS)"
|
|
|
|
kernel.iso: kernel.o
|
|
cp obj/bin/kernel.o iso/boot/kernel.bin
|
|
grub-mkrescue --output=kernel.iso iso
|
|
|
|
qemu: kernel.iso
|
|
qemu-system-x86_64 -serial stdio -m 256M -cdrom kernel.iso
|
|
|
|
.PHONY: resetbuild
|
|
resetbuild:
|
|
@sh support_files/handle_build_numbers.sh build_numbers.c reset
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm obj/*.o
|
|
rm obj/bin/*.o
|