mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-14 02:59:53 -06:00
Merge topic 'state-project-kind'
6c440ea3cecmake: Model normal and try-compile project kinds explicitly2065bd73cbcmState: Construct with mode Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6337
This commit is contained in:
@@ -2165,7 +2165,7 @@ bool cmCTestTestHandler::SetTestsProperties(
|
||||
|
||||
// Ensure we have complete triples otherwise the data is corrupt.
|
||||
if (triples.size() % 3 == 0) {
|
||||
cmState state;
|
||||
cmState state(cmState::Unknown);
|
||||
rt.Backtrace = cmListFileBacktrace(state.CreateBaseSnapshot());
|
||||
|
||||
// the first entry represents the top of the trace so we need to
|
||||
|
||||
@@ -548,7 +548,7 @@ void cmListFileBacktrace::PrintTitle(std::ostream& out) const
|
||||
}
|
||||
cmListFileContext lfc = this->TopEntry->Context;
|
||||
cmStateSnapshot bottom = this->GetBottom();
|
||||
if (!bottom.GetState()->GetIsInTryCompile()) {
|
||||
if (bottom.GetState()->GetProjectKind() == cmState::ProjectKind::Normal) {
|
||||
lfc.FilePath = cmSystemTools::RelativeIfUnder(
|
||||
bottom.GetState()->GetSourceDirectory(), lfc.FilePath);
|
||||
}
|
||||
@@ -579,7 +579,7 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& out) const
|
||||
out << "Call Stack (most recent call first):\n";
|
||||
}
|
||||
cmListFileContext lfc = cur->Context;
|
||||
if (!bottom.GetState()->GetIsInTryCompile()) {
|
||||
if (bottom.GetState()->GetProjectKind() == cmState::ProjectKind::Normal) {
|
||||
lfc.FilePath = cmSystemTools::RelativeIfUnder(
|
||||
bottom.GetState()->GetSourceDirectory(), lfc.FilePath);
|
||||
}
|
||||
|
||||
@@ -3567,8 +3567,8 @@ int cmMakefile::TryCompile(const std::string& srcdir,
|
||||
// make sure the same generator is used
|
||||
// use this program as the cmake to be run, it should not
|
||||
// be run that way but the cmake object requires a vailid path
|
||||
cmake cm(cmake::RoleProject, cmState::Project);
|
||||
cm.SetIsInTryCompile(true);
|
||||
cmake cm(cmake::RoleProject, cmState::Project,
|
||||
cmState::ProjectKind::TryCompile);
|
||||
auto gg = cm.CreateGlobalGenerator(this->GetGlobalGenerator()->GetName());
|
||||
if (!gg) {
|
||||
this->IssueMessage(MessageType::INTERNAL_ERROR,
|
||||
|
||||
@@ -26,7 +26,9 @@
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmake.h"
|
||||
|
||||
cmState::cmState()
|
||||
cmState::cmState(Mode mode, ProjectKind projectKind)
|
||||
: StateMode(mode)
|
||||
, StateProjectKind(projectKind)
|
||||
{
|
||||
this->CacheManager = cm::make_unique<cmCacheManager>();
|
||||
this->GlobVerificationManager = cm::make_unique<cmGlobVerificationManager>();
|
||||
@@ -381,16 +383,6 @@ void cmState::ClearEnabledLanguages()
|
||||
this->EnabledLanguages.clear();
|
||||
}
|
||||
|
||||
bool cmState::GetIsInTryCompile() const
|
||||
{
|
||||
return this->IsInTryCompile;
|
||||
}
|
||||
|
||||
void cmState::SetIsInTryCompile(bool b)
|
||||
{
|
||||
this->IsInTryCompile = b;
|
||||
}
|
||||
|
||||
bool cmState::GetIsGeneratorMultiConfig() const
|
||||
{
|
||||
return this->IsGeneratorMultiConfig;
|
||||
@@ -593,8 +585,9 @@ cmProp cmState::GetGlobalProperty(const std::string& prop)
|
||||
std::vector<std::string> commands = this->GetCommandNames();
|
||||
this->SetGlobalProperty("COMMANDS", cmJoin(commands, ";").c_str());
|
||||
} else if (prop == "IN_TRY_COMPILE") {
|
||||
this->SetGlobalProperty("IN_TRY_COMPILE",
|
||||
this->IsInTryCompile ? "1" : "0");
|
||||
this->SetGlobalProperty(
|
||||
"IN_TRY_COMPILE",
|
||||
this->StateProjectKind == ProjectKind::TryCompile ? "1" : "0");
|
||||
} else if (prop == "GENERATOR_IS_MULTI_CONFIG") {
|
||||
this->SetGlobalProperty("GENERATOR_IS_MULTI_CONFIG",
|
||||
this->IsGeneratorMultiConfig ? "1" : "0");
|
||||
@@ -771,17 +764,12 @@ unsigned int cmState::GetCacheMinorVersion() const
|
||||
|
||||
cmState::Mode cmState::GetMode() const
|
||||
{
|
||||
return this->CurrentMode;
|
||||
return this->StateMode;
|
||||
}
|
||||
|
||||
std::string cmState::GetModeString() const
|
||||
{
|
||||
return ModeToString(this->CurrentMode);
|
||||
}
|
||||
|
||||
void cmState::SetMode(cmState::Mode mode)
|
||||
{
|
||||
this->CurrentMode = mode;
|
||||
return ModeToString(this->StateMode);
|
||||
}
|
||||
|
||||
std::string cmState::ModeToString(cmState::Mode mode)
|
||||
@@ -803,6 +791,11 @@ std::string cmState::ModeToString(cmState::Mode mode)
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
cmState::ProjectKind cmState::GetProjectKind() const
|
||||
{
|
||||
return this->StateProjectKind;
|
||||
}
|
||||
|
||||
std::string const& cmState::GetBinaryDirectory() const
|
||||
{
|
||||
return this->BinaryDirectory;
|
||||
|
||||
@@ -35,12 +35,6 @@ class cmState
|
||||
friend class cmStateSnapshot;
|
||||
|
||||
public:
|
||||
cmState();
|
||||
~cmState();
|
||||
|
||||
cmState(const cmState&) = delete;
|
||||
cmState& operator=(const cmState&) = delete;
|
||||
|
||||
enum Mode
|
||||
{
|
||||
Unknown,
|
||||
@@ -51,6 +45,18 @@ public:
|
||||
CPack,
|
||||
};
|
||||
|
||||
enum class ProjectKind
|
||||
{
|
||||
Normal,
|
||||
TryCompile,
|
||||
};
|
||||
|
||||
cmState(Mode mode, ProjectKind projectKind = ProjectKind::Normal);
|
||||
~cmState();
|
||||
|
||||
cmState(const cmState&) = delete;
|
||||
cmState& operator=(const cmState&) = delete;
|
||||
|
||||
static const std::string& GetTargetTypeName(
|
||||
cmStateEnums::TargetType targetType);
|
||||
|
||||
@@ -141,9 +147,6 @@ public:
|
||||
void SetEnabledLanguages(std::vector<std::string> const& langs);
|
||||
void ClearEnabledLanguages();
|
||||
|
||||
bool GetIsInTryCompile() const;
|
||||
void SetIsInTryCompile(bool b);
|
||||
|
||||
bool GetIsGeneratorMultiConfig() const;
|
||||
void SetIsGeneratorMultiConfig(bool b);
|
||||
|
||||
@@ -207,10 +210,11 @@ public:
|
||||
|
||||
Mode GetMode() const;
|
||||
std::string GetModeString() const;
|
||||
void SetMode(Mode mode);
|
||||
|
||||
static std::string ModeToString(Mode mode);
|
||||
|
||||
ProjectKind GetProjectKind() const;
|
||||
|
||||
private:
|
||||
friend class cmake;
|
||||
void AddCacheEntry(const std::string& key, const char* value,
|
||||
@@ -248,7 +252,6 @@ private:
|
||||
|
||||
std::string SourceDirectory;
|
||||
std::string BinaryDirectory;
|
||||
bool IsInTryCompile = false;
|
||||
bool IsGeneratorMultiConfig = false;
|
||||
bool WindowsShell = false;
|
||||
bool WindowsVSIDE = false;
|
||||
@@ -258,5 +261,6 @@ private:
|
||||
bool NMake = false;
|
||||
bool MSYSShell = false;
|
||||
bool NinjaMulti = false;
|
||||
Mode CurrentMode = Unknown;
|
||||
Mode StateMode = Unknown;
|
||||
ProjectKind StateProjectKind = ProjectKind::Normal;
|
||||
};
|
||||
|
||||
@@ -156,17 +156,16 @@ static void cmWarnUnusedCliWarning(const std::string& variable, int /*unused*/,
|
||||
}
|
||||
#endif
|
||||
|
||||
cmake::cmake(Role role, cmState::Mode mode)
|
||||
cmake::cmake(Role role, cmState::Mode mode, cmState::ProjectKind projectKind)
|
||||
: CMakeWorkingDirectory(cmSystemTools::GetCurrentWorkingDirectory())
|
||||
, FileTimeCache(cm::make_unique<cmFileTimeCache>())
|
||||
#ifndef CMAKE_BOOTSTRAP
|
||||
, VariableWatch(cm::make_unique<cmVariableWatch>())
|
||||
#endif
|
||||
, State(cm::make_unique<cmState>())
|
||||
, State(cm::make_unique<cmState>(mode, projectKind))
|
||||
, Messenger(cm::make_unique<cmMessenger>())
|
||||
{
|
||||
this->TraceFile.close();
|
||||
this->State->SetMode(mode);
|
||||
this->CurrentSnapshot = this->State->CreateBaseSnapshot();
|
||||
|
||||
#ifdef __APPLE__
|
||||
@@ -1843,7 +1842,7 @@ int cmake::HandleDeleteCacheVariables(const std::string& var)
|
||||
std::vector<std::string> argsSplit = cmExpandedList(var, true);
|
||||
// erase the property to avoid infinite recursion
|
||||
this->State->SetGlobalProperty("__CMAKE_DELETE_CACHE_CHANGE_VARS_", "");
|
||||
if (this->State->GetIsInTryCompile()) {
|
||||
if (this->GetIsInTryCompile()) {
|
||||
return 0;
|
||||
}
|
||||
std::vector<SaveCacheEntry> saved;
|
||||
@@ -2111,7 +2110,7 @@ int cmake::ActualConfigure()
|
||||
// reset any system configuration information, except for when we are
|
||||
// InTryCompile. With TryCompile the system info is taken from the parent's
|
||||
// info to save time
|
||||
if (!this->State->GetIsInTryCompile()) {
|
||||
if (!this->GetIsInTryCompile()) {
|
||||
this->GlobalGenerator->ClearEnabledLanguages();
|
||||
|
||||
this->TruncateOutputLog("CMakeOutput.log");
|
||||
@@ -2622,19 +2621,14 @@ void cmake::SetProgressCallback(ProgressCallbackType f)
|
||||
|
||||
void cmake::UpdateProgress(const std::string& msg, float prog)
|
||||
{
|
||||
if (this->ProgressCallback && !this->State->GetIsInTryCompile()) {
|
||||
if (this->ProgressCallback && !this->GetIsInTryCompile()) {
|
||||
this->ProgressCallback(msg, prog);
|
||||
}
|
||||
}
|
||||
|
||||
bool cmake::GetIsInTryCompile() const
|
||||
{
|
||||
return this->State->GetIsInTryCompile();
|
||||
}
|
||||
|
||||
void cmake::SetIsInTryCompile(bool b)
|
||||
{
|
||||
this->State->SetIsInTryCompile(b);
|
||||
return this->State->GetProjectKind() == cmState::ProjectKind::TryCompile;
|
||||
}
|
||||
|
||||
void cmake::AppendGlobalGeneratorsDocumentation(
|
||||
|
||||
@@ -168,7 +168,8 @@ public:
|
||||
static const int DEFAULT_BUILD_PARALLEL_LEVEL = 0;
|
||||
|
||||
/// Default constructor
|
||||
cmake(Role role, cmState::Mode mode);
|
||||
cmake(Role role, cmState::Mode mode,
|
||||
cmState::ProjectKind projectKind = cmState::ProjectKind::Normal);
|
||||
/// Destructor
|
||||
~cmake();
|
||||
|
||||
@@ -356,7 +357,6 @@ public:
|
||||
|
||||
//! Is this cmake running as a result of a TRY_COMPILE command
|
||||
bool GetIsInTryCompile() const;
|
||||
void SetIsInTryCompile(bool b);
|
||||
|
||||
#ifndef CMAKE_BOOTSTRAP
|
||||
void SetWarningFromPreset(const std::string& name,
|
||||
|
||||
Reference in New Issue
Block a user