2 #ifndef ICEDB_HPP_VERSIONING 3 #define ICEDB_HPP_VERSIONING 13 #include "cmake-settings.h" 16 #define QUOTE(str) #str 17 #define EXPAND_AND_QUOTE(str) QUOTE(str) 25 namespace versioning {
29 for (
size_t i = 0; i < versionInfo::V_MAX_INTS; ++i) out.
vn[i] = 0;
30 for (
size_t i = 0; i < versionInfo::V_MAX_BOOLS; ++i) out.
vb[i] =
false;
31 out.
vn[versionInfo::V_VERSIONINFO] = 1;
39 out.
vn[versionInfo::V_MAJOR] = libicedb_MAJOR;
40 out.
vn[versionInfo::V_MINOR] = libicedb_MINOR;
41 out.
vn[versionInfo::V_REVISION] = libicedb_REVISION;
45 out.
vn[versionInfo::V_GNUC_MAJ] = __GNUC__;
46 out.
vn[versionInfo::V_GNUC_MIN] = __GNUC_MINOR__;
47 out.
vn[versionInfo::V_GNUC_PATCH] = __GNUC_PATCHLEVEL__;
50 out.
vn[versionInfo::V_MINGW_MAJ] = __MINGW32_MAJOR_VERSION;
51 out.
vn[versionInfo::V_MINGW_MIN] = __MINGW32_MINOR_VERSION;
54 out.
vn[versionInfo::V_SUNPRO] = __SUNPRO_CC;
57 out.
vn[versionInfo::V_PATHCC_MAJ] = __PATHCC__;
58 out.
vn[versionInfo::V_PATHCC_MIN] = __PATHCC_MINOR__;
59 out.
vn[versionInfo::V_PATHCC_PATCH] = __PATHCC_PATCHLEVEL__;
62 out.
vb[versionInfo::V_LLVM] =
true;
65 out.
vn[versionInfo::V_CLANG_MAJ] = __clang_major__;
66 out.
vn[versionInfo::V_CLANG_MIN] = __clang_minor__;
67 out.
vn[versionInfo::V_CLANG_PATCH] = __clang_patchlevel__;
69 #ifdef __INTEL_COMPILER 70 out.
vn[versionInfo::V_INTEL] = __INTEL_COMPILER;
71 out.
vn[versionInfo::V_INTEL_DATE] = __INTEL_COMPILER_BUILD_DATE;
74 out.
vn[versionInfo::V_MSCVER] = _MSC_FULL_VER;
76 #ifdef BOOST_LIB_VERSION 77 inline_strncpy_s(out.
vboost, versionInfo::charmax, BOOST_LIB_VERSION, versionInfo::charmax);
80 out.
vb[versionInfo::V_DEBUG] =
true;
83 out.
vb[versionInfo::V_OPENMP] =
true;
86 out.
vb[versionInfo::V_AMD64] =
true;
89 out.
vb[versionInfo::V_X64] =
true;
92 out.
vb[versionInfo::V_UNIX] =
true;
95 out.
vb[versionInfo::V_APPLE] =
true;
98 out.
vb[versionInfo::V_WIN32] =
true;
118 out <<
"Compiled on " << v.
vdate <<
" at " << v.
vtime << std::endl;
119 out <<
"Version " << v.
vn[versionInfo::V_MAJOR] <<
"." << v.
vn[versionInfo::V_MINOR]
120 <<
"." << v.
vn[versionInfo::V_REVISION] << std::endl;
123 if (v.
vn[versionInfo::V_SVNREVISION]) out <<
"SVN Revision " << v.
vn[versionInfo::V_SVNREVISION] << std::endl;
124 if (v.
vsdate[0] !=
'\0') out <<
"SVN Revision Date: " << v.
vsdate << std::endl;
125 if (v.
vssource[0] !=
'\0') out <<
"SVN Source: " << v.
vssource << std::endl;
126 if (v.
vsuuid[0] !=
'\0') out <<
"SVN UUID: " << v.
vsuuid << std::endl;
127 if (v.
vb[versionInfo::V_DEBUG]) out <<
"Debug Version" << std::endl;
128 else out <<
"Release Version" << std::endl;
129 if (v.
vb[versionInfo::V_OPENMP]) out <<
"OpenMP enabled in Compiler" << std::endl;
130 else out <<
"OpenMP disabled in Compiler" << std::endl;
131 if (v.
vb[versionInfo::V_AMD64] || v.
vb[versionInfo::V_X64]) out <<
"64-bit build" << std::endl;
132 if (v.
vb[versionInfo::V_UNIX]) out <<
"Unix / Linux Compile" << std::endl;
133 if (v.
vb[versionInfo::V_APPLE]) out <<
"Mac Os X Compile" << std::endl;
134 if (v.
vb[versionInfo::V_WIN32]) out <<
"Windows Compile" << std::endl;
136 if (v.
vn[versionInfo::V_GNUC_MAJ])
137 out <<
"GNU Compiler Suite " << v.
vn[versionInfo::V_GNUC_MAJ] <<
"." 138 << v.
vn[versionInfo::V_GNUC_MIN] <<
"." << v.
vn[versionInfo::V_GNUC_PATCH] << std::endl;
139 if (v.
vn[versionInfo::V_MINGW_MAJ])
140 out <<
"MinGW Compiler Suite " << v.
vn[versionInfo::V_MINGW_MAJ] <<
"." 141 << v.
vn[versionInfo::V_MINGW_MIN] << std::endl;
142 if (v.
vn[versionInfo::V_SUNPRO])
143 out <<
"Sun Studio Compiler Suite " << v.
vn[versionInfo::V_SUNPRO] << std::endl;
144 if (v.
vn[versionInfo::V_PATHCC_MAJ])
145 out <<
"EKOPath Compiler " << v.
vn[versionInfo::V_PATHCC_MAJ] <<
"." 146 << v.
vn[versionInfo::V_PATHCC_MIN] <<
"." << v.
vn[versionInfo::V_PATHCC_PATCH] << std::endl;
147 if (v.
vb[versionInfo::V_LLVM]) out <<
"LLVM Compiler Suite" << std::endl;
148 if (v.
vn[versionInfo::V_CLANG_MAJ])
149 out <<
"clang compiler " << v.
vn[versionInfo::V_CLANG_MAJ] <<
"." 150 << v.
vn[versionInfo::V_CLANG_MIN] <<
"." << v.
vn[versionInfo::V_CLANG_PATCH] << std::endl;
151 if (v.
vn[versionInfo::V_INTEL])
152 out <<
"Intel Suite " << v.
vn[versionInfo::V_INTEL]
153 <<
" Date " << v.
vn[versionInfo::V_INTEL_DATE] << std::endl;
154 if (v.
vn[versionInfo::V_MSCVER])
155 out <<
"Microsoft Visual Studio Compiler Version " << v.
vn[versionInfo::V_MSCVER] << std::endl;
156 if (v.
vboost[0]) out <<
"Boost version " << v.
vboost << std::endl;
172 #undef EXPAND_AND_QUOTE
icedb::versioning::versionInfo_p p
versionInfo_p genVersionInfo()
ICEDB_BEGIN_DECL_C ICEDB_SYMBOL_SHARED size_t ICEDB_COMPAT_strncpy_s(char *dest, size_t destSz, const char *src, size_t srcSz)
void debug_preamble(std::ostream &out=std::cerr)
std::shared_ptr< const versionInfo > versionInfo_p