X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=gmqcc.ini.example;h=b0ab51ff6d533838078a614c0af0f81d8f17c359;hp=748e206cbeed9d31a4c184367b912a5d2c54c4de;hb=db229b6f94175076dec1d105169aaf984db58f7d;hpb=26f3370ea6f6a33a232d7c30166dff2a3589fc30 diff --git a/gmqcc.ini.example b/gmqcc.ini.example index 748e206..b0ab51f 100644 --- a/gmqcc.ini.example +++ b/gmqcc.ini.example @@ -1,51 +1,262 @@ -# this is a template for an ini file -# these are comments -; so are these +# This is an example INI file that can be used to set compiler options +# without the rquirement for supplying them as arguments on the command +# line, this can be coupled with progs.src. To utilize this file there +# are two options availble, if it's named "gmqcc.ini" or "gmqcc.cfg" and +# the file exists in the directory that GMQCC is invoked from, the compiler +# will implicitally find and execute regardless. For more freedom you may +# use -config= from the command line to specify a more explicit +# directory/name.ext for the configuration file. + +# These are common compiler flags usually represented via the -f prefix +# from the command line. [flags] - OVERLAP_LOCALS = false ; comments can exist on lines too - DARKPLACES_STRING_TABLE_BUG = false # like this as well + # Enabling this can potentially reduces code size by overlapping + # locals where possible. + OVERLAP_LOCALS = false + + # in some older versions of the Darkplaces engine the string table + # size is computed wrong causing compiled progs.dat to fail to load + # Enabling this works around the bug by writing a few additional + # null bytes to the end of the string table to compensate. + DARKPLACES_STRING_TABLE_BUG = false + + # Enabling this corrects the assignment of vector field pointers via + # subsituting STORE_FLD with STORE_V. ADJUST_VECTOR_FIELDS = true + + # Enabling this allows the use of the FTEQ preprocessor, as well as + # additional preprocessing directives such as #error and #warning. FTEPP = true + + # Enabling this relaxes switch statement semantics RELAXED_SWITCH = false + + # Enabling this allows short-circut evaluation and logic, opposed + # to full evaluation. SHORT_LOGIC = false + + # Enabling this allows perl-like evaluation/logic. PERL_LOGIC = true + + # Enabling this allows the use of the "translatable strings" extension + # assisted by .po files. TRANSLATABLE_STRINGS = false + + # Enabling this prevents initializations from becoming constant unless + # 'const' is specified as a type qualifier. INITIALIZED_NONCONSTANTS = false + + # Enabling this allows function types to be assignable even if their + # signatures are invariant of each other. ASSIGN_FUNCTION_TYPES = false + + # Enabling this will allow the generation of .lno files for engine + # virtual machine backtraces (this is enabled with -g as well). LNO = false + + # Enabling this corrects ternary percedence bugs present in fteqcc. CORRECT_TERNARY = true -# enable all warnings (minus debug) + # Prevent the creation of _x, _y and _z progdefs for vectors + SINGLE_VECTOR_DEFS = false + + # Cast vectors to real booleans when used in logic expressions. + # This is achieved by using NOT_V. + CORRECT_LOGIC = false + + # Always treat empty strings as true. Usuall !"" yields true, because + # the string-NOT instruction considers empty strings to be false, while + # an empty string as condition for 'if' will be considered true, since + # only the numerical value of the global is looked at. + TRUE_EMPTY_STRINGS = false + + # Opposite of the above, empty strings are always false. Similar to + # CORRECT_LOGIC this will always use NOT_S to cast a string to a real + # boolean value. + FALSE_EMPTY_STRINGS = false + + # Recognize utf-8 characters in character constants, and encode + # codepoint escape sequences in strings as utf-8. This essentially allows + # \{1234} escape sequences to be higher than 255. + UTF8 + + # When a warning is printed and it is set to be treated as error via + # a -Werror switch, compilation will be stopped, unless this is false. + # When this is false, the rest of the code will be compiled, and at the end + # the file and line of the first warning will be shown. + BAIL_ON_WERROR = true + + # Allow loops and switches to be labeled and break and continue to take an + # optional label to target a specific loop/switch. + LOOP_LABELS = false + + # Enable the 'nil' null constant, which has no type. It can be used as the + # right hand of any assignment regardless of the required type. + UNTYPED_NIL = false + + # Be "permissive". For instance, when -funtyped-nil is used, this allows local + # variables with the name 'nil' to be declared. + PREMISSIVE = false + + # Allow vararg access from within QC of the form: ...(argnumber, type) + VARIADIC_ARGS = true + + # Most Quake VMs, including the one from FTEQW or up till recently + # Darkplaces, do not cope well with vector instructions with overlapping + # input and output. This option will avoid producing such code. + LEGACY_VECTOR_MATHS = true + +# These are all the warnings, usually present via the -W prefix from +# the command line. [warnings] + # ?? Used for debugging ?? DEBUG = false + + # Enables warnings about unused variables. UNUSED_VARIABLE = true + + # Enables warnings about uninitialized variables. USED_UNINITIALIZED = true + + # Enables warnings about the unknown control sequences in the source + # stream. UNKNOWN_CONTROL_SEQUENCE = true + + # Enables warnings about the use of (an) extension(s). EXTENSIONS = true + + # Enables warnings about redeclared fields. FIELD_REDECLARED = true + + # Enables warnings about missing return values. MISSING_RETURN_VALUES = true - TOO_FEW_PARAMETERS = true + + # Enables warnings about missing parameters for function calls. + INVALID_PARAMETER_COUNT = true + + # Enables warnings about locals shadowing parameters or other locals. LOCAL_SHADOWS = true + + # Enables warnings about constants specified as locals. LOCAL_CONSTANTS = true + + # Enables warnings about variables declared as type void. VOID_VARIABLES = true + + # Enables warnings about implicitally declared function pointers. IMPLICIT_FUNCTION_POINTER = true + + # Enables warnings for use of varadics for non-builtin functions. VARIADIC_FUNCTION = true + + # Enables warnings about duplicated frame macros. FRAME_MACROS = true + + # Enables warnings about effectivless statements. EFFECTLESS_STATEMENT = true + + # Enables warnings of "end_sys_fields" beiing declared a field. END_SYS_FIELDS = true + + # Enables warnings for infompatible function pointer signatures used + # in assignment. ASSIGN_FUNCTION_TYPES = true + + # Enables warnings about redefined macros in the preprocessor PREPROCESSOR = true + + # Enables warnings about multi-file if statements MULTIFILE_IF = true + + # Enables warnings about double declarations DOUBLE_DECLARATION = true + + # Enables warnings about type qualifiers containing both 'var' and + # 'const' CONST_VAR = true + + # Enables warnings about the use of multibytes characters / constants MULTIBYTE_CHARACTER = true + + # Enables warnings about ternary expressions whos precedence may be + # not what was initially expected. TERNARY_PRECEDENCE = true + + # Enables warnings about unknown pragmas. UNKNOWN_PRAGMAS = true -; enable all optimizations! + # Enables warnings about unreachable code. + UNREACHABLE_CODE = true + + # Enables preprocessor "#warnings" + CPP = true + + # With the [[attribute]] syntax enabled, warn when an unknown + # attribute is encountered. Its first token will be included in the + # message. + UNKNOWN_ATTRIBUTE = true + + # Warn when declaring variables or fields with a reserved name like 'nil' + RESERVED_NAMES = true + + # Warn about 'const'-qualified global variables with no initializing value. + UNINITIALIZED_CONSTANT = true + + # Warn about non-constant global variables with no initializing value. + UNINITIALIZED_GLOBAL = true + + # Redeclaring a 'const' as 'var' or the other way round. + DIFFERENT_QUALIFIERS = true + + # Redeclaring a function with different attributes such as + # [[noreturn]] + DIFFERENT_ATTRIBUTES = true + + # Warn when a function is marked with the attribute + # "[[deprecated]]". This flag enables a warning on calls to functions + # marked as such. + DEPRECATED = true + + # Warn about possible problems from missing parenthesis, like an + # assignment used as truth value without additional parens around. + PARENTHESIS = true + +# Finally these are all the optimizations, usually present via the -O +# prefix from the command line. [optimizations] + # Enables peephole optimizations. PEEPHOLE = true + + # Enables localtemp omission optimizations. LOCALTEMPS = true + + # Enables tail recrusion optimizationd. TAIL_RECURSION = true + + # Enables tail-call optimizations. (Not implemented) TAIL_CALLS = true + + # Every function where it is safe to do so will share its local data section + # with the others. The criteria are currently that the function must not have + # any possibly uninitialized locals, or local arrays regardless of how they + # are initialized. + OVERLAP_LOCALS = false + + # Strip out the names of constants to save some space in the progs.dat + STRIP_CONSTANT_NAMES = true + + # Aggressivly reuse strings in the string-section + OVERLAP_STRINGS = true + + # Have expressions which are used as function parameters evaluate directly + # into the parameter-globals if possible. + # This avoids a whole lot of copying. + CALL_STORES = true + + # Do not create a RETURN instruction at the end functions of return-type void. + VOID_RETURN = true + + # Turn extraction-multiplications such as (a_vector * '0 1 0') + # into direct component accesses + VECTOR_COMPONENTS = true