NAME = c-md TEST_BIN= c-md.test .DEFAULT_GOAL := all MAKEFLAGS += --no-print-directory include sources.mk CC = clang CPPFLAGS = -std=c99 -I includes CFLAGS = -Wall -Wextra -Werror -pipe LDFLAGS = -lcriterion OBJ_DIR = .build OBJS = $(SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) DEPS = $(OBJS:.o=.d) .PHONY: all all: $(NAME) $(NAME): $(OBJS) $(CC) $(LDFLAGS) -o $@ $^ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c @mkdir -p $(dir $@) $(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c $< -o $@ -include $(DEPS) .PHONY: test test: $(TEST_BIN) ./$(TEST_BIN) $(TEST_BIN): $(TESTS) $(filter-out $(OBJ_DIR)/main.o,$(OBJS)) @mkdir -p $(dir $@) $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $^ -o $@ .PHONY: clean clean: $(RM) -r $(OBJ_DIR) .PHONY: fclean fclean: clean $(RM) $(NAME) $(RM) $(TEST_BIN) .PHONY: re re: fclean $(MAKE) all