]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - doc/gmqcc.1
-fallow-unreachable-code
[xonotic/gmqcc.git] / doc / gmqcc.1
index db4cd51ecf46b451205dc2aaf7868084841f63bf..057362f14f3ebdfca862410ffcad3d17481432d4 100644 (file)
@@ -50,11 +50,6 @@ be overwritten.
 List all possible optimizations and the optimization level they're
 activated at.
 .TP
-.BI "-std=" standard
-Use the specified standard for parsing QC code. The following standards
-are available:
-.IR gmqcc , qcc , fteqcc
-.TP
 .BI -W warning "\fR, " "" -Wno- warning
 Enable or disable a warning.
 .TP
@@ -74,11 +69,47 @@ List all possible compile flags.
 .B -nocolor
 Disables colored output
 .TP
+.BI -config= file
+Use an ini file to read all the -O, -W and -f flag from. See the
+CONFIG section about the file format.
+.TP
 .BI "-redirout=" file
 Redirects standard output to a \fIfile\fR
 .TP
-.BI "-rediterr=" file
+.BI "-redirerr=" file
 Redirects standard error to a \fIfile\fR
+.TP
+.BI "-std=" standard
+Use the specified standard for parsing QC code. The following standards
+are available:
+.IR gmqcc , qcc , fteqcc
+Selecting a standard also implies some -f options and behaves as if
+those options have been written right after the -std option, meaning
+if you changed them before the -std option, you're now overwriting
+them.
+.sp
+.BR -std=gmqcc " includes:"
+.in +4
+-fadjust-vector-fields
+.in
+.BR -std=qcc " includes:"
+.in +4
+.nf
+-fassign-function-types
+-f\fIno-\fRadjust-vector-fields
+.fi
+.in
+.BR -std=fteqcc " includes:"
+.in +4
+.nf
+-fftepp
+-ftranslatable-strings
+-fassign-function-types
+-Wternary-precedence
+-f\fIno-\fRadjust-vector-fields
+-f\fIno-\fRcorrect-ternary
+.fi
+.in
 .SH Warnings
 .TP
 .B -Wunused-variable
@@ -186,6 +217,111 @@ Warn if a ternary expression which contains a comma operator is used
 without enclosing parenthesis, since this is most likely not what you
 actually want. We recommend the \fI-fcorrect-ternary\fR option.
 .TP
+.B -Wunknown-pragmas
+Warn when encountering an unrecognized \fI#pragma\fR line.
+.TP
 .B -Wdebug
 Enable some warnings added in order to help debugging in the compiler.
 You won't need this.
+.SH Compile Flags
+.TP
+.B -foverlap-locals
+Allow local variables to overlap with each other if they don't
+interfer with each other. (Not implemented right now)
+.TP
+.B -fdarkplaces-string-table-bug
+Add some additional characters to the string table in order to
+compensate for a wrong boundcheck in some specific version of the
+darkplaces engine.
+.TP
+.B -fadjust-vector-fields
+When assigning to field pointers of type \fI.vector\fR the common
+behaviour in compilers like \fIfteqcc\fR is to only assign the
+x-component of the pointer. This means that you can use the vector as
+such, but you cannot use its y and z components directly. This flag
+fixes this behaviour. Before using it make sure your code does not
+depend on the buggy behaviour.
+.TP
+.B -fftepp
+Enable a partially fteqcc-compatible preprocessor. It supports all the
+features used in the Xonotic codebase. If you need more, write a
+ticket.
+.TP
+.B -frelaxed-switch
+Allow switch cases to use non constant variables.
+.TP
+.B -fshort-logic
+Perform early out in logical AND and OR expressions. The final result
+will be either a 0 or a 1, see the next flag for more possibilities.
+.TP
+.B -fperl-logic
+In many languages, logical expressions perform early out in a special
+way: If the left operand of an AND yeilds true, or the one of an OR
+yields false, the complete expression evaluates to the right side.
+Thus \fItrue && 5\fI evaluates to 5 rather than 1.
+.TP
+.B -ftranslatable-strings
+Enable the underscore intrinsic: Using \fI_("A string constant")\fR
+will cause the string immediate to get a name with a "dotranslate_"
+prefix. The darkplaces engine recognizes these and translates them in
+a way similar to how gettext works.
+.TP
+.B -finitialized-nonconstants
+Don't implicitly convert initialized variables to constants. With this
+flag, the \fIconst\fR keyword is required to make a constant.
+.TP
+.B -fassign-function-types
+If this flag is not set, (and it is set by default in the qcc and
+fteqcc standards), assigning function pointers of mismatching
+signatures will result in an error rather than a warning.
+.TP
+.B -flno
+Produce a linenumber file along with the output .dat file.
+.TP
+.B -fcorrect-ternary
+Use C's operator precedence for ternary expressions. Unless your code
+depends on fteqcc-compatible behaviour, you'll want to use thi
+soption.
+.TP
+.B -fsingle-vector-defs
+Normally vectors generate 4 defs, once for the vector, and once for
+its components with _x, _y, _z suffixes. This option
+prevents components from being listed.
+.SH CONFIG
+The configuration file is similar to regular .ini files. Comments
+start with hashtags or semicolons, sections are written in square
+brackets and in each section there can be arbitrary many key-value
+pairs.
+.sp
+There are 3 sections currently:
+.IR flags ", " warnings ", and " optimizations .
+They contain a list of boolean values of the form `VARNAME = true` or
+`VARNAME = false`. The variable names are the same as for the
+corresponding -W, -f or -O flag written with only capital letters and
+dashes replaced by underscores.
+.sp
+Here's an example:
+.in +4
+.nf
+# a GMQCC configuration file
+[flags]
+    FTEPP = true
+    ADJUST_VECTOR_FIELDS = false
+    LNO = true
+
+[warnings]
+    UNUSED_VARIABLE = false
+    USED_UNINITIALIZED = true
+
+[optimizations]
+    PEEPHOLE = true
+    TAIL_RECURSION = true
+.fi
+.in
+.SH BUGS
+Please report bugs on <http://github.com/graphitemaster/gmqcc/issues>,
+or see <http://graphitemaster.github.com/gmqcc> on how to contact us.
+.SH SEE ALSO
+.IR qcvm (1)
+.SH AUTHOR
+See <http://graphitemaster.github.com/gmqcc>.