mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-10 07:11:41 +00:00
[qfcc] Make ruamoko the default and update the docs
It's time to do the dog-food.
This commit is contained in:
parent
f3770cc647
commit
26fca581fc
2 changed files with 54 additions and 22 deletions
|
@ -56,8 +56,10 @@ understand.
|
|||
|
||||
.TP
|
||||
.B \-\-advanced
|
||||
Use advanced Ruamoko features.
|
||||
This is the default when using separate compilation.
|
||||
Use advanced Ruamoko language features limited to the v6p ISA. This
|
||||
provides access to structs, arrays, pointers, integers, quaternions,
|
||||
doubles and object-oriented features mostly compatible with Objective-C
|
||||
(ie, Objective-QuakeC). For access to SIMD vector types, see --ruamoko.
|
||||
|
||||
.TP
|
||||
.B \-C, \-\-code OPTION,...
|
||||
|
@ -179,6 +181,15 @@ Counteracts the effects of \fB-v\fP.
|
|||
Incremental linking.
|
||||
Generate a larger object file from other object files and libraries.
|
||||
|
||||
.TP
|
||||
.B \-\-raumoko, \-\-ruamoko
|
||||
In addition to the Ruamoko language features added by --advanced, this
|
||||
option provides access to SIMD vector types (and instructions), a data
|
||||
stack for local variables and parameters (allowing pointers to local
|
||||
variables to be passed to other functions!), and other features still
|
||||
under development.
|
||||
This is the default when using separate compilation.
|
||||
|
||||
.TP
|
||||
.B \-S, \-\-save\-temps
|
||||
Do not delete temporary files.
|
||||
|
@ -346,16 +357,17 @@ Also disables compiler features (such as integers and string manipulation
|
|||
support) that require extensions.
|
||||
.TP
|
||||
.B v6p
|
||||
Quakeforge extended v6 instructions.
|
||||
This is not compatible with older server, nor with most (any?) other Quake
|
||||
engine. It adds a variety of instructions and types, including integers,
|
||||
QuakeForge extended v6 instructions.
|
||||
This is not compatible with older servers, nor with most (any?) other Quake
|
||||
engines. It adds a variety of instructions and types, including integers,
|
||||
quaternions, pointers, doubles, structs, arrays and Objective-C style classes.
|
||||
.TP
|
||||
.B ruamoko
|
||||
Quakeforge SIMD instructions. This is currently under development
|
||||
and thus not the default.
|
||||
QuakeForge SIMD and stack instructions.
|
||||
.RE
|
||||
Defaults to v6 for traditional mode and v6p for advanced mode.
|
||||
Defaults to v6 for traditional mode, v6p for advanced mode, and ruamoko
|
||||
for Ruamoko mode (actually, trying to take Ruamoko's power after
|
||||
granting it may not end well).
|
||||
|
||||
|
||||
.SH "WARNING OPTIONS"
|
||||
|
@ -718,13 +730,13 @@ gold digits.
|
|||
\fB\-\-qccx\-escapes\fP has no effect on sequences that do not conflict.
|
||||
|
||||
|
||||
.SH TRADITIONAL VS ADVANCED
|
||||
Compared to \fBqcc\fP, \*[qfcc] has many advanced features and is much stricter
|
||||
about type checking.
|
||||
.SH TRADITIONAL VS ADVANCED VS RUAMOKO
|
||||
Compared to \fBqcc\fP, \*[qfcc] has many advanced features and is much
|
||||
stricter about type checking.
|
||||
\*[qfcc] also uses the same operator semantics and precedence rules as
|
||||
standard \fBC\fP.
|
||||
Unfortunately, this means that most older QuakeC code will not compile, or even
|
||||
worse, will compile incorrectly.
|
||||
Unfortunately, this means that most older QuakeC code will not compile,
|
||||
or even worse, will compile incorrectly.
|
||||
.P
|
||||
To address this situation, \*[qfcc] has a \*(lqtraditional\*(rq mode for
|
||||
compiling old progs.
|
||||
|
@ -732,20 +744,32 @@ This mode, enabled with \fB--traditional\fP or by default in \fBprogs.src\fP
|
|||
mode, removes the new keywords required by \*[qfcc]'s advanced features,
|
||||
converts new errors to warnings, some warnings to notices and inverts
|
||||
precedence order where required (eg, (!var & flag)).
|
||||
Traditional mode also affects several code generation options (as always, this
|
||||
can be overridden):
|
||||
Traditional mode also affects several code generation options (as
|
||||
always, this can be overridden):
|
||||
.IP \(bu 4
|
||||
code output is restricted to version 6 progs instructions
|
||||
.IP \(bu 4
|
||||
short circuit boolean logic is disabled
|
||||
.IP \(bu 4
|
||||
each function has a private area of data for its local variables (this wastes
|
||||
a lot of data space).
|
||||
each function has a private area of data for its local variables (this
|
||||
wastes a lot of data space).
|
||||
.P
|
||||
Advanced mode is simply \*[qfcc] in its natural state.
|
||||
Using \fB--advanced\fP, \*[qfcc] can be put in to advanced mode while using the
|
||||
\fBprogs.src\fP compilation mode.
|
||||
Advanced mode is \*[qfcc] in what was its natural state until the
|
||||
introduction of Ruamoko mode. Advanced mode adds several data types and
|
||||
Objective-C object oriented programming.
|
||||
Using \fB--advanced\fP, \*[qfcc] can be put in to advanced mode while
|
||||
using the \fBprogs.src\fP compilation mode.
|
||||
.P
|
||||
Ruamoko mode is \*[qfcc] in its natural state. On top of the features
|
||||
added by Advanced mode, Ruamoko mode adds SIMD types and instructions,
|
||||
and a data stack for locals and parameters.
|
||||
|
||||
.SH RUAMOKO PROGRAMMING LANGUAGE
|
||||
Ruamoko evolved from the original QuakeC language, gaining standard C
|
||||
syntax and most features (the char type is not supported, and function
|
||||
pointers are a little weird (design bug?)), Objective-C object oriented
|
||||
extensions, and (with the Ruamoko ISA) SIMD vectors and the ability to
|
||||
pass pointers to local variables to other functions.
|
||||
|
||||
.SH "FAQ"
|
||||
|
||||
|
@ -756,6 +780,11 @@ Sky-father, and Papatuanuku, the Earth-mother.
|
|||
Ruamoko is the god of volcanoes and earthquakes.
|
||||
For more information, see the Web site at <\fBhttp://maori.com/kmst1.htm\fP>.
|
||||
|
||||
.TP
|
||||
.B Why both Ruamoko and Raumoko?
|
||||
They are alternative spellings and pronunciations. Use whichever one you
|
||||
prefer.
|
||||
|
||||
.TP
|
||||
.B qfcc hangs
|
||||
This is almost always caused by qfcc incorrectly invoking \*[cpp].
|
||||
|
|
|
@ -142,7 +142,6 @@ usage (int status)
|
|||
printf (
|
||||
"Options:\n"
|
||||
" --advanced Advanced Ruamoko mode\n"
|
||||
" default for separate compilation mode\n"
|
||||
" --bug OPTION,... Set bug options\n"
|
||||
" -C, --code OPTION,... Set code generation options\n"
|
||||
" -c Only compile, don't link\n"
|
||||
|
@ -172,6 +171,10 @@ usage (int status)
|
|||
" C/QuakeForge sequences.\n"
|
||||
" -q, --quiet Inhibit usual output\n"
|
||||
" -r, --relocatable Incremental linking\n"
|
||||
" --raumoko Use both Ruamoko language features and the\n"
|
||||
" --ruamoko Ruamoko ISA, providing access to SIMD types\n"
|
||||
" and a stack for locals.\n"
|
||||
" default for separate compilation mode\n"
|
||||
" -S, --save-temps Do not delete temporary files\n"
|
||||
" -s, --source DIR Look for progs.src in DIR instead of \".\"\n"
|
||||
" --traditional Traditional QuakeC mode: implies v6only\n"
|
||||
|
@ -719,7 +722,7 @@ DecodeArgs (int argc, char **argv)
|
|||
options.code.vector_components = true;
|
||||
}
|
||||
if (!options.code.progsversion)
|
||||
options.code.progsversion = PROG_V6P_VERSION;
|
||||
options.code.progsversion = PROG_VERSION;
|
||||
if (!options.traditional) {
|
||||
// avanced=2 requires the Ruamoko ISA
|
||||
options.advanced = 2 - (options.code.progsversion < PROG_VERSION);
|
||||
|
|
Loading…
Reference in a new issue