mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
The file API code used unsigned long to hold the major version in most places, but not all. Some places used unsigned int, and an important one of those is the cmFileApi::BuildVersion() function. As a result, it has never been safe for a large value not representable by an unsigned int to be used in these variables. Convert all of the file API version number variables and function arguments to use unsigned int consistently. This avoids any size mismatch warnings when passing values around. They also don't need to be unsigned long, as we never expect version numbers to be anything even close to what an unsigned int cannot represent.
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 int Version;
|
|
|
|
Json::Value DumpPath();
|
|
Json::Value DumpEventKindNames();
|
|
|
|
public:
|
|
ConfigureLog(cmFileAPI& fileAPI, unsigned int version);
|
|
Json::Value Dump();
|
|
};
|
|
|
|
ConfigureLog::ConfigureLog(cmFileAPI& fileAPI, unsigned int 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
|
|
eventKindNames.append("find_package-v1"); // WriteFindPackageEvent
|
|
}
|
|
return eventKindNames;
|
|
}
|
|
}
|
|
|
|
Json::Value cmFileAPIConfigureLogDump(cmFileAPI& fileAPI, unsigned int version)
|
|
{
|
|
ConfigureLog configureLog(fileAPI, version);
|
|
return configureLog.Dump();
|
|
}
|