Major cleanup of platform/fs stuff
[xonotic/gmqcc.git] / Makefile
1 CC ?= clang
2 CFLAGS = -MD -std=gnu99 -Wall -Wextra -pedantic-errors -g3
3 LDFLAGS = -lm
4
5 CSRCS = ansi.c ast.c code.c conout.c fold.c fs.c ftepp.c hash.c intrin.c ir.c lexer.c main.c opts.c parser.c stat.c utf8.c util.c
6 TSRCS = ansi.c conout.c fs.c hash.c opts.c stat.c test.c util.c
7 VSRCS = ansi.c exec.c fs.c hash.c stat.c util.c
8
9 COBJS = $(CSRCS:.c=.o)
10 TOBJS = $(TSRCS:.c=.o)
11 VOBJS = $(VSRCS:.c=.o)
12
13 CDEPS = $(CSRCS:.c=.d)
14 TDEPS = $(TSRCS:.c=.d)
15 VDEPS = $(VSRCS:.c=.d)
16
17 CBIN = gmqcc
18 TBIN = testsuite
19 VBIN = qcvm
20
21 all: $(CBIN) $(TBIN) $(VBIN)
22
23 $(CBIN): $(COBJS)
24         $(CC) $(COBJS) $(LDFLAGS) -o $@
25
26 $(TBIN): $(TOBJS)
27         $(CC) $(TOBJS) $(LDFLAGS) -o $@
28
29 $(VBIN): $(VOBJS)
30         $(CC) $(VOBJS) $(LDFLAGS) -o $@
31
32 .c.o:
33         $(CC) -c $(CFLAGS) $< -o $@
34
35 test: $(CBIN) $(TBIN) $(VBIN)
36         @./$(TBIN)
37
38 clean:
39         rm -f *.d
40         rm -f $(COBJS) $(CDEPS) $(CBIN)
41         rm -f $(TOBJS) $(TDEPS) $(TBIN)
42         rm -f $(VOBJS) $(VDEPS) $(VBIN)
43
44 -include *.d