ENH: Pass config to cmTarget::GetLinkerLanguage
This passes the build configuration to most GetLinkerLanguage calls. In the future the linker language will account for targets linked in each configuration.
This commit is contained in:
parent
a3a046643a
commit
173448d988
|
@ -264,7 +264,7 @@ cmComputeLinkInformation
|
||||||
this->OrderDependentRPath = 0;
|
this->OrderDependentRPath = 0;
|
||||||
|
|
||||||
// Get the language used for linking this target.
|
// Get the language used for linking this target.
|
||||||
this->LinkLanguage = this->Target->GetLinkerLanguage();
|
this->LinkLanguage = this->Target->GetLinkerLanguage(config);
|
||||||
if(!this->LinkLanguage)
|
if(!this->LinkLanguage)
|
||||||
{
|
{
|
||||||
// The Compute method will do nothing, so skip the rest of the
|
// The Compute method will do nothing, so skip the rest of the
|
||||||
|
|
|
@ -1378,7 +1378,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
|
||||||
bool shared = ((target.GetType() == cmTarget::SHARED_LIBRARY) ||
|
bool shared = ((target.GetType() == cmTarget::SHARED_LIBRARY) ||
|
||||||
(target.GetType() == cmTarget::MODULE_LIBRARY));
|
(target.GetType() == cmTarget::MODULE_LIBRARY));
|
||||||
|
|
||||||
const char* lang = target.GetLinkerLanguage();
|
const char* lang = target.GetLinkerLanguage(configName);
|
||||||
std::string cflags;
|
std::string cflags;
|
||||||
if(lang)
|
if(lang)
|
||||||
{
|
{
|
||||||
|
|
|
@ -656,7 +656,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
|
||||||
std::string flags;
|
std::string flags;
|
||||||
if(strcmp(configType, "10") != 0)
|
if(strcmp(configType, "10") != 0)
|
||||||
{
|
{
|
||||||
const char* linkLanguage = target.GetLinkerLanguage();
|
const char* linkLanguage = target.GetLinkerLanguage(configName);
|
||||||
if(!linkLanguage)
|
if(!linkLanguage)
|
||||||
{
|
{
|
||||||
cmSystemTools::Error
|
cmSystemTools::Error
|
||||||
|
@ -1362,7 +1362,7 @@ cmLocalVisualStudio7GeneratorFCInfo
|
||||||
lg->GlobalGenerator->GetLanguageFromExtension
|
lg->GlobalGenerator->GetLanguageFromExtension
|
||||||
(sf.GetExtension().c_str());
|
(sf.GetExtension().c_str());
|
||||||
const char* sourceLang = lg->GetSourceFileLanguage(sf);
|
const char* sourceLang = lg->GetSourceFileLanguage(sf);
|
||||||
const char* linkLanguage = target.GetLinkerLanguage();
|
const char* linkLanguage = target.GetLinkerLanguage(i->c_str());
|
||||||
bool needForceLang = false;
|
bool needForceLang = false;
|
||||||
// source file does not match its extension language
|
// source file does not match its extension language
|
||||||
if(lang && sourceLang && strcmp(lang, sourceLang) != 0)
|
if(lang && sourceLang && strcmp(lang, sourceLang) != 0)
|
||||||
|
|
|
@ -178,7 +178,8 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
|
||||||
cmLocalGenerator::SHELL);
|
cmLocalGenerator::SHELL);
|
||||||
|
|
||||||
// Get the language to use for linking this executable.
|
// Get the language to use for linking this executable.
|
||||||
const char* linkLanguage = this->Target->GetLinkerLanguage();
|
const char* linkLanguage =
|
||||||
|
this->Target->GetLinkerLanguage(this->ConfigName);
|
||||||
|
|
||||||
// Make sure we have a link language.
|
// Make sure we have a link language.
|
||||||
if(!linkLanguage)
|
if(!linkLanguage)
|
||||||
|
|
|
@ -109,7 +109,8 @@ void cmMakefileLibraryTargetGenerator::WriteRuleFiles()
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmMakefileLibraryTargetGenerator::WriteStaticLibraryRules()
|
void cmMakefileLibraryTargetGenerator::WriteStaticLibraryRules()
|
||||||
{
|
{
|
||||||
const char* linkLanguage = this->Target->GetLinkerLanguage();
|
const char* linkLanguage =
|
||||||
|
this->Target->GetLinkerLanguage(this->ConfigName);
|
||||||
std::string linkRuleVar = "CMAKE_";
|
std::string linkRuleVar = "CMAKE_";
|
||||||
if (linkLanguage)
|
if (linkLanguage)
|
||||||
{
|
{
|
||||||
|
@ -131,7 +132,8 @@ void cmMakefileLibraryTargetGenerator::WriteSharedLibraryRules(bool relink)
|
||||||
this->WriteFrameworkRules(relink);
|
this->WriteFrameworkRules(relink);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const char* linkLanguage = this->Target->GetLinkerLanguage();
|
const char* linkLanguage =
|
||||||
|
this->Target->GetLinkerLanguage(this->ConfigName);
|
||||||
std::string linkRuleVar = "CMAKE_";
|
std::string linkRuleVar = "CMAKE_";
|
||||||
if (linkLanguage)
|
if (linkLanguage)
|
||||||
{
|
{
|
||||||
|
@ -176,7 +178,8 @@ void cmMakefileLibraryTargetGenerator::WriteSharedLibraryRules(bool relink)
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmMakefileLibraryTargetGenerator::WriteModuleLibraryRules(bool relink)
|
void cmMakefileLibraryTargetGenerator::WriteModuleLibraryRules(bool relink)
|
||||||
{
|
{
|
||||||
const char* linkLanguage = this->Target->GetLinkerLanguage();
|
const char* linkLanguage =
|
||||||
|
this->Target->GetLinkerLanguage(this->ConfigName);
|
||||||
std::string linkRuleVar = "CMAKE_";
|
std::string linkRuleVar = "CMAKE_";
|
||||||
if (linkLanguage)
|
if (linkLanguage)
|
||||||
{
|
{
|
||||||
|
@ -201,7 +204,8 @@ void cmMakefileLibraryTargetGenerator::WriteModuleLibraryRules(bool relink)
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmMakefileLibraryTargetGenerator::WriteFrameworkRules(bool relink)
|
void cmMakefileLibraryTargetGenerator::WriteFrameworkRules(bool relink)
|
||||||
{
|
{
|
||||||
const char* linkLanguage = this->Target->GetLinkerLanguage();
|
const char* linkLanguage =
|
||||||
|
this->Target->GetLinkerLanguage(this->ConfigName);
|
||||||
std::string linkRuleVar = "CMAKE_";
|
std::string linkRuleVar = "CMAKE_";
|
||||||
if (linkLanguage)
|
if (linkLanguage)
|
||||||
{
|
{
|
||||||
|
@ -347,7 +351,8 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the language to use for linking this library.
|
// Get the language to use for linking this library.
|
||||||
const char* linkLanguage = this->Target->GetLinkerLanguage();
|
const char* linkLanguage =
|
||||||
|
this->Target->GetLinkerLanguage(this->ConfigName);
|
||||||
|
|
||||||
// Make sure we have a link language.
|
// Make sure we have a link language.
|
||||||
if(!linkLanguage)
|
if(!linkLanguage)
|
||||||
|
|
|
@ -2320,7 +2320,7 @@ bool cmTarget::GetPropertyAsBool(const char* prop)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmTarget::GetLinkerLanguage()
|
const char* cmTarget::GetLinkerLanguage(const char*)
|
||||||
{
|
{
|
||||||
cmGlobalGenerator* gg =
|
cmGlobalGenerator* gg =
|
||||||
this->Makefile->GetLocalGenerator()->GetGlobalGenerator();
|
this->Makefile->GetLocalGenerator()->GetGlobalGenerator();
|
||||||
|
@ -2772,7 +2772,7 @@ void cmTarget::GetLibraryNames(std::string& name,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construct the name of the soname flag variable for this language.
|
// Construct the name of the soname flag variable for this language.
|
||||||
const char* ll = this->GetLinkerLanguage();
|
const char* ll = this->GetLinkerLanguage(config);
|
||||||
std::string sonameFlag = "CMAKE_SHARED_LIBRARY_SONAME";
|
std::string sonameFlag = "CMAKE_SHARED_LIBRARY_SONAME";
|
||||||
if(ll)
|
if(ll)
|
||||||
{
|
{
|
||||||
|
@ -3062,7 +3062,7 @@ bool cmTarget::NeedRelinkBeforeInstall(const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for rpath support on this platform.
|
// Check for rpath support on this platform.
|
||||||
if(const char* ll = this->GetLinkerLanguage())
|
if(const char* ll = this->GetLinkerLanguage(config))
|
||||||
{
|
{
|
||||||
std::string flagVar = "CMAKE_SHARED_LIBRARY_RUNTIME_";
|
std::string flagVar = "CMAKE_SHARED_LIBRARY_RUNTIME_";
|
||||||
flagVar += ll;
|
flagVar += ll;
|
||||||
|
@ -3387,7 +3387,7 @@ bool cmTarget::IsChrpathUsed(const char* config)
|
||||||
|
|
||||||
// Enable if the rpath flag uses a separator and the target uses ELF
|
// Enable if the rpath flag uses a separator and the target uses ELF
|
||||||
// binaries.
|
// binaries.
|
||||||
if(const char* ll = this->GetLinkerLanguage())
|
if(const char* ll = this->GetLinkerLanguage(config))
|
||||||
{
|
{
|
||||||
std::string sepVar = "CMAKE_SHARED_LIBRARY_RUNTIME_";
|
std::string sepVar = "CMAKE_SHARED_LIBRARY_RUNTIME_";
|
||||||
sepVar += ll;
|
sepVar += ll;
|
||||||
|
|
|
@ -305,7 +305,7 @@ public:
|
||||||
bool FindSourceFiles();
|
bool FindSourceFiles();
|
||||||
|
|
||||||
///! Return the prefered linker language for this target
|
///! Return the prefered linker language for this target
|
||||||
const char* GetLinkerLanguage();
|
const char* GetLinkerLanguage(const char* config = 0);
|
||||||
|
|
||||||
///! Return the rule variable used to create this type of target,
|
///! Return the rule variable used to create this type of target,
|
||||||
// need to add CMAKE_(LANG) for full name.
|
// need to add CMAKE_(LANG) for full name.
|
||||||
|
|
|
@ -582,7 +582,8 @@ OutputLinkIncremental(std::string const& configName)
|
||||||
|
|
||||||
// assume incremental linking
|
// assume incremental linking
|
||||||
const char* incremental = "true";
|
const char* incremental = "true";
|
||||||
const char* linkLanguage = this->Target->GetLinkerLanguage();
|
const char* linkLanguage =
|
||||||
|
this->Target->GetLinkerLanguage(configName.c_str());
|
||||||
if(!linkLanguage)
|
if(!linkLanguage)
|
||||||
{
|
{
|
||||||
cmSystemTools::Error
|
cmSystemTools::Error
|
||||||
|
@ -638,7 +639,8 @@ WriteClOptions(std::string const& configName,
|
||||||
// collect up flags for
|
// collect up flags for
|
||||||
if(this->Target->GetType() < cmTarget::UTILITY)
|
if(this->Target->GetType() < cmTarget::UTILITY)
|
||||||
{
|
{
|
||||||
const char* linkLanguage = this->Target->GetLinkerLanguage();
|
const char* linkLanguage =
|
||||||
|
this->Target->GetLinkerLanguage(configName.c_str());
|
||||||
if(!linkLanguage)
|
if(!linkLanguage)
|
||||||
{
|
{
|
||||||
cmSystemTools::Error
|
cmSystemTools::Error
|
||||||
|
@ -772,7 +774,8 @@ void cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const&
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const char* linkLanguage = this->Target->GetLinkerLanguage();
|
const char* linkLanguage =
|
||||||
|
this->Target->GetLinkerLanguage(config.c_str());
|
||||||
if(!linkLanguage)
|
if(!linkLanguage)
|
||||||
{
|
{
|
||||||
cmSystemTools::Error
|
cmSystemTools::Error
|
||||||
|
|
Loading…
Reference in New Issue