enable_language: Initialize system-specific generator info only once
Call SetSystemName, SetGeneratorPlatform, and SetGeneratorToolset exactly once after reading CMakeSystem.cmake, and not again on another call to enable_language() or project().
This commit is contained in:
parent
09ab207c66
commit
09c8ad9943
|
@ -438,7 +438,8 @@ cmGlobalGenerator::EnableLanguage(std::vector<std::string>const& languages,
|
||||||
|
|
||||||
// try and load the CMakeSystem.cmake if it is there
|
// try and load the CMakeSystem.cmake if it is there
|
||||||
std::string fpath = rootBin;
|
std::string fpath = rootBin;
|
||||||
if(!mf->GetDefinition("CMAKE_SYSTEM_LOADED"))
|
bool const readCMakeSystem = !mf->GetDefinition("CMAKE_SYSTEM_LOADED");
|
||||||
|
if(readCMakeSystem)
|
||||||
{
|
{
|
||||||
fpath += "/CMakeSystem.cmake";
|
fpath += "/CMakeSystem.cmake";
|
||||||
if(cmSystemTools::FileExists(fpath.c_str()))
|
if(cmSystemTools::FileExists(fpath.c_str()))
|
||||||
|
@ -472,28 +473,31 @@ cmGlobalGenerator::EnableLanguage(std::vector<std::string>const& languages,
|
||||||
mf->ReadListFile(0,fpath.c_str());
|
mf->ReadListFile(0,fpath.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tell the generator about the target system.
|
if(readCMakeSystem)
|
||||||
std::string system = mf->GetSafeDefinition("CMAKE_SYSTEM_NAME");
|
|
||||||
if(!this->SetSystemName(system, mf))
|
|
||||||
{
|
{
|
||||||
cmSystemTools::SetFatalErrorOccured();
|
// Tell the generator about the target system.
|
||||||
return;
|
std::string system = mf->GetSafeDefinition("CMAKE_SYSTEM_NAME");
|
||||||
}
|
if(!this->SetSystemName(system, mf))
|
||||||
|
{
|
||||||
|
cmSystemTools::SetFatalErrorOccured();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Tell the generator about the platform, if any.
|
// Tell the generator about the platform, if any.
|
||||||
std::string platform = mf->GetSafeDefinition("CMAKE_GENERATOR_PLATFORM");
|
std::string platform = mf->GetSafeDefinition("CMAKE_GENERATOR_PLATFORM");
|
||||||
if(!this->SetGeneratorPlatform(platform, mf))
|
if(!this->SetGeneratorPlatform(platform, mf))
|
||||||
{
|
{
|
||||||
cmSystemTools::SetFatalErrorOccured();
|
cmSystemTools::SetFatalErrorOccured();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tell the generator about the toolset, if any.
|
// Tell the generator about the toolset, if any.
|
||||||
std::string toolset = mf->GetSafeDefinition("CMAKE_GENERATOR_TOOLSET");
|
std::string toolset = mf->GetSafeDefinition("CMAKE_GENERATOR_TOOLSET");
|
||||||
if(!this->SetGeneratorToolset(toolset, mf))
|
if(!this->SetGeneratorToolset(toolset, mf))
|
||||||
{
|
{
|
||||||
cmSystemTools::SetFatalErrorOccured();
|
cmSystemTools::SetFatalErrorOccured();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// **** Load the system specific initialization if not yet loaded
|
// **** Load the system specific initialization if not yet loaded
|
||||||
|
|
Loading…
Reference in New Issue