aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile60
1 files 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 $<,$^)