/* 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 #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(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("message-v1"); // WriteMessageEvent 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(); }