NAME := bozOS AS := i386-elf-as ASFLAGS := CC := i386-elf-gcc CFLAGS := -std=gnu99 -ffreestanding -O2 -Wall -Wextra -iquotelibbozo/headers -iquoteheaders -MMD -g LD := $(CC) LDFLAGS := -T boot/linker.ld -ffreestanding -O2 -nostdlib LIBS := -L libbozo/build/ -lbozo -lgcc SSRC := $(shell find src -name '*.s') CSRC := $(shell find src -name '*.c') OBJ := $(patsubst src/%.c,obj/%.o,$(CSRC))\ $(patsubst src/%.s,obj/%.o,$(SSRC)) DEP := $(patsubst %.o,%.d,$(OBJ)) all: $(NAME) obj/%.o: src/%.s mkdir -p $(dir $@) $(AS) $(ASFLAGS) $< -o $@ obj/%.o: src/%.c mkdir -p $(dir $@) $(CC) $(CFLAGS) -c $< -o $@ $(NAME): $(OBJ) make -C libbozo mkdir -p build $(LD) $(LDFLAGS) -o build/$(NAME).bin $(OBJ) $(LIBS) run: $(NAME) qemu-system-i386 -kernel build/$(NAME).bin iso: $(NAME) mkdir -p isodir/boot/grub cp build/$(NAME).bin isodir/boot/$(NAME).bin cp config/grub.cfg isodir/boot/grub/grub.cfg grub-mkrescue -o build/$(NAME).iso isodir rm -rf isodir run-iso: iso qemu-system-i386 -cdrom build/$(NAME).iso debug: iso qemu-system-i386 -s -S build/$(NAME).iso clean: make -C libbozo clean rm -rf isodir rm -rf obj fclean: clean make -C libbozo fclean rm -rf build re: fclean all .PHONY: all clean fclean re run iso run-iso -include $(DEP)