]> git.xonotic.org Git - xonotic/gmqcc.git/blob - include.mk
7352ecb12787a8fcbf162d8686ea684c0c4c49d2
[xonotic/gmqcc.git] / include.mk
1 # default directories and paths
2 DESTDIR :=
3 PREFIX  := /usr/local
4 BINDIR  := $(PREFIX)/bin
5 DATADIR := $(PREFIX)/share
6 MANDIR  := $(DATADIR)/man
7
8 # default flags
9 CFLAGS  += -Wall -Wextra -Werror -Wstrict-aliasing -Wno-attributes -O2
10
11 # compiler
12 CC      ?= clang
13
14 # linker flags and optional additional libraries if required
15 LDFLAGS +=
16 LIBS    += -lm
17
18 #common objects
19 COMMON   = ansi.o util.o hash.o stat.o fs.o opts.o conout.o
20
21 #optional flags
22 OPTIONAL_CFLAGS  :=
23 OPTIONAL_LDFLAGS :=
24
25 #objects
26 OBJ_C = $(COMMON) main.o lexer.o parser.o code.o ast.o ir.o ftepp.o utf8.o fold.o intrin.o
27 OBJ_T = $(COMMON) test.o
28 OBJ_X = $(COMMON) exec.o
29
30 #gource flags
31 GOURCEFLAGS =                 \
32     --date-format "%d %B, %Y" \
33     --seconds-per-day 0.01    \
34     --auto-skip-seconds 1     \
35     --title "GMQCC"           \
36     --key                     \
37     --camera-mode overview    \
38     --highlight-all-users     \
39     --file-idle-time 0        \
40     --hide progress,mouse     \
41     --stop-at-end             \
42     --max-files 99999999999   \
43     --max-file-lag 0.000001   \
44     --bloom-multiplier 1.3    \
45     --logo doc/html/gmqcc.png \
46     -1280x720
47
48 #ffmpeg flags for gource
49 FFMPEGFLAGS=                  \
50     -y                        \
51     -r 60                     \
52     -f image2pipe             \
53     -vcodec ppm               \
54     -i -                      \
55     -vcodec libx264           \
56     -preset ultrafast         \
57     -crf 1                    \
58     -threads 0                \
59     -bf 0
60
61 #splint flags
62 SPLINTFLAGS =                 \
63     -preproc                  \
64     -redef                    \
65     -noeffect                 \
66     -nullderef                \
67     -usedef                   \
68     -type                     \
69     -mustfreeonly             \
70     -nullstate                \
71     -varuse                   \
72     -mustfreefresh            \
73     -compdestroy              \
74     -compmempass              \
75     -nullpass                 \
76     -onlytrans                \
77     -predboolint              \
78     -boolops                  \
79     -incondefs                \
80     -macroredef               \
81     -retvalint                \
82     -nullret                  \
83     -predboolothers           \
84     -globstate                \
85     -dependenttrans           \
86     -branchstate              \
87     -compdef                  \
88     -temptrans                \
89     -usereleased              \
90     -warnposix                \
91     +charindex                \
92     -kepttrans                \
93     -unqualifiedtrans         \
94     +matchanyintegral         \
95     +voidabstract             \
96     -nullassign               \
97     -unrecog                  \
98     -casebreak                \
99     -retvalbool               \
100     -retvalother              \
101     -mayaliasunique           \
102     -realcompare              \
103     -observertrans            \
104     -abstract                 \
105     -statictrans              \
106     -castfcnptr               \
107     -shiftimplementation      \
108     -shiftnegative            \
109     -boolcompare              \
110     -infloops                 \
111     -sysunrecog
112
113 #always the right rule
114 default: all
115
116 #uninstall rule
117 uninstall:
118         rm -f $(DESTDIR)$(BINDIR)/gmqcc
119         rm -f $(DESTDIR)$(BINDIR)/qcvm
120         rm -f $(DESTDIR)$(BINDIR)/gmqpak
121         rm -f $(DESTDIR)$(MANDIR)/man1/gmqcc.1
122         rm -f $(DESTDIR)$(MANDIR)/man1/qcvm.1
123         rm -f $(DESTDIR)$(MANDIR)/man1/gmqpak.1
124
125 #style rule
126 STYLE_MATCH = \( -name '*.[ch]' -or -name '*.def' -or -name '*.qc' \)
127
128 # splint cannot parse the MSVC source
129 SPLINT_MATCH = \( -name '*.[ch]' -and ! -name 'msvc.c' -and ! -path './doc/*' \)
130
131 style:
132         find . -type f $(STYLE_MATCH) -exec sed -i 's/ *$$//' '{}' ';'
133         find . -type f $(STYLE_MATCH) -exec sed -i -e '$$a\' '{}' ';'
134         find . -type f $(STYLE_MATCH) -exec sed -i 's/\t/    /g' '{}' ';'
135
136 splint:
137         @splint $(SPLINTFLAGS) `find . -type f $(SPLINT_MATCH)`
138
139 gource:
140         @gource $(GOURCEFLAGS)
141
142 gource-record:
143         @gource $(GOURCEFLAGS) -o - | ffmpeg $(FFMPEGFLAGS) gource.mp4