-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
68 lines (47 loc) · 1.71 KB
/
Makefile
File metadata and controls
68 lines (47 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
.SUFFIXES:
.DEFAULT: all
.NOTPARALLEL:
.SILENT:
.PHONY: all clean test
BLDDIR := build
DEPDIR := $(BLDDIR)/.d
SRCS := test_math.cpp tests/unit_test_lvec4.cpp tests/unit_test_fvec4.cpp
CFLAGS_ALL := -std=c++17 -Wall
CFLAGS_sse2 := -msse2
CFLAGS_sse3 := -msse3
CFLAGS_sse4 := -msse4.1
CFLAGS_native := -march=native -mtune=native
CONFIGS := sse2 sse3 sse4 native
TARGS := $(addprefix $(BLDDIR)/,$(foreach t,$(basename $(notdir $(SRCS))),$(foreach c,$(CONFIGS),$(t)_$(c))))
$(info $(basename $(notdir $(SRCS))))
$(info $(TARGS))
define TARGRULE
$(BLDDIR)/$(basename $(notdir $(1)))_$(2): $(1) | $(DEPDIR) $(BLDDIR)
echo "[CC $(2)] $$@"
g++ $(CFLAGS_ALL) $(CFLAGS_$(2)) -MT $$@ -MMD -MP -MF $$(patsubst $(BLDDIR)%,$(DEPDIR)%,$$@.Td) --std=c++11 -I$(CURDIR) -o $$@ $(1)
mv -f $$(patsubst $(BLDDIR)%,$(DEPDIR)%,$$@.Td) $$(patsubst $(BLDDIR)%,$(DEPDIR)%,$$@.d) && touch $$@
endef
define RUNTESTTARGRULE
.PHONY: $(patsubst $(BLDDIR)/unit_test_%,run_test_%,$(1))
$(patsubst $(BLDDIR)/unit_test_%,run_test_%,$(1)): $(1)
$(1)
test: $(patsubst $(BLDDIR)/unit_test_%,run_test_%,$(1))
TEST_NAMES += $(patsubst $(BLDDIR)/unit_test_%,run_test_%,$(1))
endef
all: $(TARGS) | $(BLDDIR)
$(DEPDIR):
mkdir -p $(DEPDIR)
$(BLDDIR):
mkdir -p $(BLDDIR)
### DEBUG: $(foreach c,$(CONFIGS),$(foreach T,$(SRCS),$(info $(call TARGRULE,$(T),$(c)))))
$(foreach c,$(CONFIGS),$(foreach T,$(SRCS),$(eval $(call TARGRULE,$(T),$(c)))))
TEST_TARGS:=$(filter $(BLDDIR)/unit_test%,$(TARGS))
TEST_NAMES:=#
### DEBUG: $(info $(TEST_TARGS))
$(foreach T,$(TEST_TARGS),$(eval $(call RUNTESTTARGRULE,$(T))))
$(info $(TEST_NAMES))
clean:
rm -rf $(DEPDIR) $(BLDDIR)
$(DEPDIR)/%.d: ;
.PRECIOUS: $(DEPDIR)/%.d
-include $(patsubst %,$(DEPDIR)/%.d,$(basename $(notdir $(TARGS))))