Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
export enum OPTIMISATION {
/** Reduce compilation time and make debugging produce the expected results. This is the default. */
DEFAULT = '0',
/** Optimize. Optimizing compilation takes somewhat more time, and a lot more memory for a large function. */
LOW = '1',
/** Optimize even more. GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff. */
MEDIUM = '2',
/** Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the -finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload, -ftree-vectorize and -fipa-cp-clone options. */
HIGH = '3',
/** Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimizations designed to reduce code size. */
FILESIZE = 's',
/** O3 with fast calculations */
FAST = 'fast'
};
export enum STAGES {
/** Stop after the preprocessing stage; do not run the compiler proper. */
PREPROCESSING = '-E',
/** Compile or assemble the source files, but do not link. */
COMPILE = '-c'
};
export enum WARN {
/** Log all warnings */
ALL = 'all',
/** Warn when G++ generates code that is probably not compatible with the vendor-neutral C ++ ABI. */
ABI = 'abi',
/** Warn when a class seems unusable because all the constructors or destructors in that class are private, and it has neither friends nor public static member functions. */
UNUSABLE = 'ctor-dtor-privacy',
/** Warn when a class has virtual functions and accessible non-virtual destructor, in which case it would be possible but unsafe to delete an instance of a derived class through a pointer to the base class. */
NON_VIRTUAL = 'non-virtual-dtor',
/** Warn when the order of member initializers given in the code does not match the order in which they must be executed. */
REORDER = 'reorder',
/** Warn about violations of the following style guidelines from Scott Meyers' Effective C ++ book */
EFFECTIVE = 'effc++',
/** Warn also about the use of an uncasted "NULL" as sentinel. */
NULL_SENTINEL = 'strict-null-sentinel',
/** Disable warnings when non-templatized friend functions are declared within a template. */
NON_TEMPLATIZED_FRIENDS = 'no-non-template-friend',
/** Warn if an old-style (C-style) cast to a non-void type is used within a C ++ program. */
OLD_CAST = 'old-style-cast',
/** Warn when a function declaration hides virtual functions from a base class. */
OVERLOADED_VIRTUAL = 'overloaded-virtual',
/** Disable the diagnostic for converting a bound pointer to member function to a plain pointer. */
PMF_CONVERSIONS = 'no-pmf-conversions',
/** Warn when overload resolution chooses a promotion from unsigned or enumerated type to a signed type, over a conversion to an unsigned type of the same size. */
OVERLOADED_RESOLUTION = 'sign-promo'
};
export interface CompilerOptions {
/** What optimisation level to use when compiling */
optimisation?: OPTIMISATION,
/** If specified, what earlier stage should the compiler stop at */
outputAfter?: STAGES,
/** Make GCC use pipes instead of temporary files? */
usePipes?: boolean,
/** What warnings should the compiler display? */
warning?: WARN[]
};
export interface ProjectOptions extends CompilerOptions {
/** Output file */
output?: string,
/** Header directories to be included, -I */
includes?: string[],
/** Library directories to be included, -L */
libraries?: string[],
/** Output logs when compiling */
log: boolean
};
export interface GCCOptions extends ProjectOptions {
/** Use ANSI standard? */
useANSI?: boolean,
/** Combine source files when compiling? */
combineSourceFiles?: boolean,
/** Standard to use when compiling */
std?: 'c90' | 'iso9899:1990' | 'iso9899:199409' | 'c99' | 'c9x' | 'iso9899:1999' | 'iso9899:199x' | 'c11' | 'iso9899:2011' | 'c17' | 'iso9899:2017' | 'gnu89' | 'gnu90' | 'gnu99' | 'gnu11'
};
export interface GPPOptions extends ProjectOptions {
/** Standard to use when compiling */
std?: 'c++98' | 'c++03' | 'c++11' | 'c++14' | 'c++17' | 'gnu++98' | 'gnu++11' | 'gnu++14' | 'gnu++17'
};