]> git.xonotic.org Git - xonotic/gmqcc.git/blob - gmqcc.ini.example
Fix some bugs
[xonotic/gmqcc.git] / gmqcc.ini.example
1 # This is an example INI file that can be used to set compiler options
2 # without the rquirement for supplying them as arguments on the command
3 # line, this can be coupled with progs.src.  To utilize this file there
4 # are two options availble, if it's named "gmqcc.ini" or "gmqcc.cfg" and
5 # the file exists in the directory that GMQCC is invoked from, the compiler
6 # will implicitally find and execute regardless.  For more freedom you may
7 # use -config=<file> from the command line to specify a more explicit
8 # directory/name.ext for the configuration file.
9
10
11 # These are common compiler flags usually represented via the -f prefix
12 # from the command line.
13 [flags]
14     # Enabling this can potentially reduces code size by overlapping
15     # locals where possible.
16     OVERLAP_LOCALS               = false
17
18     # in some older versions of the Darkplaces engine the string table
19     # size is computed wrong causing compiled progs.dat to fail to load
20     # Enabling this works around the bug by writing a few additional
21     # null bytes to the end of the string table to compensate.
22     DARKPLACES_STRING_TABLE_BUG  = false
23
24     # Enabling this corrects the assignment of vector field pointers via
25     # subsituting STORE_FLD with STORE_V.
26     ADJUST_VECTOR_FIELDS         = true
27
28     # Enabling this allows the use of the FTEQ preprocessor, as well as
29     # additional preprocessing directives such as #error and #warning.
30     FTEPP                        = true
31
32     # Enabling this relaxes switch statement semantics
33     RELAXED_SWITCH               = false
34
35     # Enabling this allows short-circut evaluation and logic, opposed
36     # to full evaluation.
37     SHORT_LOGIC                  = false
38
39     # Enabling this allows perl-like evaluation/logic.
40     PERL_LOGIC                   = true
41
42     # Enabling this allows the use of the "translatable strings" extension
43     # assisted by .po files.
44     TRANSLATABLE_STRINGS         = false
45
46     # Enabling this prevents initializations from becoming constant unless
47     # 'const' is specified as a type qualifier.
48     INITIALIZED_NONCONSTANTS     = false
49
50     # Enabling this allows function types to be assignable even if their
51     # signatures are invariant of each other.
52     ASSIGN_FUNCTION_TYPES        = false
53
54     # Enabling this will allow the generation of .lno files for engine
55     # virtual machine backtraces (this is enabled with -g as well).
56     LNO                          = false
57
58     # Enabling this corrects ternary percedence bugs present in fteqcc.
59     CORRECT_TERNARY              = true
60
61     # Prevent the creation of _x, _y and _z progdefs for vectors
62     SINGLE_VECTOR_DEFS           = false
63
64     # Cast vectors to real booleans when used in logic expressions.
65     # This is achieved by using NOT_V.
66     CORRECT_LOGIC                = false
67
68     # Always treat empty strings as true. Usuall !"" yields true, because
69     # the string-NOT instruction considers empty strings to be false, while
70     # an empty string as condition for 'if' will be considered true, since
71     # only the numerical value of the global is looked at.
72     TRUE_EMPTY_STRINGS           = false
73
74     # Opposite of the above, empty strings are always false. Similar to
75     # CORRECT_LOGIC this will always use NOT_S to cast a string to a real
76     # boolean value.
77     FALSE_EMPTY_STRINGS          = false
78
79     # Recognize utf-8 characters in character constants, and encode
80     # codepoint escape sequences in strings as utf-8. This essentially allows
81     # \{1234} escape sequences to be higher than 255.
82     UTF8
83
84     # When a warning is printed and it is set to be treated as error via
85     # a -Werror switch, compilation will be stopped, unless this is false.
86     # When this is false, the rest of the code will be compiled, and at the end
87     # the file and line of the first warning will be shown.
88     BAIL_ON_WERROR               = true
89
90     # Allow loops and switches to be labeled and break and continue to take an
91     # optional label to target a specific loop/switch.
92     LOOP_LABELS                  = false
93
94     # Enable the 'nil' null constant, which has no type. It can be used as the
95     # right hand of any assignment regardless of the required type.
96     UNTYPED_NIL                  = false
97
98     # Be "permissive". For instance, when -funtyped-nil is used, this allows local
99     # variables with the name 'nil' to be declared.
100     PREMISSIVE                   = false
101
102     # Allow vararg access from within QC of the form: ...(argnumber, type)
103     VARIADIC_ARGS                = true
104
105     # Most Quake VMs, including the one from FTEQW or up till recently
106     # Darkplaces, do not cope well with vector instructions with overlapping
107     # input and output. This option will avoid producing such code.
108     LEGACY_VECTOR_MATHS          = true
109
110     # Builtin-numbers are usually just immediate constants.
111     # The following allows whole expressions to be used, as long as they
112     # are compile-time constant.
113     EXPRESSIONS_FOR_BUILTINS     = false
114
115 # These are all the warnings, usually present via the -W prefix from
116 # the command line.
117 [warnings]
118     # ?? Used for debugging ??
119     DEBUG                        = false
120
121     # Enables warnings about unused variables.
122     UNUSED_VARIABLE              = true
123
124     # Enables warnings about uninitialized variables.
125     USED_UNINITIALIZED           = true
126
127     # Enables warnings about the unknown control sequences in the source
128     # stream.
129     UNKNOWN_CONTROL_SEQUENCE     = true
130
131     # Enables warnings about the use of (an) extension(s).
132     EXTENSIONS                   = true
133
134     # Enables warnings about redeclared fields.
135     FIELD_REDECLARED             = true
136
137     # Enables warnings about missing return values.
138     MISSING_RETURN_VALUES        = true
139
140     # Enables warnings about missing parameters for function calls.
141     INVALID_PARAMETER_COUNT      = true
142
143     # Enables warnings about locals shadowing parameters or other locals.
144     LOCAL_SHADOWS                = true
145
146     # Enables warnings about constants specified as locals.
147     LOCAL_CONSTANTS              = true
148
149     # Enables warnings about variables declared as type void.
150     VOID_VARIABLES               = true
151
152     # Enables warnings about implicitally declared function pointers.
153     IMPLICIT_FUNCTION_POINTER    = true
154
155     # Enables warnings for use of varadics for non-builtin functions.
156     VARIADIC_FUNCTION            = true
157
158     # Enables warnings about duplicated frame macros.
159     FRAME_MACROS                 = true
160
161     # Enables warnings about effectivless statements.
162     EFFECTLESS_STATEMENT         = true
163
164     # Enables warnings of "end_sys_fields" beiing declared a field.
165     END_SYS_FIELDS               = true
166
167     # Enables warnings for infompatible function pointer signatures used
168     # in assignment.
169     ASSIGN_FUNCTION_TYPES        = true
170
171     # Enables warnings about redefined macros in the preprocessor
172     PREPROCESSOR                 = true
173
174     # Enables warnings about multi-file if statements
175     MULTIFILE_IF                 = true
176
177     # Enables warnings about double declarations
178     DOUBLE_DECLARATION           = true
179
180     # Enables warnings about type qualifiers containing both 'var' and
181     # 'const'
182     CONST_VAR                    = true
183
184     # Enables warnings about the use of multibytes characters / constants
185     MULTIBYTE_CHARACTER          = true
186
187     # Enables warnings about ternary expressions whos precedence may be
188     # not what was initially expected.
189     TERNARY_PRECEDENCE           = true
190
191     # Enables warnings about unknown pragmas.
192     UNKNOWN_PRAGMAS              = true
193
194     # Enables warnings about unreachable code.
195     UNREACHABLE_CODE             = true
196
197     # Enables preprocessor "#warnings"
198     CPP                          = true
199
200     # With the [[attribute]] syntax enabled, warn when an unknown
201     # attribute is encountered. Its first token will be included in the
202     # message.
203     UNKNOWN_ATTRIBUTE            = true
204
205     # Warn when declaring variables or fields with a reserved name like 'nil'
206     RESERVED_NAMES               = true
207
208     # Warn about 'const'-qualified global variables with no initializing value.
209     UNINITIALIZED_CONSTANT       = true
210
211     # Warn about non-constant global variables with no initializing value.
212     UNINITIALIZED_GLOBAL         = true
213
214     # Redeclaring a 'const' as 'var' or the other way round.
215     DIFFERENT_QUALIFIERS         = true
216
217     # Redeclaring a function with different attributes such as
218     # [[noreturn]]
219     DIFFERENT_ATTRIBUTES         = true
220
221     # Warn when a function is marked with the attribute
222     # "[[deprecated]]". This flag enables a warning on calls to functions
223     # marked as such.
224     DEPRECATED                   = true
225
226     # Warn about possible problems from missing parenthesis, like an
227     # assignment used as truth value without additional parens around.
228     PARENTHESIS                  = true
229
230 # Finally these are all the optimizations, usually present via the -O
231 # prefix from the command line.
232 [optimizations]
233     # Enables peephole optimizations.
234     PEEPHOLE                     = true
235
236     # Enables localtemp omission optimizations.
237     LOCALTEMPS                   = true
238
239     # Enables tail recrusion optimizationd.
240     TAIL_RECURSION               = true
241
242     # Enables tail-call optimizations. (Not implemented)
243     TAIL_CALLS                   = true
244
245     # Every function where it is safe to do so will share its local data section
246     # with the others. The criteria are currently that the function must not have
247     # any possibly uninitialized locals, or local arrays regardless of how they
248     # are initialized.
249     OVERLAP_LOCALS               = false
250
251     # Strip out the names of constants to save some space in the progs.dat
252     STRIP_CONSTANT_NAMES         = true
253
254     # Aggressivly reuse strings in the string-section
255     OVERLAP_STRINGS              = true
256
257     # Have expressions which are used as function parameters evaluate directly
258     # into the parameter-globals if possible.
259     # This avoids a whole lot of copying.
260     CALL_STORES                  = true
261
262     # Do not create a RETURN instruction at the end functions of return-type void.
263     VOID_RETURN                  = true
264
265     # Turn extraction-multiplications such as (a_vector * '0 1 0')
266     # into direct component accesses
267     VECTOR_COMPONENTS            = true