fix __builtin_nan and add some missing builtins
[xonotic/gmqcc.git] / Makefile
1 UNAME ?= $(shell uname)
2 CYGWIN = $(findstring CYGWIN, $(UNAME))
3 MINGW = $(findstring MINGW, $(UNAME))
4
5 ifneq ("$(CYGWIN)", "")
6 WINDOWS=1
7 endif
8 ifneq ("$(MINGW)", "")
9 WINDOWS=1
10 endif
11
12 CXX ?= clang++
13 CXXFLAGS = \
14         -std=c++11 \
15         -Wall \
16         -Wextra \
17         -Wno-parentheses \
18         -Wno-class-memaccess \
19         -fno-exceptions \
20         -fno-rtti \
21         -MD \
22         -g3
23
24 CSRCS = \
25         ast.cpp \
26         code.cpp \
27         conout.cpp \
28         fold.cpp \
29         ftepp.cpp \
30         intrin.cpp \
31         ir.cpp \
32         lexer.cpp \
33         main.cpp \
34         opts.cpp \
35         parser.cpp \
36         stat.cpp \
37         utf8.cpp \
38         util.cpp
39
40 TSRCS = \
41         conout.cpp \
42         opts.cpp \
43         stat.cpp \
44         test.cpp \
45         util.cpp
46
47 VSRCS = \
48         exec.cpp \
49         stat.cpp \
50         util.cpp
51
52 COBJS = $(CSRCS:.cpp=.o)
53 TOBJS = $(TSRCS:.cpp=.o)
54 VOBJS = $(VSRCS:.cpp=.o)
55
56 CDEPS = $(CSRCS:.cpp=.d)
57 TDEPS = $(TSRCS:.cpp=.d)
58 VDEPS = $(VSRCS:.cpp=.d)
59
60 ifndef WINDOWS
61 CBIN = gmqcc
62 VBIN = qcvm
63 TBIN = testsuite
64 else
65 CBIN = gmqcc.exe
66 VBIN = qcvm.exe
67 endif
68
69 ifndef WINDOWS
70 all: $(CBIN) $(QCVM) $(TBIN)
71 else
72 all: $(CBIN) $(QCVM)
73 endif
74
75 $(CBIN): $(COBJS)
76         $(CXX) $(COBJS) -o $@
77
78 $(VBIN): $(VOBJS)
79         $(CXX) $(VOBJS) -o $@
80
81 ifndef WINDOWS
82 $(TBIN): $(TOBJS)
83         $(CXX) $(TOBJS) -o $@
84
85 test: $(CBIN) $(VBIN) $(TBIN)
86         @./$(TBIN)
87 endif
88
89 .cpp.o:
90         $(CXX) -c $(CXXFLAGS) $< -o $@
91
92 clean:
93         rm -f *.d
94         rm -f $(COBJS) $(CDEPS) $(CBIN)
95         rm -f $(VOBJS) $(VDEPS) $(VBIN)
96 ifndef WINDOWS
97         rm -f $(TOBJS) $(TDEPS) $(TOBJS)
98 endif
99
100 -include *.d