Update copyright headers.
[cvc5.git] / src / base / configuration.h
1 /********************* */
2 /*! \file configuration.h
3 ** \verbatim
4 ** Top contributors (to current version):
5 ** Morgan Deters, Francois Bobot, Mathias Preiner
6 ** This file is part of the CVC4 project.
7 ** Copyright (c) 2009-2020 by the authors listed in the file AUTHORS
8 ** in the top-level source directory) and their institutional affiliations.
9 ** All rights reserved. See the file COPYING in the top-level source
10 ** directory for licensing information.\endverbatim
11 **
12 ** \brief Interface to a public class that provides compile-time information
13 ** about the CVC4 library.
14 **
15 ** Interface to a public class that provides compile-time information
16 ** about the CVC4 library.
17 **/
18
19 #include "cvc4_public.h"
20
21 #ifndef CVC4__CONFIGURATION_H
22 #define CVC4__CONFIGURATION_H
23
24 #include <string>
25
26 namespace CVC4 {
27
28 /**
29 * Represents the (static) configuration of CVC4.
30 */
31 class CVC4_PUBLIC Configuration {
32 private:
33 /** Private default ctor: Disallow construction of this class */
34 Configuration();
35
36 // these constants are filled in by the build system
37 static const bool IS_GIT_BUILD;
38 static const char* const GIT_BRANCH_NAME;
39 static const char* const GIT_COMMIT;
40 static const bool GIT_HAS_MODIFICATIONS;
41
42 public:
43
44 static std::string getName();
45
46 static bool isDebugBuild();
47
48 static bool isStatisticsBuild();
49
50 static bool isTracingBuild();
51
52 static bool isDumpingBuild();
53
54 static bool isMuzzledBuild();
55
56 static bool isAssertionBuild();
57
58 static bool isProofBuild();
59
60 static bool isCoverageBuild();
61
62 static bool isProfilingBuild();
63
64 static bool isAsanBuild();
65
66 static bool isUbsanBuild();
67
68 static bool isTsanBuild();
69
70 static bool isCompetitionBuild();
71
72 static std::string getPackageName();
73
74 static std::string getVersionString();
75
76 static unsigned getVersionMajor();
77
78 static unsigned getVersionMinor();
79
80 static unsigned getVersionRelease();
81
82 static std::string getVersionExtra();
83
84 static std::string copyright();
85
86 static std::string about();
87
88 static bool licenseIsGpl();
89
90 static bool isBuiltWithGmp();
91
92 static bool isBuiltWithCln();
93
94 static bool isBuiltWithGlpk();
95
96 static bool isBuiltWithAbc();
97
98 static bool isBuiltWithCadical();
99
100 static bool isBuiltWithCryptominisat();
101
102 static bool isBuiltWithKissat();
103
104 static bool isBuiltWithDrat2Er();
105
106 static bool isBuiltWithReadline();
107
108 static bool isBuiltWithLfsc();
109
110 static bool isBuiltWithSymFPU();
111
112 /* Return the number of debug tags */
113 static unsigned getNumDebugTags();
114 /* Return a sorted array of the debug tags name */
115 static char const* const* getDebugTags();
116 /* Test if the given argument is a known debug tag name */
117 static bool isDebugTag(char const *);
118
119 /* Return the number of trace tags */
120 static unsigned getNumTraceTags();
121 /* Return a sorted array of the trace tags name */
122 static char const* const* getTraceTags();
123 /* Test if the given argument is a known trace tag name */
124 static bool isTraceTag(char const *);
125
126 static bool isGitBuild();
127 static const char* getGitBranchName();
128 static const char* getGitCommit();
129 static bool hasGitModifications();
130 static std::string getGitId();
131
132 static std::string getCompiler();
133 static std::string getCompiledDateTime();
134
135 };/* class Configuration */
136
137 }/* CVC4 namespace */
138
139 #endif /* CVC4__CONFIGURATION_H */