Line data Source code
1 1 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : /// \file
5 : /// Declares function info_from_build.
6 :
7 : #pragma once
8 :
9 : #include <string>
10 :
11 : /*!
12 : * \ingroup LoggingGroup
13 : * \brief Information about the version, date, host, git commit, and link time
14 : *
15 : * The information returned by this function is invaluable for identifying
16 : * the version of the code used in a simulation, as well as which host, the
17 : * date the code was compiled, and the time of linkage.
18 : */
19 1 : std::string info_from_build();
20 :
21 : /*!
22 : * \ingroup LoggingGroup
23 : * \brief Returns a string containing the copyright and license info for
24 : * SpECTRE and its dependencies.
25 : */
26 1 : std::string copyright_and_license_info();
27 :
28 : // We declare these functions `extern "C"` so their symbols are not mangled and
29 : // we can ignore that they are undefined until link time (see `CMakeLists.txt`).
30 : // Note that the `std::string` return type is not compatible with C, but that's
31 : // OK as long as we're not calling or defining the functions in C. See
32 : // Microsoft's C4190:
33 : // https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4190
34 : #if defined(__clang__)
35 : #pragma GCC diagnostic push
36 : #pragma GCC diagnostic ignored "-Wreturn-type-c-linkage"
37 : #endif // defined(__clang__)
38 : /*!
39 : * \ingroup LoggingGroup
40 : * \brief The time and date the executable was linked
41 : */
42 1 : extern "C" std::string link_date();
43 : /*!
44 : * \ingroup LoggingGroup
45 : * \brief Name of the linked executable
46 : */
47 1 : extern "C" std::string executable_name();
48 : /*!
49 : * \ingroup LoggingGroup
50 : * \brief The git description at the time the executable was linked
51 : */
52 1 : extern "C" std::string git_description();
53 : /*!
54 : * \ingroup LoggingGroup
55 : * \brief The git branch at the time the executable was linked
56 : */
57 1 : extern "C" std::string git_branch();
58 : #if defined(__clang__)
59 : #pragma GCC diagnostic pop
60 : #endif // defined(__clang__)
61 :
62 : /*!
63 : * \ingroup LoggingGroup
64 : * \brief Retrieve a string containing the current version of SpECTRE
65 : */
66 1 : std::string spectre_version();
67 :
68 : /*!
69 : * \ingroup LoggingGroup
70 : * \brief Returns the path to the Unit test directory.
71 : */
72 1 : std::string unit_test_src_path();
73 :
74 : /*!
75 : * \ingroup LoggingGroup
76 : * \brief Returns the path to the Unit test directory in the build directory.
77 : */
78 1 : std::string unit_test_build_path();
|