quakeforge/tools/qfcc/include/options.h
Bill Currie f3770cc647 [qfcc] Add --ruamoko command line option and pragma
The command line option works the same way as
--advanced/traditional/extended, as does the pragma. As well, raumoko
(alternative spelling) can be used because both are legitimate and some
people may prefer one spelling over the other.

As always, use of the pragma is at one's own risk: its intended use is
forcing the target in the unit tests.
2022-02-04 09:27:07 +09:00

128 lines
4.6 KiB
C

/*
options.h
command line options handlnig
Copyright (C) 2001 Jeff Teunissen <deek@d2dc.net>
Author: Jeff Teunissen <deek@d2dc.net>
Date: 2002/06/04
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to:
Free Software Foundation, Inc.
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA
*/
#ifndef __options_h
#define __options_h
#include "QF/qtypes.h"
typedef struct {
qboolean cow; // Turn constants into variables if written to
qboolean crc; // Write progsdef.h crc to progs.dat
qboolean debug; // Generate debug info for the engine
qboolean short_circuit; // short circuit logic for && and ||
qboolean optimize; // perform optimizations
qboolean fast_float; // use floats directly in ifs
qboolean vector_calls; // use floats instead of vectors for constant function args
qboolean local_merging; // merge function locals into one block
unsigned progsversion; // Progs version to generate code for
qboolean vector_components; // add *_[xyz] symbols for vectors
qboolean ifstring; // expand if (str) to if (str != "")
qboolean const_initializers; // initialied globals are constant
qboolean promote_float; // promote float through ...
} code_options_t;
typedef struct {
qboolean promote; // Promote warnings to errors
qboolean cow; // Warn on copy-on-write detection
qboolean undefined_function; // Warn on undefined function use
qboolean uninited_variable; // Warn on use of uninitialized vars
qboolean vararg_integer; // Warn on passing an integer to vararg func
qboolean integer_divide; // Warn on integer constant division
qboolean interface_check; // Warn for methods not in interface
qboolean unused; // Warn on unused local variables
qboolean executable; // Warn on expressions with no effect
qboolean traditional; // Warn on bogus constructs allowed by qcc
qboolean precedence; // Warn on precedence issues
qboolean initializer; // Warn on excessive initializer elements
qboolean unimplemented; // Warn on unimplemented class methods
qboolean redeclared; // Warn on redeclared local variables
qboolean enum_switch; // Warn on unhandled enum values in switch
} warn_options_t;
typedef struct {
qboolean promote; // Promote notices to warnings
qboolean silent; // don't even bother (overrides promote)
} notice_options_t;
typedef struct {
qboolean promote; // Promote bugs to internal errors
qboolean silent; // don't even bother (overrides promote)
} bug_options_t;
typedef struct {
qboolean initial;
qboolean thread;
qboolean dead;
qboolean final;
qboolean dags;
qboolean expr;
qboolean statements;
qboolean reaching;
qboolean live;
qboolean flow;
qboolean post;
} blockdot_options_t;
typedef struct {
code_options_t code; // Code generation options
warn_options_t warnings; // Warning options
notice_options_t notices; // Notice options
bug_options_t bug; // Bug options
blockdot_options_t block_dot; // Statement block flow diagrams
int verbosity; // 0=silent, goes up to 2 currently
qboolean single_cpp; // process progs.src into a series of
// #include directives and then compile
// that
qboolean no_default_paths; // no default -I or -L
qboolean save_temps; // save temporary files
qboolean files_dat; // generate files.dat
qboolean frames_files; // generate <basename>.frame files
qboolean progdefs_h; // generate progdefs.h
qboolean qccx_escapes; // use qccx escapes instead of standard C
int traditional; // behave more like qcc
int advanced; // behold the power of Ruamoko
qboolean compile; // serparate compilation mode
qboolean partial_link; // partial linking
qboolean preprocess_only;// run only cpp, don't compile
qboolean gzip; // compress qfo files when writing
const char *output_file;
const char *debug_file;
} options_t;
extern options_t options;
int DecodeArgs (int argc, char **argv);
extern const char *progs_src;
extern const char **source_files;
extern const char *this_program;
extern const char *sourcedir;
#endif//__options_h