diff options
author | Brad King <brad.king@kitware.com> | 2022-12-12 22:59:41 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2022-12-17 13:52:04 (GMT) |
commit | d811d86fd7f9644876e9d3605937edffa5c8a9d8 (patch) | |
tree | 7359c796a0ec5bf273eedd924a2753980176cc8d /Source/cmFileAPIConfigureLog.cxx | |
parent | 02599da236fd22db0dcfb6503194e5bad086aea9 (diff) | |
download | CMake-d811d86fd7f9644876e9d3605937edffa5c8a9d8.zip CMake-d811d86fd7f9644876e9d3605937edffa5c8a9d8.tar.gz CMake-d811d86fd7f9644876e9d3605937edffa5c8a9d8.tar.bz2 |
FileAPI: Add "configureLog" object kind
Provide clients with a way to get a known set of configure log event
versions.
Issue: #23200
Diffstat (limited to 'Source/cmFileAPIConfigureLog.cxx')
-rw-r--r-- | Source/cmFileAPIConfigureLog.cxx | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/Source/cmFileAPIConfigureLog.cxx b/Source/cmFileAPIConfigureLog.cxx new file mode 100644 index 0000000..50189cb --- /dev/null +++ b/Source/cmFileAPIConfigureLog.cxx @@ -0,0 +1,67 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#include "cmFileAPIConfigureLog.h" + +#include <cm3p/json/value.h> + +#include "cmFileAPI.h" +#include "cmStringAlgorithms.h" +#include "cmake.h" + +namespace { + +class ConfigureLog +{ + cmFileAPI& FileAPI; + unsigned long Version; + + Json::Value DumpPath(); + Json::Value DumpEventKindNames(); + +public: + ConfigureLog(cmFileAPI& fileAPI, unsigned long version); + Json::Value Dump(); +}; + +ConfigureLog::ConfigureLog(cmFileAPI& fileAPI, unsigned long version) + : FileAPI(fileAPI) + , Version(version) +{ + static_cast<void>(this->Version); +} + +Json::Value ConfigureLog::Dump() +{ + Json::Value configureLog = Json::objectValue; + configureLog["path"] = this->DumpPath(); + configureLog["eventKindNames"] = this->DumpEventKindNames(); + return configureLog; +} + +Json::Value ConfigureLog::DumpPath() +{ + return cmStrCat(this->FileAPI.GetCMakeInstance()->GetHomeOutputDirectory(), + "/CMakeFiles/CMakeConfigureLog.yaml"); +} + +Json::Value ConfigureLog::DumpEventKindNames() +{ + // Report at most one version of each event kind. + // If a new event kind is added, increment ConfigureLogV1Minor. + // If a new version of an existing event kind is added, a new + // major version of the configureLog object kind is needed. + Json::Value eventKindNames = Json::arrayValue; + if (this->Version == 1) { + eventKindNames.append("try_compile-v1"); // WriteTryCompileEvent + eventKindNames.append("try_run-v1"); // WriteTryRunEvent + } + return eventKindNames; +} +} + +Json::Value cmFileAPIConfigureLogDump(cmFileAPI& fileAPI, + unsigned long version) +{ + ConfigureLog configureLog(fileAPI, version); + return configureLog.Dump(); +} |