@@ -8,18 +8,22 @@ LDFLAGS =
88SRC_DIR = src
99INC_DIR = include
1010EXAMPLES_DIR = examples
11- OBJ_DIR = obj
12- BIN_DIR = bin
11+ TEST_DIR = tests
12+ BUILD_DIR = build
13+ OBJ_DIR = $(BUILD_DIR ) /obj
14+ BIN_DIR = $(BUILD_DIR ) /bin
1315
1416SRCS = $(wildcard $(SRC_DIR ) /* .c)
1517OBJS = $(patsubst $(SRC_DIR ) /% .c,$(OBJ_DIR ) /% .o,$(SRCS ) )
1618
1719EXAMPLES = $(wildcard $(EXAMPLES_DIR ) /* .c)
1820EXAMPLE_BINS = $(patsubst $(EXAMPLES_DIR ) /% .c,$(BIN_DIR ) /% ,$(EXAMPLES ) )
21+ TEST_SRC = $(TEST_DIR ) /unit_tests.c
22+ TEST_BIN = $(BIN_DIR ) /unit_tests
1923
20- LIB = libsdlp.a
24+ LIB = $( BUILD_DIR ) / libsdlp.a
2125
22- .PHONY : all clean examples lib
26+ .PHONY : all clean examples lib unit-tests test coverage-html
2327
2428all : lib examples
2529
@@ -33,22 +37,30 @@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
3337
3438examples : $(EXAMPLE_BINS )
3539
40+ unit-tests : $(TEST_BIN )
41+
3642$(BIN_DIR ) /% : $(EXAMPLES_DIR ) /% .c $(LIB ) | $(BIN_DIR )
3743 $(CC ) $(CFLAGS ) $< $(LIB ) -o $@ $(LDFLAGS )
3844
39- $(OBJ_DIR ) :
45+ $(TEST_BIN ) : $(TEST_SRC ) $(LIB ) | $(BIN_DIR )
46+ $(CC ) $(CFLAGS ) $< $(LIB ) -o $@ $(LDFLAGS )
47+
48+ $(BUILD_DIR ) :
49+ mkdir -p $(BUILD_DIR )
50+
51+ $(OBJ_DIR ) : | $(BUILD_DIR )
4052 mkdir -p $(OBJ_DIR )
4153
42- $(BIN_DIR ) :
54+
55+ $(BIN_DIR ) : | $(BUILD_DIR )
4356 mkdir -p $(BIN_DIR )
4457
4558clean :
46- rm -rf $(OBJ_DIR ) $(BIN_DIR ) $(LIB )
47-
48- .PHONY : test
49- test : examples
50- @echo " Running TM example..."
51- @./$(BIN_DIR ) /tm_example
52- @echo " "
53- @echo " Running TC example..."
54- @./$(BIN_DIR ) /tc_example
59+ rm -rf $(BUILD_DIR ) obj bin libsdlp.a
60+
61+ coverage-html :
62+ bash scripts/coverage_html.sh
63+
64+ test : unit-tests
65+ @echo " Running unit tests..."
66+ @./$(TEST_BIN )
0 commit comments