Merge branch 'master' into cleanup
[xonotic/gmqcc.git] / Makefile
1 CXX ?= clang++
2 CXXFLAGS = \
3         -std=c++11 \
4         -Wall \
5         -Wextra \
6         -fno-exceptions \
7         -fno-rtti \
8         -MD \
9         -g3
10
11 CSRCS = \
12         ast.cpp \
13         code.cpp \
14         conout.cpp \
15         fold.cpp \
16         ftepp.cpp \
17         intrin.cpp \
18         ir.cpp \
19         lexer.cpp \
20         main.cpp \
21         opts.cpp \
22         parser.cpp \
23         stat.cpp \
24         utf8.cpp \
25         util.cpp
26
27 TSRCS = \
28         conout.cpp \
29         opts.cpp \
30         stat.cpp \
31         test.cpp \
32         util.cpp
33
34 VSRCS = \
35         exec.cpp \
36         stat.cpp \
37         util.cpp
38
39 COBJS = $(CSRCS:.cpp=.o)
40 TOBJS = $(TSRCS:.cpp=.o)
41 VOBJS = $(VSRCS:.cpp=.o)
42
43 CDEPS = $(CSRCS:.cpp=.d)
44 TDEPS = $(TSRCS:.cpp=.d)
45 VDEPS = $(VSRCS:.cpp=.d)
46
47 CBIN = gmqcc
48 TBIN = testsuite
49 VBIN = qcvm
50
51 all: $(CBIN) $(TBIN) $(VBIN)
52
53 $(CBIN): $(COBJS)
54         $(CXX) $(COBJS) -o $@
55
56 $(TBIN): $(TOBJS)
57         $(CXX) $(TOBJS) -o $@
58
59 $(VBIN): $(VOBJS)
60         $(CXX) $(VOBJS) -o $@
61
62 .cpp.o:
63         $(CXX) -c $(CXXFLAGS) $< -o $@
64
65 test: $(CBIN) $(TBIN) $(VBIN)
66         @./$(TBIN)
67
68 clean:
69         rm -f *.d
70         rm -f $(COBJS) $(CDEPS) $(CBIN)
71         rm -f $(TOBJS) $(TDEPS) $(TBIN)
72         rm -f $(VOBJS) $(VDEPS) $(VBIN)
73
74 -include *.d