Refactor `.def` file lookup
Return a `cmSourceFile const*` from GetModuleDefinitionFile so that callers can get more information than just the path to the file.
This commit is contained in:
parent
adfc8a677e
commit
247c168b98
|
@ -81,7 +81,7 @@ void cmCommonTargetGenerator::AddFeatureFlags(
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags)
|
void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags)
|
||||||
{
|
{
|
||||||
if(this->ModuleDefinitionFile.empty())
|
if(!this->ModuleDefinitionFile)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,7 @@ void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags)
|
||||||
// vs6's "cl -link" pass it to the linker.
|
// vs6's "cl -link" pass it to the linker.
|
||||||
std::string flag = defFileFlag;
|
std::string flag = defFileFlag;
|
||||||
flag += (this->LocalGenerator->ConvertToLinkReference(
|
flag += (this->LocalGenerator->ConvertToLinkReference(
|
||||||
this->ModuleDefinitionFile));
|
this->ModuleDefinitionFile->GetFullPath()));
|
||||||
this->LocalGenerator->AppendFlags(flags, flag);
|
this->LocalGenerator->AppendFlags(flags, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ protected:
|
||||||
std::string ConfigName;
|
std::string ConfigName;
|
||||||
|
|
||||||
// The windows module definition source file (.def), if any.
|
// The windows module definition source file (.def), if any.
|
||||||
std::string ModuleDefinitionFile;
|
cmSourceFile const* ModuleDefinitionFile;
|
||||||
|
|
||||||
// Target-wide Fortran module output directory.
|
// Target-wide Fortran module output directory.
|
||||||
bool FortranModuleDirectoryComputed;
|
bool FortranModuleDirectoryComputed;
|
||||||
|
|
|
@ -2095,12 +2095,18 @@ cmGeneratorTarget::CompileInfo const* cmGeneratorTarget::GetCompileInfo(
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string
|
cmSourceFile const*
|
||||||
cmGeneratorTarget::GetModuleDefinitionFile(const std::string& config) const
|
cmGeneratorTarget::GetModuleDefinitionFile(const std::string& config) const
|
||||||
{
|
{
|
||||||
std::string data;
|
std::vector<cmSourceFile const*> data;
|
||||||
IMPLEMENT_VISIT_IMPL(ModuleDefinitionFile, COMMA std::string)
|
IMPLEMENT_VISIT_IMPL(ModuleDefinitionFile,
|
||||||
return data;
|
COMMA std::vector<cmSourceFile const*>)
|
||||||
|
if(!data.empty())
|
||||||
|
{
|
||||||
|
return data.front();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cmGeneratorTarget::IsDLLPlatform() const
|
bool cmGeneratorTarget::IsDLLPlatform() const
|
||||||
|
|
|
@ -220,7 +220,7 @@ public:
|
||||||
cmLocalGenerator* LocalGenerator;
|
cmLocalGenerator* LocalGenerator;
|
||||||
cmGlobalGenerator const* GlobalGenerator;
|
cmGlobalGenerator const* GlobalGenerator;
|
||||||
|
|
||||||
std::string GetModuleDefinitionFile(const std::string& config) const;
|
cmSourceFile const* GetModuleDefinitionFile(const std::string& config) const;
|
||||||
|
|
||||||
/** Return whether or not the target is for a DLL platform. */
|
/** Return whether or not the target is for a DLL platform. */
|
||||||
bool IsDLLPlatform() const;
|
bool IsDLLPlatform() const;
|
||||||
|
|
|
@ -1497,9 +1497,9 @@ void cmMakefileTargetGenerator
|
||||||
this->AppendTargetDepends(depends);
|
this->AppendTargetDepends(depends);
|
||||||
|
|
||||||
// Add a dependency on the link definitions file, if any.
|
// Add a dependency on the link definitions file, if any.
|
||||||
if(!this->ModuleDefinitionFile.empty())
|
if(this->ModuleDefinitionFile)
|
||||||
{
|
{
|
||||||
depends.push_back(this->ModuleDefinitionFile);
|
depends.push_back(this->ModuleDefinitionFile->GetFullPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a dependency on user-specified manifest files, if any.
|
// Add a dependency on user-specified manifest files, if any.
|
||||||
|
|
|
@ -195,9 +195,10 @@ cmNinjaDeps cmNinjaTargetGenerator::ComputeLinkDeps() const
|
||||||
std::transform(deps.begin(), deps.end(), result.begin(), MapToNinjaPath());
|
std::transform(deps.begin(), deps.end(), result.begin(), MapToNinjaPath());
|
||||||
|
|
||||||
// Add a dependency on the link definitions file, if any.
|
// Add a dependency on the link definitions file, if any.
|
||||||
if(!this->ModuleDefinitionFile.empty())
|
if(this->ModuleDefinitionFile)
|
||||||
{
|
{
|
||||||
result.push_back(this->ConvertToNinjaPath(this->ModuleDefinitionFile));
|
result.push_back(this->ConvertToNinjaPath(
|
||||||
|
this->ModuleDefinitionFile->GetFullPath()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a dependency on user-specified manifest files, if any.
|
// Add a dependency on user-specified manifest files, if any.
|
||||||
|
|
|
@ -2642,10 +2642,11 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config)
|
||||||
|
|
||||||
if(this->MSTools)
|
if(this->MSTools)
|
||||||
{
|
{
|
||||||
std::string def = this->GeneratorTarget->GetModuleDefinitionFile("");
|
if (cmSourceFile const* defsrc =
|
||||||
if(!def.empty())
|
this->GeneratorTarget->GetModuleDefinitionFile(""))
|
||||||
{
|
{
|
||||||
linkOptions.AddFlag("ModuleDefinitionFile", def.c_str());
|
linkOptions.AddFlag("ModuleDefinitionFile",
|
||||||
|
defsrc->GetFullPath().c_str());
|
||||||
}
|
}
|
||||||
linkOptions.AppendFlag("IgnoreSpecificDefaultLibraries",
|
linkOptions.AppendFlag("IgnoreSpecificDefaultLibraries",
|
||||||
"%(IgnoreSpecificDefaultLibraries)");
|
"%(IgnoreSpecificDefaultLibraries)");
|
||||||
|
|
Loading…
Reference in New Issue