mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 22:30:13 -06:00
Record `find_` command events in the configure log, except `find_package` as it is far more complicated (and will have its own event kind). Note that testing only generates the events of interest, there is no verification. Also note that testing that the "found" to "notfound" transition causes an event is not testable because a truthy value in the variable skips any kind of verification or other logic beyond normalization. Co-Authored-by: Ryan Krattiger <ryan.krattiger@kitware.com> See: #24833
70 lines
1.9 KiB
C++
70 lines
1.9 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file LICENSE.rst 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("message-v1"); // WriteMessageEvent
|
|
eventKindNames.append("try_compile-v1"); // WriteTryCompileEvent
|
|
eventKindNames.append("try_run-v1"); // WriteTryRunEvent
|
|
eventKindNames.append("find-v1"); // WriteFindBaseEvent
|
|
}
|
|
return eventKindNames;
|
|
}
|
|
}
|
|
|
|
Json::Value cmFileAPIConfigureLogDump(cmFileAPI& fileAPI,
|
|
unsigned long version)
|
|
{
|
|
ConfigureLog configureLog(fileAPI, version);
|
|
return configureLog.Dump();
|
|
}
|