-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
executable file
·113 lines (92 loc) · 2.04 KB
/
Makefile
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
MAKEFLAGS+=-r --no-builtin-rules -R --no-builtin-variables
ifndef DEBUG
HIDE=@
endif
C=gcc-7
CXX=gcc-7
CFLAGS=\
-pipe \
-O3 \
-march=native \
-Wall \
-Werror \
-Wfatal-errors \
-Wpedantic \
-Wextra \
-Wshadow \
-fno-strict-aliasing \
-pedantic \
-pedantic-errors
CXXFLAGS=$(CFLAGS) \
-std=c++14
LDFLAGS=-pg
LDXXFLAGS=$(LDFLAGS) -lstdc++
SRCDIR=src
BUILDDIR=build
BINDIR=$(BUILDDIR)/bin
OBJDIR=$(BUILDDIR)/obj
CSRC=$(wildcard $(SRCDIR)/*.c)
COBJS=$(addprefix $(OBJDIR)/,$(notdir $(CSRC:.c=.obj)))
CPPSRC=$(wildcard $(SRCDIR)/*.cpp)
CPPOBJS=$(addprefix $(OBJDIR)/,$(notdir $(CPPSRC:.cpp=.o)))
HEADERS=$(wildcard $(SRCDIR)/*.h)
APP=$(BINDIR)/simulate
APP_C=$(BINDIR)/simulate_c
APPOPTS=assets/octave/octave.png
LIBS=
INCLUDES=-Istb
FRAMEWORKS=
TIDY_APP=clang-format
GIT=git
.PHONY: run
run: all
@echo [run] $(APP)
$(HIDE)$(APP) $(APPOPTS)
.PHONY: all
all: status $(APP) $(APP_C) ;
Makefile: ;
.PHONY: status
status:
@echo [git-status]
$(HIDE)$(GIT) status -s
.PHONY: clean
clean:
-rm $(COBJS)
-rm $(CPPOBJS)
-rmdir $(OBJDIR)
-rm $(APP)
-rm $(APP_C)
-rmdir $(BINDIR)
-rmdir -p $(BUILDDIR)
$(APP_C): $(COBJS) Makefile | $(BINDIR)
@echo [link] $@
$(HIDE)$(C) $(LDFLAGS) $(COBJS) -o $@ $(LIBS) $(FRAMEWORKS)
$(APP): $(CPPOBJS) Makefile | $(BINDIR)
@echo [link] $@
$(HIDE)$(CXX) $(LDXXFLAGS) $(CPPOBJS) -o $@ $(LIBS) $(FRAMEWORKS)
.SUFFIXES:.c .obg .c.tidy
$(COBJS) : $(OBJDIR)/%.obj : $(SRCDIR)/%.c | $(OBJDIR)
@echo [tidy] $<
$(HIDE)$(TIDY_APP) -i $<
@echo [c] $<
$(HIDE)time $(C) $(CFLAGS) $(INCLUDES) -c $< -o $@
.SUFFIXES:.cpp .h .o .cpp.tidy .h.tidy
$(CPPOBJS) : $(OBJDIR)/%.o : $(SRCDIR)/%.cpp | $(OBJDIR)
@echo [tidy] $<
$(HIDE)$(TIDY_APP) -i $<
@echo [c++] $<
$(HIDE)time $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
$(BINDIR) $(OBJDIR):
@echo [mkdir] $(@)
$(HIDE)mkdir -p $(@)
.PHONY: tidy
tidy: $(addsuffix .tidy,$(SRC) $(HEADERS)) status ;
%.c.tidy: %.c
@echo [tidy] $<
$(HIDE)$(TIDY_APP) -i $<
%.cpp.tidy: %.cpp
@echo [tidy] $<
$(HIDE)$(TIDY_APP) -i $<
%.h.tidy: %.h
@echo [tidy] $<
$(HIDE)$(TIDY_APP) -i $<