view dmd/Param.d @ 178:e3afd1303184

Many small bugs fixed Made all classes derive from TObject to detect memory leaks (functionality is disabled for now) Began work on overriding backend memory allocations (to avoid memory leaks)
author korDen
date Sun, 17 Oct 2010 07:42:00 +0400
parents 60bb0fe4563e
children cd48cb899aee
line wrap: on
line source

module dmd.Param;

import dmd.common;
import dmd.Array;
import dmd.OutBuffer;

// Put command line switches in here
struct Param
{
    bool obj;		// write object file
    bool link;		// perform link
    bool lib;		// write library file instead of object file(s)
    bool multiobj;	// break one object file into multiple ones
    bool oneobj;	// write one object file instead of multiple ones
    bool trace;		// insert profiling hooks
    bool quiet;		// suppress non-error messages
    bool verbose;	// verbose compile
    bool vtls;		// identify thread local variables
    byte symdebug;	// insert debug symbolic information
    bool optimize;	// run optimizer
    bool cpu;		// target CPU
    bool isX86_64;	// generate X86_64 bit code
    bool isLinux;	// generate code for linux
    bool isOSX;		// generate code for Mac OSX
    bool isWindows;	// generate code for Windows
    bool isFreeBSD;	// generate code for FreeBSD
    bool isSolaris;	// generate code for Solaris
    bool scheduler;	// which scheduler to use
    bool useDeprecated;	// allow use of deprecated features
    bool useAssert;	// generate runtime code for assert()'s
    bool useInvariants;	// generate class invariant checks
    bool useIn;		// generate precondition checks
    bool useOut;	// generate postcondition checks
    byte useArrayBounds; // 0: no array bounds checks
			 // 1: array bounds checks for safe functions only
			 // 2: array bounds checks for all functions
    bool noboundscheck;	// no array bounds checking at all
    bool useSwitchError; // check for switches without a default
    bool useUnitTests;	// generate unittest code
    bool useInline;	// inline expand functions
    bool release;	// build release version
    bool preservePaths;	// !=0 means don't strip path from source file
    bool warnings;	// enable warnings
    bool pic;		// generate position-independent-code for shared libs
    bool cov;		// generate code coverage data
    bool nofloat;	// code should not pull in floating point support
    byte Dversion;	// D version number
    bool ignoreUnsupportedPragmas;	// rather than error on them

    string argv0;	// program name
    Array imppath;	// array of char*'s of where to look for import modules
    Array fileImppath;	// array of char*'s of where to look for file import modules
    string objdir;	// .obj/.lib file output directory
    string objname;	// .obj file output name
    string libname;	// .lib file output name

    bool doDocComments;	// process embedded documentation comments
    string docdir;	// write documentation file to docdir directory
    string docname;	// write documentation file to docname
    Array ddocfiles;	// macro include files for Ddoc

    bool doHdrGeneration;	// process embedded documentation comments
    string hdrdir;		// write 'header' file to docdir directory
    string hdrname;		// write 'header' file to docname

	bool doXGeneration; // write JSON file
	string xfilename;	// write JSON file to xfilename

    uint debuglevel;	// debug level
    Vector!string debugids;		// debug identifiers

    uint versionlevel;	// version level
    Vector!(string) versionids;		// version identifiers

    bool dump_source;

    const(char)* defaultlibname;	// default library for non-debug builds
    const(char)* debuglibname;	// default library for debug builds

    string moduleDepsFile;	// filename for deps output
    OutBuffer moduleDeps;	// contents to be written to deps file

    // Hidden debug switches
    bool debuga;
    bool debugb;
    bool debugc;
    bool debugf;
    bool debugr;
    bool debugw;
    bool debugx;
    bool debugy;

    bool run;		// run resulting executable
    size_t runargs_length;
    string[] runargs;	// arguments for executable

    // Linker stuff
    Array objfiles;
    Array linkswitches;
    Array libfiles;
    string deffile;
    string resfile;
    string exefile;
}