From e98c4d1dd52c5c5899a956a14b9d9fb43fdfa319 Mon Sep 17 00:00:00 2001 From: Blake Romero Date: Wed, 18 Sep 2024 14:17:27 +0100 Subject: Refactor Makefile --- Makefile | 60 +++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index 35e4f02..42176f0 100644 --- a/Makefile +++ b/Makefile @@ -1,43 +1,49 @@ CC=gcc CFLAGS=-std=c17 -Wall -Werror -g -TESTFW=criterion +test_framework=criterion # Directories -BIN=bin -OBJ=obj -SRC=src -TEST=tests +bin_dir=bin +obj_dir=obj +src_dir=src +test_dir=tests # Files -OBJS=$(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(wildcard $(SRC)/*.c)) -TESTBINS=$(patsubst $(TEST)/%.c, $(BIN)/%, $(wildcard $(TEST)/*.c)) +src_files=$(wildcard $(src_dir)/*.c) +obj_files=$(patsubst $(src_dir)/%.c, $(obj_dir)/%.o, $(src_files)) +test_files=$(wildcard $(test_dir)/*.c) +test_bins=$(patsubst $(test_dir)/%.c, $(bin_dir)/%, $(test_files)) +# Actions +.PHONY: all all: test -# Target Directories -$(OBJ): - mkdir $@ - -$(BIN): - mkdir $@ - -# Target Files -$(OBJ)/%.o: $(SRC)/%.c $(OBJ) - $(CC) $(CFLAGS) -o $@ -c $< - -$(BIN)/%: $(BIN) $(TEST)/%.c $(OBJS) - $(CC) $(CFLAGS) -o $@ -l $(TESTFW) $(filter-out $<,$^) - -# Actions .PHONY: test -test: $(TESTBINS) - for test in $(TESTBINS); do ./$$test --verbose; done +test: $(test_bins) + for test in $(test_bins); do ./$$test --verbose; done .PHONY: clean clean: - rm -r $(BIN) $(OBJ) + rm -r $(bin_dir) $(obj_dir) .PHONY: info info: - @printf "OBJS: %s\n" $(OBJS) - @printf "TESTBINS: %s\n" $(TESTBINS) + @printf "src_files: %s\n" $(src_files) + @printf "obj_files: %s\n" $(obj_files) + @printf "test_files: %s\n" $(test_files) + @printf "test_bins: %s\n" $(test_bins) + +# Make Directories +$(obj_dir): + mkdir $@ + +$(bin_dir): + mkdir $@ + +# Make object files +$(obj_dir)/%.o: $(src_dir)/%.c $(obj_dir) + $(CC) $(CFLAGS) -o $@ -c $< + +# Make test binaries +$(bin_dir)/%: $(bin_dir) $(test_files) $(obj_files) + $(CC) $(CFLAGS) -o $@ -l $(test_framework) $(filter-out $<,$^) -- cgit