|
1 | 1 | prefix := /usr/local |
2 | 2 | includedir := $(prefix)/include |
3 | 3 |
|
4 | | -BUILD_DIR := build |
5 | | -LIB_DIR := libs |
6 | | -EXAMPLE_DIR := examples |
7 | | -TEST_DIR := tests |
8 | | -BASELINE_DIR := tests/baselines |
| 4 | +BUILD_DIR := build |
| 5 | +LIB_DIR := libs |
| 6 | +EXAMPLE_DIR := examples |
| 7 | +TEST_DIR := tests |
| 8 | +BASELINE_DIR := tests/baselines |
| 9 | +SHARED_LIB_DIR := tests/shared_lib |
9 | 10 |
|
10 | 11 | # Test flags |
11 | 12 | COMMON_FLAGS := -Wall -Wextra -Werror -pedantic -I . -DUPRINTF_TEST -fsanitize=undefined,address,leak -g2 |
@@ -116,17 +117,28 @@ $(EXAMPLE_DIR)/%.out: $(BUILD_DIR)/$(EXAMPLE_DIR)/% |
116 | 117 | # ======================== Tests ========================== |
117 | 118 |
|
118 | 119 | test: tests |
119 | | -tests: $(foreach O,$(O_LEVELS), \ |
120 | | - $(foreach C,$(C_COMPILERS),$(foreach T,$(C_TESTS),$(BUILD_DIR)/test/$T/$C-$O)) \ |
121 | | - $(foreach C,$(CXX_COMPILERS),$(foreach T,$(CXX_TESTS),$(BUILD_DIR)/test/$T/$C-$O))) |
| 120 | +tests: $(BUILD_DIR)/$(SHARED_LIB_DIR)/bin \ |
| 121 | + $(foreach O,$(O_LEVELS), \ |
| 122 | + $(foreach C,$(C_COMPILERS),$(foreach T,$(C_TESTS),$(BUILD_DIR)/tests/$T/$C-$O)) \ |
| 123 | + $(foreach C,$(CXX_COMPILERS),$(foreach T,$(CXX_TESTS),$(BUILD_DIR)/tests/$T/$C-$O))) |
| 124 | + |
| 125 | +$(BUILD_DIR)/$(SHARED_LIB_DIR)/bin: $(SHARED_LIB_DIR)/bin.c $(BUILD_DIR)/$(SHARED_LIB_DIR)/libtest.so |
| 126 | + @mkdir -p $(@D) |
| 127 | + $(CC) $(CFLAGS) $< -o $@ -L$(BUILD_DIR)/$(SHARED_LIB_DIR) -ltest -Wl,-rpath=$(BUILD_DIR)/$(SHARED_LIB_DIR) |
| 128 | + ./$@ > $(BUILD_DIR)/$(SHARED_LIB_DIR)/out |
| 129 | + diff $(BUILD_DIR)/$(SHARED_LIB_DIR)/out $(SHARED_LIB_DIR)/baseline.out |
| 130 | + |
| 131 | +$(BUILD_DIR)/$(SHARED_LIB_DIR)/libtest.so: $(SHARED_LIB_DIR)/lib.c |
| 132 | + @mkdir -p $(@D) |
| 133 | + $(CC) $(CFLAGS) -fPIC -shared $< -o $@ |
122 | 134 |
|
123 | 135 | define C_TEST_TEMPLATE |
124 | | -$(BUILD_DIR)/test/$1/$2-$3: $(TEST_DIR)/$1.c $(BUILD_DIR)/impl/$2.o |
| 136 | +$(BUILD_DIR)/tests/$1/$2-$3: $(TEST_DIR)/$1.c $(BUILD_DIR)/impl/$2.o |
125 | 137 | @./test.sh $1 "$1-$2-$3" $2 "$(CFLAGS) -$3" $$^ $$@ $(BASELINE_DIR)/$1.out |
126 | 138 | endef |
127 | 139 |
|
128 | 140 | define CXX_TEST_TEMPLATE |
129 | | -$(BUILD_DIR)/test/$1/$2-$3: $(TEST_DIR)/$1.cc $(BUILD_DIR)/impl/$2.o |
| 141 | +$(BUILD_DIR)/tests/$1/$2-$3: $(TEST_DIR)/$1.cc $(BUILD_DIR)/impl/$2.o |
130 | 142 | @./test.sh $1 "$1-$2-$3" $2 "$(CXXFLAGS) -$3" $$^ $$@ $(BASELINE_DIR)/$1.out |
131 | 143 | endef |
132 | 144 |
|
|
0 commit comments