SRCDIR = src OBJDIR = obj BUILDDIR = build SRC := $(wildcard $(SRCDIR)/**/*.c) OBJ := $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC)) CC = i386-elf-gcc CFLAGS = -std=gnu99 -ffreestanding -O2 -Wall -Wextra -iquoteheaders -c AR = ar ARFLAGS = NAME = libbozo.a $(OBJDIR)/%.o: $(SRCDIR)/%.c mkdir -p $(dir $@) $(CC) $(CFLAGS) $< -o $@ all : $(NAME) clean : rm -rf $(OBJDIR) fclean : clean rm -rf $(BUILDDIR) $(NAME) : $(OBJ) mkdir -p $(BUILDDIR) $(AR) -rc $(BUILDDIR)/$(NAME) $(OBJ) re: fclean all .PHONY: clean fclean test all re