Provided by: fteqcc_3343+svn3400-3build1_amd64 bug

NAME

       fteqcc - FTE QuakeC compiler

SYNOPSIS

       fteqcc [options]

DESCRIPTION

       This manual page documents briefly the fteqcc command.

       fteqcc  is  a  program that compiles QuakeC sourcecode to binaray game data of Quake1 or QuakeWorld based
       games.

OPTIONS

       --help Show summary of options.

       -Fautoproto
              enable automatic prototyping

       -Fwasm dump all assembler code to qc.asm

       -Kkeyword, -Kno-keyword
              turn language keywords on or off. Keywords available to  toggle  are:  asm,  break,  case,  class,
              const,  continue, default, entity, enum, enumflags, extern, float, for, goto, int, integer, noref,
              nosave, shared, state, string, struct, switch, thinktime, typedef, union, var and vector.

       -O0, -O1, -O2, -O3,
              use optimisation level between 0 and 3. With 0, no optimisation takes place, other values  include
              more or less of the options in the section OPTIMISATION.

       -src directory
              Specify a directory to look for source files (progs.src) in.

       -Wall  show all warnings

FORMAT

       fteqcc supports several output formats.

       -Tstandard, -Tq1, -Tquakec
              This is the default setting and generates code compatible with original Quake1.

       -Thexen2, -Th2
              Outputs Hexen2 compatible code.

       -Tkkqwsv, -Tkk7, -Tbigprogs, -Tversion7, -Tkkqwsv
              Generates KK Version 7 compatible progs

       -Tfte  Generates code specific to FTE Quake.

OPTIMISATION

       The following options may be used to fine-tune optimisation. Some of them are activated automatically.

       -Oassignments
              c = a*b is performed in one operation rather than two, and can cause older decompilers to fail.

       -Oshortenifs
              if  (!a)  was  traditionally compiled in two statements. This optimisation does it in one, but can
              cause some decompilers to get confused.

       -Ononvec_parms
              In the origional qcc, function parameters were specified as a vector store even for  floats.  This
              fixes that.

       -Oconstant_names
              strips  out  the  names  of  constants  from  your  progs,  resulting  in  smaller files. It makes
              decompilers leave out names or fabricate numerical ones.

       -Oconstant_name_strings
              strips out the names of string constants from your progs. This can break addons, so don't  use  it
              in those cases.

       -Odupconstdefs
              merge  definitions  of  constants  which  are the same value. Pay extra attention to assignment to
              constant warnings.

       -Onouplicatestrings
              compact the string table that is stored in the progs. It will be considerably smaller with this.

       -Olocals
              Strips out local names and definitions. This makes it REALLY hard to decompile

       -Ofunction_names
              This strips out the names of functions which are never called. Doesn't  make  much  of  an  impact
              though.

       -Ofilenames
              This  strips  out  the filenames of the progs. This can confuse the really old decompilers, but is
              nothing to the more recent ones.

       -Ounreferenced
              Removes the entries of unreferenced variables. Doesn't make a difference in well maintained code.

       -Ooverlaptemps
              Optimises the pr_globals count by overlapping temporaries. In QC, every  multiplication,  division
              or  operation  in general produces a temporary variable. This optimisation prevents excess, and in
              the case of Hexen2's gamecode, reduces the count by 50k. This is the most important  optimisation,
              ever.

       -Oconstantarithmatic
              5*6  actually  emits  an operation into the progs. This prevents that happening, effectivly making
              the compiler see 30

       -Oprecache_file
              Strip out stuff wasted used in function calls and strings to the precache_file builtin  (which  is
              actually a stub in quake).

       -Oreturn_only
              Functions  ending  in  a return statement do not need a done statement at the end of the function.
              This can confuse some decompilers, making functions appear larger than they were.

       -Ocompound_jumps
              This optimisation plays an effect mostly with nested if/else statements, instead of jumping to  an
              unconditional  jump  statement,  it'll  jump  to the final destination instead. This will bewilder
              decompilers.

       -Ostrip_functions
              Strips out the 'defs' of functions that were only ever called directly. This does not affect saved
              games.

       -Olocals_marshalling
              Store  all  locals  in one section of the pr_globals. Vastly reducing it. This effectivly does the
              job of overlaptemps. It's been noticed as buggy by a few, however, and the curcumstances where  it
              causes problems are not yet known.

       -Ovectorcals
              Where a function is called with just a vector, this causes the function call to store three floats
              instead of one vector. This can save a good number of pr_globals where those vectors contain  many
              duplicate coordinates but do not match entirly.

AUTHOR

       fteqcc    was    written    by    David    Walton   <acceptthis@users.sourceforge.net>   and   J.   Smith
       <timeserv@users.sourceforge.net>.

       This manual page was written by René van Bevern <rvb@debian.org>, for the Debian project (but may be used
       by others). Most information was obtained from comments in the source codes.

                                                  Juni 26, 2005                                        FTEQCC(1)