1 /********************* */
2 /*! \file configuration.h
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
12 ** \brief Interface to a public class that provides compile-time information
13 ** about the CVC4 library.
15 ** Interface to a public class that provides compile-time information
16 ** about the CVC4 library.
19 #include "cvc4_public.h"
21 #ifndef CVC4__CONFIGURATION_H
22 #define CVC4__CONFIGURATION_H
29 * Represents the (static) configuration of CVC4.
31 class CVC4_PUBLIC Configuration
{
33 /** Private default ctor: Disallow construction of this class */
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
;
44 static std::string
getName();
46 static bool isDebugBuild();
48 static bool isStatisticsBuild();
50 static bool isTracingBuild();
52 static bool isDumpingBuild();
54 static bool isMuzzledBuild();
56 static bool isAssertionBuild();
58 static bool isProofBuild();
60 static bool isCoverageBuild();
62 static bool isProfilingBuild();
64 static bool isAsanBuild();
66 static bool isUbsanBuild();
68 static bool isTsanBuild();
70 static bool isCompetitionBuild();
72 static std::string
getPackageName();
74 static std::string
getVersionString();
76 static unsigned getVersionMajor();
78 static unsigned getVersionMinor();
80 static unsigned getVersionRelease();
82 static std::string
getVersionExtra();
84 static std::string
copyright();
86 static std::string
about();
88 static bool licenseIsGpl();
90 static bool isBuiltWithGmp();
92 static bool isBuiltWithCln();
94 static bool isBuiltWithGlpk();
96 static bool isBuiltWithAbc();
98 static bool isBuiltWithCadical();
100 static bool isBuiltWithCryptominisat();
102 static bool isBuiltWithKissat();
104 static bool isBuiltWithDrat2Er();
106 static bool isBuiltWithReadline();
108 static bool isBuiltWithLfsc();
110 static bool isBuiltWithSymFPU();
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 *);
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 *);
126 static bool isGitBuild();
127 static const char* getGitBranchName();
128 static const char* getGitCommit();
129 static bool hasGitModifications();
130 static std::string
getGitId();
132 static std::string
getCompiler();
133 static std::string
getCompiledDateTime();
135 };/* class Configuration */
137 }/* CVC4 namespace */
139 #endif /* CVC4__CONFIGURATION_H */