.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