SRC_DIR = src COLLEEN_SRCS = $(SRC_DIR)/Colleen.c GRACE_SRCS = $(SRC_DIR)/Grace.c COLLEEN = Colleen GRACE = Grace .DEFAULT_GOAL := all MAKEFLAGS += --no-print-directory CC = clang CPPFLAGS = -std=c99 -I includes CFLAGS = -Wall -Wextra -Werror -pipe -Wpedantic -Wconversion -Wshadow -Wvla LDFLAGS = OBJ_DIR = .build COLLEEN_OBJS = $(COLLEEN_SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) COLLEEN_DEPS = $(COLLEEN_OBJS:.o=.d) GRACE_OBJS = $(GRACE_SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) GRACE_DEPS = $(GRACE_OBJS:.o=.d) .PHONY: all all: $(COLLEEN) $(GRACE) $(GRACE): $(GRACE_OBJS) $(CC) $(LDFLAGS) -o $@ $^ $(COLLEEN): $(COLLEEN_OBJS) $(CC) $(LDFLAGS) -o $@ $^ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c @mkdir -p $(dir $@) $(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c $< -o $@ -include $(COLLEEN_DEPS) -include $(GRACE_DEPS) .PHONY: clean clean: $(RM) -r $(OBJ_DIR) .PHONY: fclean fclean: clean $(RM) $(COLLEEN) $(GRACE) .PHONY: re re: fclean $(MAKE) all