cmTarget: Make GetProperty() const.
This has follow-on effects for other methods and classes. Further work on making the use of const cmTarget pointers common can be done, particularly with a view to generate-time methods.
This commit is contained in:
parent
cfb6661333
commit
c4373b33b2
|
@ -172,7 +172,8 @@ satisfy dependencies.
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmComputeLinkDepends
|
cmComputeLinkDepends
|
||||||
::cmComputeLinkDepends(cmTarget* target, const char* config, cmTarget* head)
|
::cmComputeLinkDepends(cmTarget const* target, const char* config,
|
||||||
|
cmTarget const* head)
|
||||||
{
|
{
|
||||||
// Store context information.
|
// Store context information.
|
||||||
this->Target = target;
|
this->Target = target;
|
||||||
|
|
|
@ -32,7 +32,8 @@ class cmake;
|
||||||
class cmComputeLinkDepends
|
class cmComputeLinkDepends
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
cmComputeLinkDepends(cmTarget* target, const char* config, cmTarget *head);
|
cmComputeLinkDepends(cmTarget const* target, const char* config,
|
||||||
|
cmTarget const* head);
|
||||||
~cmComputeLinkDepends();
|
~cmComputeLinkDepends();
|
||||||
|
|
||||||
// Basic information about each link item.
|
// Basic information about each link item.
|
||||||
|
@ -58,8 +59,8 @@ public:
|
||||||
private:
|
private:
|
||||||
|
|
||||||
// Context information.
|
// Context information.
|
||||||
cmTarget* Target;
|
cmTarget const* Target;
|
||||||
cmTarget* HeadTarget;
|
cmTarget const* HeadTarget;
|
||||||
cmMakefile* Makefile;
|
cmMakefile* Makefile;
|
||||||
cmLocalGenerator* LocalGenerator;
|
cmLocalGenerator* LocalGenerator;
|
||||||
cmGlobalGenerator* GlobalGenerator;
|
cmGlobalGenerator* GlobalGenerator;
|
||||||
|
|
|
@ -239,8 +239,8 @@ because this need be done only for shared libraries without soname-s.
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmComputeLinkInformation
|
cmComputeLinkInformation
|
||||||
::cmComputeLinkInformation(cmTarget* target, const char* config,
|
::cmComputeLinkInformation(cmTarget const* target, const char* config,
|
||||||
cmTarget *headTarget)
|
cmTarget const* headTarget)
|
||||||
{
|
{
|
||||||
// Store context information.
|
// Store context information.
|
||||||
this->Target = target;
|
this->Target = target;
|
||||||
|
|
|
@ -29,8 +29,8 @@ class cmOrderDirectories;
|
||||||
class cmComputeLinkInformation
|
class cmComputeLinkInformation
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
cmComputeLinkInformation(cmTarget* target, const char* config,
|
cmComputeLinkInformation(cmTarget const* target, const char* config,
|
||||||
cmTarget* headTarget);
|
cmTarget const* headTarget);
|
||||||
~cmComputeLinkInformation();
|
~cmComputeLinkInformation();
|
||||||
bool Compute();
|
bool Compute();
|
||||||
|
|
||||||
|
@ -74,8 +74,8 @@ private:
|
||||||
std::set<cmTarget*> SharedLibrariesLinked;
|
std::set<cmTarget*> SharedLibrariesLinked;
|
||||||
|
|
||||||
// Context information.
|
// Context information.
|
||||||
cmTarget* Target;
|
cmTarget const* Target;
|
||||||
cmTarget* HeadTarget;
|
cmTarget const* HeadTarget;
|
||||||
cmMakefile* Makefile;
|
cmMakefile* Makefile;
|
||||||
cmLocalGenerator* LocalGenerator;
|
cmLocalGenerator* LocalGenerator;
|
||||||
cmGlobalGenerator* GlobalGenerator;
|
cmGlobalGenerator* GlobalGenerator;
|
||||||
|
|
|
@ -34,7 +34,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
|
||||||
std::string outputVariable;
|
std::string outputVariable;
|
||||||
std::string copyFile;
|
std::string copyFile;
|
||||||
std::string copyFileError;
|
std::string copyFileError;
|
||||||
std::vector<cmTarget*> targets;
|
std::vector<cmTarget const*> targets;
|
||||||
std::string libsToLink = " ";
|
std::string libsToLink = " ";
|
||||||
bool useOldLinkLibs = true;
|
bool useOldLinkLibs = true;
|
||||||
char targetNameBuf[64];
|
char targetNameBuf[64];
|
||||||
|
|
|
@ -463,7 +463,7 @@ void cmExportFileGenerator::PopulateCompatibleInterfaceProperties(
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmExportFileGenerator::GenerateInterfaceProperties(cmTarget *target,
|
void cmExportFileGenerator::GenerateInterfaceProperties(cmTarget const* target,
|
||||||
std::ostream& os,
|
std::ostream& os,
|
||||||
const ImportPropertyMap &properties)
|
const ImportPropertyMap &properties)
|
||||||
{
|
{
|
||||||
|
@ -885,7 +885,7 @@ void cmExportFileGenerator::GenerateExpectedTargetsCode(std::ostream& os,
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void
|
void
|
||||||
cmExportFileGenerator
|
cmExportFileGenerator
|
||||||
::GenerateImportTargetCode(std::ostream& os, cmTarget* target)
|
::GenerateImportTargetCode(std::ostream& os, cmTarget const* target)
|
||||||
{
|
{
|
||||||
// Construct the imported target name.
|
// Construct the imported target name.
|
||||||
std::string targetName = this->Namespace;
|
std::string targetName = this->Namespace;
|
||||||
|
@ -951,7 +951,7 @@ cmExportFileGenerator
|
||||||
void
|
void
|
||||||
cmExportFileGenerator
|
cmExportFileGenerator
|
||||||
::GenerateImportPropertyCode(std::ostream& os, const char* config,
|
::GenerateImportPropertyCode(std::ostream& os, const char* config,
|
||||||
cmTarget* target,
|
cmTarget const* target,
|
||||||
ImportPropertyMap const& properties)
|
ImportPropertyMap const& properties)
|
||||||
{
|
{
|
||||||
// Construct the imported target name.
|
// Construct the imported target name.
|
||||||
|
|
|
@ -60,9 +60,9 @@ protected:
|
||||||
void GenerateImportHeaderCode(std::ostream& os, const char* config = 0);
|
void GenerateImportHeaderCode(std::ostream& os, const char* config = 0);
|
||||||
void GenerateImportFooterCode(std::ostream& os);
|
void GenerateImportFooterCode(std::ostream& os);
|
||||||
void GenerateImportVersionCode(std::ostream& os);
|
void GenerateImportVersionCode(std::ostream& os);
|
||||||
void GenerateImportTargetCode(std::ostream& os, cmTarget* target);
|
void GenerateImportTargetCode(std::ostream& os, cmTarget const* target);
|
||||||
void GenerateImportPropertyCode(std::ostream& os, const char* config,
|
void GenerateImportPropertyCode(std::ostream& os, const char* config,
|
||||||
cmTarget* target,
|
cmTarget const* target,
|
||||||
ImportPropertyMap const& properties);
|
ImportPropertyMap const& properties);
|
||||||
void GenerateImportedFileChecksCode(std::ostream& os, cmTarget* target,
|
void GenerateImportedFileChecksCode(std::ostream& os, cmTarget* target,
|
||||||
ImportPropertyMap const& properties,
|
ImportPropertyMap const& properties,
|
||||||
|
@ -115,7 +115,7 @@ protected:
|
||||||
ImportPropertyMap &properties);
|
ImportPropertyMap &properties);
|
||||||
void PopulateCompatibleInterfaceProperties(cmTarget *target,
|
void PopulateCompatibleInterfaceProperties(cmTarget *target,
|
||||||
ImportPropertyMap &properties);
|
ImportPropertyMap &properties);
|
||||||
void GenerateInterfaceProperties(cmTarget *target, std::ostream& os,
|
void GenerateInterfaceProperties(cmTarget const* target, std::ostream& os,
|
||||||
const ImportPropertyMap &properties);
|
const ImportPropertyMap &properties);
|
||||||
void PopulateIncludeDirectoriesInterface(
|
void PopulateIncludeDirectoriesInterface(
|
||||||
cmTargetExport *target,
|
cmTargetExport *target,
|
||||||
|
|
|
@ -18,11 +18,11 @@
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmExportTryCompileFileGenerator::GenerateMainFile(std::ostream& os)
|
bool cmExportTryCompileFileGenerator::GenerateMainFile(std::ostream& os)
|
||||||
{
|
{
|
||||||
std::set<cmTarget*> emitted;
|
std::set<cmTarget const*> emitted;
|
||||||
std::set<cmTarget*> emittedDeps;
|
std::set<cmTarget const*> emittedDeps;
|
||||||
while(!this->Exports.empty())
|
while(!this->Exports.empty())
|
||||||
{
|
{
|
||||||
cmTarget* te = this->Exports.back();
|
cmTarget const* te = this->Exports.back();
|
||||||
this->Exports.pop_back();
|
this->Exports.pop_back();
|
||||||
if (emitted.insert(te).second)
|
if (emitted.insert(te).second)
|
||||||
{
|
{
|
||||||
|
@ -45,8 +45,8 @@ bool cmExportTryCompileFileGenerator::GenerateMainFile(std::ostream& os)
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string cmExportTryCompileFileGenerator::FindTargets(const char *propName,
|
std::string cmExportTryCompileFileGenerator::FindTargets(const char *propName,
|
||||||
cmTarget *tgt,
|
cmTarget const* tgt,
|
||||||
std::set<cmTarget*> &emitted)
|
std::set<cmTarget const*> &emitted)
|
||||||
{
|
{
|
||||||
const char *prop = tgt->GetProperty(propName);
|
const char *prop = tgt->GetProperty(propName);
|
||||||
if(!prop)
|
if(!prop)
|
||||||
|
@ -70,8 +70,8 @@ std::string cmExportTryCompileFileGenerator::FindTargets(const char *propName,
|
||||||
std::string result = cge->Evaluate(tgt->GetMakefile(), this->Config,
|
std::string result = cge->Evaluate(tgt->GetMakefile(), this->Config,
|
||||||
false, &dummyHead, tgt, &dagChecker);
|
false, &dummyHead, tgt, &dagChecker);
|
||||||
|
|
||||||
const std::set<cmTarget*> &allTargets = cge->GetAllTargetsSeen();
|
const std::set<cmTarget const*> &allTargets = cge->GetAllTargetsSeen();
|
||||||
for(std::set<cmTarget*>::const_iterator li = allTargets.begin();
|
for(std::set<cmTarget const*>::const_iterator li = allTargets.begin();
|
||||||
li != allTargets.end(); ++li)
|
li != allTargets.end(); ++li)
|
||||||
{
|
{
|
||||||
if(emitted.insert(*li).second)
|
if(emitted.insert(*li).second)
|
||||||
|
@ -84,9 +84,9 @@ std::string cmExportTryCompileFileGenerator::FindTargets(const char *propName,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void
|
void
|
||||||
cmExportTryCompileFileGenerator::PopulateProperties(cmTarget* target,
|
cmExportTryCompileFileGenerator::PopulateProperties(cmTarget const* target,
|
||||||
ImportPropertyMap& properties,
|
ImportPropertyMap& properties,
|
||||||
std::set<cmTarget*> &emitted)
|
std::set<cmTarget const*> &emitted)
|
||||||
{
|
{
|
||||||
cmPropertyMap props = target->GetProperties();
|
cmPropertyMap props = target->GetProperties();
|
||||||
for(cmPropertyMap::const_iterator i = props.begin(); i != props.end(); ++i)
|
for(cmPropertyMap::const_iterator i = props.begin(); i != props.end(); ++i)
|
||||||
|
|
|
@ -21,7 +21,7 @@ class cmExportTryCompileFileGenerator: public cmExportFileGenerator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** Set the list of targets to export. */
|
/** Set the list of targets to export. */
|
||||||
void SetExports(const std::vector<cmTarget*> &exports)
|
void SetExports(const std::vector<cmTarget const*> &exports)
|
||||||
{ this->Exports = exports; }
|
{ this->Exports = exports; }
|
||||||
void SetConfig(const char *config) { this->Config = config; }
|
void SetConfig(const char *config) { this->Config = config; }
|
||||||
protected:
|
protected:
|
||||||
|
@ -39,18 +39,18 @@ protected:
|
||||||
cmTarget*,
|
cmTarget*,
|
||||||
cmTarget*) {}
|
cmTarget*) {}
|
||||||
|
|
||||||
void PopulateProperties(cmTarget* target,
|
void PopulateProperties(cmTarget const* target,
|
||||||
ImportPropertyMap& properties,
|
ImportPropertyMap& properties,
|
||||||
std::set<cmTarget*> &emitted);
|
std::set<cmTarget const*> &emitted);
|
||||||
|
|
||||||
std::string InstallNameDir(cmTarget* target,
|
std::string InstallNameDir(cmTarget* target,
|
||||||
const std::string& config);
|
const std::string& config);
|
||||||
private:
|
private:
|
||||||
std::string FindTargets(const char *prop, cmTarget *tgt,
|
std::string FindTargets(const char *prop, cmTarget const* tgt,
|
||||||
std::set<cmTarget*> &emitted);
|
std::set<cmTarget const*> &emitted);
|
||||||
|
|
||||||
|
|
||||||
std::vector<cmTarget*> Exports;
|
std::vector<cmTarget const*> Exports;
|
||||||
const char *Config;
|
const char *Config;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -140,14 +140,25 @@ void cmFindCommon::RerootPaths(std::vector<std::string>& paths)
|
||||||
}
|
}
|
||||||
const char* rootPath =
|
const char* rootPath =
|
||||||
this->Makefile->GetDefinition("CMAKE_FIND_ROOT_PATH");
|
this->Makefile->GetDefinition("CMAKE_FIND_ROOT_PATH");
|
||||||
if((rootPath == 0) || (strlen(rootPath) == 0))
|
const char* osxRootPath =
|
||||||
|
this->Makefile->GetDefinition("_CMAKE_OSX_SYSROOT_PATH");
|
||||||
|
const bool noRootPath = !rootPath || !*rootPath;
|
||||||
|
const bool noOSXRootPath = !osxRootPath || !*osxRootPath;
|
||||||
|
if(noRootPath && noOSXRootPath)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construct the list of path roots with no trailing slashes.
|
// Construct the list of path roots with no trailing slashes.
|
||||||
std::vector<std::string> roots;
|
std::vector<std::string> roots;
|
||||||
cmSystemTools::ExpandListArgument(rootPath, roots);
|
if(rootPath)
|
||||||
|
{
|
||||||
|
cmSystemTools::ExpandListArgument(rootPath, roots);
|
||||||
|
}
|
||||||
|
if(osxRootPath)
|
||||||
|
{
|
||||||
|
roots.push_back(osxRootPath);
|
||||||
|
}
|
||||||
for(std::vector<std::string>::iterator ri = roots.begin();
|
for(std::vector<std::string>::iterator ri = roots.begin();
|
||||||
ri != roots.end(); ++ri)
|
ri != roots.end(); ++ri)
|
||||||
{
|
{
|
||||||
|
|
|
@ -53,7 +53,7 @@ cmGeneratorExpression::~cmGeneratorExpression()
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char *cmCompiledGeneratorExpression::Evaluate(
|
const char *cmCompiledGeneratorExpression::Evaluate(
|
||||||
cmMakefile* mf, const char* config, bool quiet,
|
cmMakefile* mf, const char* config, bool quiet,
|
||||||
cmTarget *headTarget,
|
cmTarget const* headTarget,
|
||||||
cmGeneratorExpressionDAGChecker *dagChecker) const
|
cmGeneratorExpressionDAGChecker *dagChecker) const
|
||||||
{
|
{
|
||||||
return this->Evaluate(mf,
|
return this->Evaluate(mf,
|
||||||
|
@ -67,8 +67,8 @@ const char *cmCompiledGeneratorExpression::Evaluate(
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char *cmCompiledGeneratorExpression::Evaluate(
|
const char *cmCompiledGeneratorExpression::Evaluate(
|
||||||
cmMakefile* mf, const char* config, bool quiet,
|
cmMakefile* mf, const char* config, bool quiet,
|
||||||
cmTarget *headTarget,
|
cmTarget const* headTarget,
|
||||||
cmTarget *currentTarget,
|
cmTarget const* currentTarget,
|
||||||
cmGeneratorExpressionDAGChecker *dagChecker) const
|
cmGeneratorExpressionDAGChecker *dagChecker) const
|
||||||
{
|
{
|
||||||
if (!this->NeedsEvaluation)
|
if (!this->NeedsEvaluation)
|
||||||
|
|
|
@ -80,12 +80,12 @@ class cmCompiledGeneratorExpression
|
||||||
public:
|
public:
|
||||||
const char* Evaluate(cmMakefile* mf, const char* config,
|
const char* Evaluate(cmMakefile* mf, const char* config,
|
||||||
bool quiet = false,
|
bool quiet = false,
|
||||||
cmTarget *headTarget = 0,
|
cmTarget const* headTarget = 0,
|
||||||
cmTarget *currentTarget = 0,
|
cmTarget const* currentTarget = 0,
|
||||||
cmGeneratorExpressionDAGChecker *dagChecker = 0) const;
|
cmGeneratorExpressionDAGChecker *dagChecker = 0) const;
|
||||||
const char* Evaluate(cmMakefile* mf, const char* config,
|
const char* Evaluate(cmMakefile* mf, const char* config,
|
||||||
bool quiet,
|
bool quiet,
|
||||||
cmTarget *headTarget,
|
cmTarget const* headTarget,
|
||||||
cmGeneratorExpressionDAGChecker *dagChecker) const;
|
cmGeneratorExpressionDAGChecker *dagChecker) const;
|
||||||
|
|
||||||
/** Get set of targets found during evaluations. */
|
/** Get set of targets found during evaluations. */
|
||||||
|
@ -95,7 +95,7 @@ public:
|
||||||
std::set<cmStdString> const& GetSeenTargetProperties() const
|
std::set<cmStdString> const& GetSeenTargetProperties() const
|
||||||
{ return this->SeenTargetProperties; }
|
{ return this->SeenTargetProperties; }
|
||||||
|
|
||||||
std::set<cmTarget*> const& GetAllTargetsSeen() const
|
std::set<cmTarget const*> const& GetAllTargetsSeen() const
|
||||||
{ return this->AllTargetsSeen; }
|
{ return this->AllTargetsSeen; }
|
||||||
|
|
||||||
~cmCompiledGeneratorExpression();
|
~cmCompiledGeneratorExpression();
|
||||||
|
@ -129,7 +129,7 @@ private:
|
||||||
bool NeedsEvaluation;
|
bool NeedsEvaluation;
|
||||||
|
|
||||||
mutable std::set<cmTarget*> DependTargets;
|
mutable std::set<cmTarget*> DependTargets;
|
||||||
mutable std::set<cmTarget*> AllTargetsSeen;
|
mutable std::set<cmTarget const*> AllTargetsSeen;
|
||||||
mutable std::set<cmStdString> SeenTargetProperties;
|
mutable std::set<cmStdString> SeenTargetProperties;
|
||||||
mutable std::string Output;
|
mutable std::string Output;
|
||||||
mutable bool HadContextSensitiveCondition;
|
mutable bool HadContextSensitiveCondition;
|
||||||
|
|
|
@ -661,8 +661,8 @@ static const char* targetPropertyTransitiveWhitelist[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string getLinkedTargetsContent(const std::vector<std::string> &libraries,
|
std::string getLinkedTargetsContent(const std::vector<std::string> &libraries,
|
||||||
cmTarget *target,
|
cmTarget const* target,
|
||||||
cmTarget *headTarget,
|
cmTarget const* headTarget,
|
||||||
cmGeneratorExpressionContext *context,
|
cmGeneratorExpressionContext *context,
|
||||||
cmGeneratorExpressionDAGChecker *dagChecker,
|
cmGeneratorExpressionDAGChecker *dagChecker,
|
||||||
const std::string &interfacePropertyName)
|
const std::string &interfacePropertyName)
|
||||||
|
@ -726,7 +726,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
||||||
cmsys::RegularExpression propertyNameValidator;
|
cmsys::RegularExpression propertyNameValidator;
|
||||||
propertyNameValidator.compile("^[A-Za-z0-9_]+$");
|
propertyNameValidator.compile("^[A-Za-z0-9_]+$");
|
||||||
|
|
||||||
cmTarget* target = context->HeadTarget;
|
cmTarget const* target = context->HeadTarget;
|
||||||
std::string propertyName = *parameters.begin();
|
std::string propertyName = *parameters.begin();
|
||||||
|
|
||||||
if (!target && parameters.size() == 1)
|
if (!target && parameters.size() == 1)
|
||||||
|
@ -914,7 +914,8 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
||||||
interfacePropertyName = "INTERFACE_COMPILE_OPTIONS";
|
interfacePropertyName = "INTERFACE_COMPILE_OPTIONS";
|
||||||
}
|
}
|
||||||
|
|
||||||
cmTarget *headTarget = context->HeadTarget ? context->HeadTarget : target;
|
cmTarget const* headTarget = context->HeadTarget
|
||||||
|
? context->HeadTarget : target;
|
||||||
|
|
||||||
const char * const *transBegin =
|
const char * const *transBegin =
|
||||||
cmArrayBegin(targetPropertyTransitiveWhitelist) + 1;
|
cmArrayBegin(targetPropertyTransitiveWhitelist) + 1;
|
||||||
|
@ -1091,7 +1092,8 @@ static const char* targetPolicyWhitelist[] = {
|
||||||
#undef TARGET_POLICY_STRING
|
#undef TARGET_POLICY_STRING
|
||||||
};
|
};
|
||||||
|
|
||||||
cmPolicies::PolicyStatus statusForTarget(cmTarget *tgt, const char *policy)
|
cmPolicies::PolicyStatus statusForTarget(cmTarget const* tgt,
|
||||||
|
const char *policy)
|
||||||
{
|
{
|
||||||
#define RETURN_POLICY(POLICY) \
|
#define RETURN_POLICY(POLICY) \
|
||||||
if (strcmp(policy, #POLICY) == 0) \
|
if (strcmp(policy, #POLICY) == 0) \
|
||||||
|
|
|
@ -24,13 +24,13 @@ struct cmGeneratorExpressionContext
|
||||||
{
|
{
|
||||||
cmListFileBacktrace Backtrace;
|
cmListFileBacktrace Backtrace;
|
||||||
std::set<cmTarget*> DependTargets;
|
std::set<cmTarget*> DependTargets;
|
||||||
std::set<cmTarget*> AllTargets;
|
std::set<cmTarget const*> AllTargets;
|
||||||
std::set<cmStdString> SeenTargetProperties;
|
std::set<cmStdString> SeenTargetProperties;
|
||||||
cmMakefile *Makefile;
|
cmMakefile *Makefile;
|
||||||
const char *Config;
|
const char *Config;
|
||||||
cmTarget *HeadTarget; // The target whose property is being evaluated.
|
cmTarget const* HeadTarget; // The target whose property is being evaluated.
|
||||||
cmTarget *CurrentTarget; // The dependent of HeadTarget which appears
|
cmTarget const* CurrentTarget; // The dependent of HeadTarget which appears
|
||||||
// directly or indirectly in the property.
|
// directly or indirectly in the property.
|
||||||
bool Quiet;
|
bool Quiet;
|
||||||
bool HadError;
|
bool HadError;
|
||||||
bool HadContextSensitiveCondition;
|
bool HadContextSensitiveCondition;
|
||||||
|
|
|
@ -273,7 +273,7 @@ bool cmOrderDirectoriesConstraintLibrary::FindConflict(std::string const& dir)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmOrderDirectories::cmOrderDirectories(cmGlobalGenerator* gg,
|
cmOrderDirectories::cmOrderDirectories(cmGlobalGenerator* gg,
|
||||||
cmTarget* target,
|
cmTarget const* target,
|
||||||
const char* purpose)
|
const char* purpose)
|
||||||
{
|
{
|
||||||
this->GlobalGenerator = gg;
|
this->GlobalGenerator = gg;
|
||||||
|
|
|
@ -27,7 +27,7 @@ class cmTarget;
|
||||||
class cmOrderDirectories
|
class cmOrderDirectories
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
cmOrderDirectories(cmGlobalGenerator* gg, cmTarget* target,
|
cmOrderDirectories(cmGlobalGenerator* gg, cmTarget const* target,
|
||||||
const char* purpose);
|
const char* purpose);
|
||||||
~cmOrderDirectories();
|
~cmOrderDirectories();
|
||||||
void AddRuntimeLibrary(std::string const& fullPath, const char* soname = 0);
|
void AddRuntimeLibrary(std::string const& fullPath, const char* soname = 0);
|
||||||
|
@ -41,7 +41,7 @@ public:
|
||||||
std::vector<std::string> const& GetOrderedDirectories();
|
std::vector<std::string> const& GetOrderedDirectories();
|
||||||
private:
|
private:
|
||||||
cmGlobalGenerator* GlobalGenerator;
|
cmGlobalGenerator* GlobalGenerator;
|
||||||
cmTarget* Target;
|
cmTarget const* Target;
|
||||||
std::string Purpose;
|
std::string Purpose;
|
||||||
|
|
||||||
bool Computed;
|
bool Computed;
|
||||||
|
|
|
@ -71,9 +71,9 @@ struct cmTarget::ImportInfo
|
||||||
cmTarget::LinkInterface LinkInterface;
|
cmTarget::LinkInterface LinkInterface;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TargetConfigPair : public std::pair<cmTarget*, std::string> {
|
struct TargetConfigPair : public std::pair<cmTarget const* , std::string> {
|
||||||
TargetConfigPair(cmTarget* tgt, const std::string &config)
|
TargetConfigPair(cmTarget const* tgt, const std::string &config)
|
||||||
: std::pair<cmTarget*, std::string>(tgt, config) {}
|
: std::pair<cmTarget const* , std::string>(tgt, config) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -436,7 +436,7 @@ std::string cmTarget::GetSupportDirectory() const
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsExecutableWithExports()
|
bool cmTarget::IsExecutableWithExports() const
|
||||||
{
|
{
|
||||||
return (this->GetType() == cmTarget::EXECUTABLE &&
|
return (this->GetType() == cmTarget::EXECUTABLE &&
|
||||||
this->GetPropertyAsBool("ENABLE_EXPORTS"));
|
this->GetPropertyAsBool("ENABLE_EXPORTS"));
|
||||||
|
@ -454,7 +454,7 @@ bool cmTarget::IsLinkable()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::HasImportLibrary()
|
bool cmTarget::HasImportLibrary() const
|
||||||
{
|
{
|
||||||
return (this->DLLPlatform &&
|
return (this->DLLPlatform &&
|
||||||
(this->GetType() == cmTarget::SHARED_LIBRARY ||
|
(this->GetType() == cmTarget::SHARED_LIBRARY ||
|
||||||
|
@ -462,7 +462,7 @@ bool cmTarget::HasImportLibrary()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsFrameworkOnApple()
|
bool cmTarget::IsFrameworkOnApple() const
|
||||||
{
|
{
|
||||||
return (this->GetType() == cmTarget::SHARED_LIBRARY &&
|
return (this->GetType() == cmTarget::SHARED_LIBRARY &&
|
||||||
this->Makefile->IsOn("APPLE") &&
|
this->Makefile->IsOn("APPLE") &&
|
||||||
|
@ -470,7 +470,7 @@ bool cmTarget::IsFrameworkOnApple()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsAppBundleOnApple()
|
bool cmTarget::IsAppBundleOnApple() const
|
||||||
{
|
{
|
||||||
return (this->GetType() == cmTarget::EXECUTABLE &&
|
return (this->GetType() == cmTarget::EXECUTABLE &&
|
||||||
this->Makefile->IsOn("APPLE") &&
|
this->Makefile->IsOn("APPLE") &&
|
||||||
|
@ -478,7 +478,7 @@ bool cmTarget::IsAppBundleOnApple()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsCFBundleOnApple()
|
bool cmTarget::IsCFBundleOnApple() const
|
||||||
{
|
{
|
||||||
return (this->GetType() == cmTarget::MODULE_LIBRARY &&
|
return (this->GetType() == cmTarget::MODULE_LIBRARY &&
|
||||||
this->Makefile->IsOn("APPLE") &&
|
this->Makefile->IsOn("APPLE") &&
|
||||||
|
@ -486,7 +486,7 @@ bool cmTarget::IsCFBundleOnApple()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsBundleOnApple()
|
bool cmTarget::IsBundleOnApple() const
|
||||||
{
|
{
|
||||||
return this->IsFrameworkOnApple() || this->IsAppBundleOnApple() ||
|
return this->IsFrameworkOnApple() || this->IsAppBundleOnApple() ||
|
||||||
this->IsCFBundleOnApple();
|
this->IsCFBundleOnApple();
|
||||||
|
@ -1019,13 +1019,13 @@ void cmTarget::AddLinkDirectory(const char* d)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const std::vector<std::string>& cmTarget::GetLinkDirectories()
|
const std::vector<std::string>& cmTarget::GetLinkDirectories() const
|
||||||
{
|
{
|
||||||
return this->LinkDirectories;
|
return this->LinkDirectories;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmTarget::LinkLibraryType cmTarget::ComputeLinkType(const char* config)
|
cmTarget::LinkLibraryType cmTarget::ComputeLinkType(const char* config) const
|
||||||
{
|
{
|
||||||
// No configuration is always optimized.
|
// No configuration is always optimized.
|
||||||
if(!(config && *config))
|
if(!(config && *config))
|
||||||
|
@ -1089,7 +1089,8 @@ bool cmTarget::NameResolvesToFramework(const std::string& libname)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmTarget::GetDirectLinkLibraries(const char *config,
|
void cmTarget::GetDirectLinkLibraries(const char *config,
|
||||||
std::vector<std::string> &libs, cmTarget *head)
|
std::vector<std::string> &libs,
|
||||||
|
cmTarget const* head) const
|
||||||
{
|
{
|
||||||
const char *prop = this->GetProperty("LINK_LIBRARIES");
|
const char *prop = this->GetProperty("LINK_LIBRARIES");
|
||||||
if (prop)
|
if (prop)
|
||||||
|
@ -1816,7 +1817,7 @@ void cmTarget::AppendProperty(const char* prop, const char* value,
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmTarget::GetExportName()
|
const char* cmTarget::GetExportName() const
|
||||||
{
|
{
|
||||||
const char *exportName = this->GetProperty("EXPORT_NAME");
|
const char *exportName = this->GetProperty("EXPORT_NAME");
|
||||||
|
|
||||||
|
@ -2626,7 +2627,7 @@ void cmTarget::MarkAsImported()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::HaveWellDefinedOutputFiles()
|
bool cmTarget::HaveWellDefinedOutputFiles() const
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
this->GetType() == cmTarget::STATIC_LIBRARY ||
|
this->GetType() == cmTarget::STATIC_LIBRARY ||
|
||||||
|
@ -2636,7 +2637,7 @@ bool cmTarget::HaveWellDefinedOutputFiles()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmTarget::OutputInfo const* cmTarget::GetOutputInfo(const char* config)
|
cmTarget::OutputInfo const* cmTarget::GetOutputInfo(const char* config) const
|
||||||
{
|
{
|
||||||
// There is no output information for imported targets.
|
// There is no output information for imported targets.
|
||||||
if(this->IsImported())
|
if(this->IsImported())
|
||||||
|
@ -2681,7 +2682,7 @@ cmTarget::OutputInfo const* cmTarget::GetOutputInfo(const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetDirectory(const char* config, bool implib)
|
std::string cmTarget::GetDirectory(const char* config, bool implib) const
|
||||||
{
|
{
|
||||||
if (this->IsImported())
|
if (this->IsImported())
|
||||||
{
|
{
|
||||||
|
@ -2710,7 +2711,7 @@ std::string cmTarget::GetPDBDirectory(const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmTarget::GetLocation(const char* config)
|
const char* cmTarget::GetLocation(const char* config) const
|
||||||
{
|
{
|
||||||
if (this->IsImported())
|
if (this->IsImported())
|
||||||
{
|
{
|
||||||
|
@ -2723,7 +2724,7 @@ const char* cmTarget::GetLocation(const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmTarget::ImportedGetLocation(const char* config)
|
const char* cmTarget::ImportedGetLocation(const char* config) const
|
||||||
{
|
{
|
||||||
static std::string location;
|
static std::string location;
|
||||||
location = this->ImportedGetFullPath(config, false);
|
location = this->ImportedGetFullPath(config, false);
|
||||||
|
@ -2731,7 +2732,7 @@ const char* cmTarget::ImportedGetLocation(const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmTarget::NormalGetLocation(const char* config)
|
const char* cmTarget::NormalGetLocation(const char* config) const
|
||||||
{
|
{
|
||||||
static std::string location;
|
static std::string location;
|
||||||
// Handle the configuration-specific case first.
|
// Handle the configuration-specific case first.
|
||||||
|
@ -2826,13 +2827,13 @@ const char* cmTarget::GetFeature(const char* feature, const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char *cmTarget::GetProperty(const char* prop)
|
const char *cmTarget::GetProperty(const char* prop) const
|
||||||
{
|
{
|
||||||
return this->GetProperty(prop, cmProperty::TARGET);
|
return this->GetProperty(prop, cmProperty::TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::HandleLocationPropertyPolicy()
|
bool cmTarget::HandleLocationPropertyPolicy() const
|
||||||
{
|
{
|
||||||
if (this->IsImported())
|
if (this->IsImported())
|
||||||
{
|
{
|
||||||
|
@ -2870,7 +2871,7 @@ bool cmTarget::HandleLocationPropertyPolicy()
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char *cmTarget::GetProperty(const char* prop,
|
const char *cmTarget::GetProperty(const char* prop,
|
||||||
cmProperty::ScopeType scope)
|
cmProperty::ScopeType scope) const
|
||||||
{
|
{
|
||||||
if(!prop)
|
if(!prop)
|
||||||
{
|
{
|
||||||
|
@ -3063,7 +3064,7 @@ const char *cmTarget::GetProperty(const char* prop,
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::GetPropertyAsBool(const char* prop)
|
bool cmTarget::GetPropertyAsBool(const char* prop) const
|
||||||
{
|
{
|
||||||
return cmSystemTools::IsOn(this->GetProperty(prop));
|
return cmSystemTools::IsOn(this->GetProperty(prop));
|
||||||
}
|
}
|
||||||
|
@ -3072,13 +3073,13 @@ bool cmTarget::GetPropertyAsBool(const char* prop)
|
||||||
class cmTargetCollectLinkLanguages
|
class cmTargetCollectLinkLanguages
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
cmTargetCollectLinkLanguages(cmTarget* target, const char* config,
|
cmTargetCollectLinkLanguages(cmTarget const* target, const char* config,
|
||||||
std::set<cmStdString>& languages,
|
std::set<cmStdString>& languages,
|
||||||
cmTarget* head):
|
cmTarget const* head):
|
||||||
Config(config), Languages(languages), HeadTarget(head)
|
Config(config), Languages(languages), HeadTarget(head)
|
||||||
{ this->Visited.insert(target); }
|
{ this->Visited.insert(target); }
|
||||||
|
|
||||||
void Visit(cmTarget* target)
|
void Visit(cmTarget const* target)
|
||||||
{
|
{
|
||||||
if(!target || !this->Visited.insert(target).second)
|
if(!target || !this->Visited.insert(target).second)
|
||||||
{
|
{
|
||||||
|
@ -3105,14 +3106,15 @@ public:
|
||||||
private:
|
private:
|
||||||
const char* Config;
|
const char* Config;
|
||||||
std::set<cmStdString>& Languages;
|
std::set<cmStdString>& Languages;
|
||||||
cmTarget* HeadTarget;
|
cmTarget const* HeadTarget;
|
||||||
std::set<cmTarget*> Visited;
|
std::set<cmTarget const*> Visited;
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmTarget::GetLinkerLanguage(const char* config, cmTarget *head)
|
const char* cmTarget::GetLinkerLanguage(const char* config,
|
||||||
|
cmTarget const* head) const
|
||||||
{
|
{
|
||||||
cmTarget *headTarget = head ? head : this;
|
cmTarget const* headTarget = head ? head : this;
|
||||||
const char* lang = this->GetLinkClosure(config, headTarget)
|
const char* lang = this->GetLinkClosure(config, headTarget)
|
||||||
->LinkerLanguage.c_str();
|
->LinkerLanguage.c_str();
|
||||||
return *lang? lang : 0;
|
return *lang? lang : 0;
|
||||||
|
@ -3120,7 +3122,7 @@ const char* cmTarget::GetLinkerLanguage(const char* config, cmTarget *head)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmTarget::LinkClosure const* cmTarget::GetLinkClosure(const char* config,
|
cmTarget::LinkClosure const* cmTarget::GetLinkClosure(const char* config,
|
||||||
cmTarget *head)
|
cmTarget const* head) const
|
||||||
{
|
{
|
||||||
TargetConfigPair key(head, cmSystemTools::UpperCase(config ? config : ""));
|
TargetConfigPair key(head, cmSystemTools::UpperCase(config ? config : ""));
|
||||||
cmTargetInternals::LinkClosureMapType::iterator
|
cmTargetInternals::LinkClosureMapType::iterator
|
||||||
|
@ -3139,12 +3141,12 @@ cmTarget::LinkClosure const* cmTarget::GetLinkClosure(const char* config,
|
||||||
class cmTargetSelectLinker
|
class cmTargetSelectLinker
|
||||||
{
|
{
|
||||||
int Preference;
|
int Preference;
|
||||||
cmTarget* Target;
|
cmTarget const* Target;
|
||||||
cmMakefile* Makefile;
|
cmMakefile* Makefile;
|
||||||
cmGlobalGenerator* GG;
|
cmGlobalGenerator* GG;
|
||||||
std::set<cmStdString> Preferred;
|
std::set<cmStdString> Preferred;
|
||||||
public:
|
public:
|
||||||
cmTargetSelectLinker(cmTarget* target): Preference(0), Target(target)
|
cmTargetSelectLinker(cmTarget const* target): Preference(0), Target(target)
|
||||||
{
|
{
|
||||||
this->Makefile = this->Target->GetMakefile();
|
this->Makefile = this->Target->GetMakefile();
|
||||||
this->GG = this->Makefile->GetLocalGenerator()->GetGlobalGenerator();
|
this->GG = this->Makefile->GetLocalGenerator()->GetGlobalGenerator();
|
||||||
|
@ -3190,7 +3192,7 @@ public:
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmTarget::ComputeLinkClosure(const char* config, LinkClosure& lc,
|
void cmTarget::ComputeLinkClosure(const char* config, LinkClosure& lc,
|
||||||
cmTarget *head)
|
cmTarget const* head) const
|
||||||
{
|
{
|
||||||
// Get languages built in this target.
|
// Get languages built in this target.
|
||||||
std::set<cmStdString> languages;
|
std::set<cmStdString> languages;
|
||||||
|
@ -3253,7 +3255,7 @@ void cmTarget::ComputeLinkClosure(const char* config, LinkClosure& lc,
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmTarget::GetSuffixVariableInternal(bool implib)
|
const char* cmTarget::GetSuffixVariableInternal(bool implib) const
|
||||||
{
|
{
|
||||||
switch(this->GetType())
|
switch(this->GetType())
|
||||||
{
|
{
|
||||||
|
@ -3279,7 +3281,7 @@ const char* cmTarget::GetSuffixVariableInternal(bool implib)
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmTarget::GetPrefixVariableInternal(bool implib)
|
const char* cmTarget::GetPrefixVariableInternal(bool implib) const
|
||||||
{
|
{
|
||||||
switch(this->GetType())
|
switch(this->GetType())
|
||||||
{
|
{
|
||||||
|
@ -3302,7 +3304,7 @@ const char* cmTarget::GetPrefixVariableInternal(bool implib)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetPDBName(const char* config)
|
std::string cmTarget::GetPDBName(const char* config) const
|
||||||
{
|
{
|
||||||
std::string prefix;
|
std::string prefix;
|
||||||
std::string base;
|
std::string base;
|
||||||
|
@ -3334,7 +3336,7 @@ std::string cmTarget::GetPDBName(const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::HasSOName(const char* config)
|
bool cmTarget::HasSOName(const char* config) const
|
||||||
{
|
{
|
||||||
// soname is supported only for shared libraries and modules,
|
// soname is supported only for shared libraries and modules,
|
||||||
// and then only when the platform supports an soname flag.
|
// and then only when the platform supports an soname flag.
|
||||||
|
@ -3346,7 +3348,7 @@ bool cmTarget::HasSOName(const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetSOName(const char* config)
|
std::string cmTarget::GetSOName(const char* config) const
|
||||||
{
|
{
|
||||||
if(this->IsImported())
|
if(this->IsImported())
|
||||||
{
|
{
|
||||||
|
@ -3474,7 +3476,7 @@ bool cmTarget::IsImportedSharedLibWithoutSOName(const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::NormalGetRealName(const char* config)
|
std::string cmTarget::NormalGetRealName(const char* config) const
|
||||||
{
|
{
|
||||||
// This should not be called for imported targets.
|
// This should not be called for imported targets.
|
||||||
// TODO: Split cmTarget into a class hierarchy to get compile-time
|
// TODO: Split cmTarget into a class hierarchy to get compile-time
|
||||||
|
@ -3512,7 +3514,7 @@ std::string cmTarget::NormalGetRealName(const char* config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetFullName(const char* config, bool implib)
|
std::string cmTarget::GetFullName(const char* config, bool implib) const
|
||||||
{
|
{
|
||||||
if(this->IsImported())
|
if(this->IsImported())
|
||||||
{
|
{
|
||||||
|
@ -3525,7 +3527,8 @@ std::string cmTarget::GetFullName(const char* config, bool implib)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetFullNameImported(const char* config, bool implib)
|
std::string
|
||||||
|
cmTarget::GetFullNameImported(const char* config, bool implib) const
|
||||||
{
|
{
|
||||||
return cmSystemTools::GetFilenameName(
|
return cmSystemTools::GetFilenameName(
|
||||||
this->ImportedGetFullPath(config, implib));
|
this->ImportedGetFullPath(config, implib));
|
||||||
|
@ -3541,7 +3544,7 @@ void cmTarget::GetFullNameComponents(std::string& prefix, std::string& base,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetFullPath(const char* config, bool implib,
|
std::string cmTarget::GetFullPath(const char* config, bool implib,
|
||||||
bool realname)
|
bool realname) const
|
||||||
{
|
{
|
||||||
if(this->IsImported())
|
if(this->IsImported())
|
||||||
{
|
{
|
||||||
|
@ -3555,7 +3558,7 @@ std::string cmTarget::GetFullPath(const char* config, bool implib,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::NormalGetFullPath(const char* config, bool implib,
|
std::string cmTarget::NormalGetFullPath(const char* config, bool implib,
|
||||||
bool realname)
|
bool realname) const
|
||||||
{
|
{
|
||||||
std::string fpath = this->GetDirectory(config, implib);
|
std::string fpath = this->GetDirectory(config, implib);
|
||||||
fpath += "/";
|
fpath += "/";
|
||||||
|
@ -3582,7 +3585,8 @@ std::string cmTarget::NormalGetFullPath(const char* config, bool implib,
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::ImportedGetFullPath(const char* config, bool implib)
|
std::string
|
||||||
|
cmTarget::ImportedGetFullPath(const char* config, bool implib) const
|
||||||
{
|
{
|
||||||
std::string result;
|
std::string result;
|
||||||
if(cmTarget::ImportInfo const* info = this->GetImportInfo(config, this))
|
if(cmTarget::ImportInfo const* info = this->GetImportInfo(config, this))
|
||||||
|
@ -3598,7 +3602,8 @@ std::string cmTarget::ImportedGetFullPath(const char* config, bool implib)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetFullNameInternal(const char* config, bool implib)
|
std::string
|
||||||
|
cmTarget::GetFullNameInternal(const char* config, bool implib) const
|
||||||
{
|
{
|
||||||
std::string prefix;
|
std::string prefix;
|
||||||
std::string base;
|
std::string base;
|
||||||
|
@ -3612,7 +3617,7 @@ void cmTarget::GetFullNameInternal(const char* config,
|
||||||
bool implib,
|
bool implib,
|
||||||
std::string& outPrefix,
|
std::string& outPrefix,
|
||||||
std::string& outBase,
|
std::string& outBase,
|
||||||
std::string& outSuffix)
|
std::string& outSuffix) const
|
||||||
{
|
{
|
||||||
// Use just the target name for non-main target types.
|
// Use just the target name for non-main target types.
|
||||||
if(this->GetType() != cmTarget::STATIC_LIBRARY &&
|
if(this->GetType() != cmTarget::STATIC_LIBRARY &&
|
||||||
|
@ -3750,7 +3755,7 @@ void cmTarget::GetLibraryNames(std::string& name,
|
||||||
std::string& realName,
|
std::string& realName,
|
||||||
std::string& impName,
|
std::string& impName,
|
||||||
std::string& pdbName,
|
std::string& pdbName,
|
||||||
const char* config)
|
const char* config) const
|
||||||
{
|
{
|
||||||
// This should not be called for imported targets.
|
// This should not be called for imported targets.
|
||||||
// TODO: Split cmTarget into a class hierarchy to get compile-time
|
// TODO: Split cmTarget into a class hierarchy to get compile-time
|
||||||
|
@ -3836,7 +3841,7 @@ void cmTarget::ComputeVersionedName(std::string& vName,
|
||||||
std::string const& base,
|
std::string const& base,
|
||||||
std::string const& suffix,
|
std::string const& suffix,
|
||||||
std::string const& name,
|
std::string const& name,
|
||||||
const char* version)
|
const char* version) const
|
||||||
{
|
{
|
||||||
vName = this->IsApple? (prefix+base) : name;
|
vName = this->IsApple? (prefix+base) : name;
|
||||||
if(version)
|
if(version)
|
||||||
|
@ -3852,7 +3857,7 @@ void cmTarget::GetExecutableNames(std::string& name,
|
||||||
std::string& realName,
|
std::string& realName,
|
||||||
std::string& impName,
|
std::string& impName,
|
||||||
std::string& pdbName,
|
std::string& pdbName,
|
||||||
const char* config)
|
const char* config) const
|
||||||
{
|
{
|
||||||
// This should not be called for imported targets.
|
// This should not be called for imported targets.
|
||||||
// TODO: Split cmTarget into a class hierarchy to get compile-time
|
// TODO: Split cmTarget into a class hierarchy to get compile-time
|
||||||
|
@ -3948,7 +3953,7 @@ void cmTarget::SetPropertyDefault(const char* property,
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::HaveBuildTreeRPATH(const char *config)
|
bool cmTarget::HaveBuildTreeRPATH(const char *config) const
|
||||||
{
|
{
|
||||||
if (this->GetPropertyAsBool("SKIP_BUILD_RPATH"))
|
if (this->GetPropertyAsBool("SKIP_BUILD_RPATH"))
|
||||||
{
|
{
|
||||||
|
@ -3960,7 +3965,7 @@ bool cmTarget::HaveBuildTreeRPATH(const char *config)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::HaveInstallTreeRPATH()
|
bool cmTarget::HaveInstallTreeRPATH() const
|
||||||
{
|
{
|
||||||
const char* install_rpath = this->GetProperty("INSTALL_RPATH");
|
const char* install_rpath = this->GetProperty("INSTALL_RPATH");
|
||||||
return (install_rpath && *install_rpath) &&
|
return (install_rpath && *install_rpath) &&
|
||||||
|
@ -4093,7 +4098,7 @@ std::string cmTarget::GetInstallNameDirForInstallTree()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char* cmTarget::GetOutputTargetType(bool implib)
|
const char* cmTarget::GetOutputTargetType(bool implib) const
|
||||||
{
|
{
|
||||||
switch(this->GetType())
|
switch(this->GetType())
|
||||||
{
|
{
|
||||||
|
@ -4150,7 +4155,7 @@ const char* cmTarget::GetOutputTargetType(bool implib)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::ComputeOutputDir(const char* config,
|
bool cmTarget::ComputeOutputDir(const char* config,
|
||||||
bool implib, std::string& out)
|
bool implib, std::string& out) const
|
||||||
{
|
{
|
||||||
bool usesDefaultOutputDir = false;
|
bool usesDefaultOutputDir = false;
|
||||||
|
|
||||||
|
@ -4230,7 +4235,7 @@ bool cmTarget::ComputeOutputDir(const char* config,
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::ComputePDBOutputDir(const char* config, std::string& out)
|
bool cmTarget::ComputePDBOutputDir(const char* config, std::string& out) const
|
||||||
{
|
{
|
||||||
// Look for a target property defining the target output directory
|
// Look for a target property defining the target output directory
|
||||||
// based on the target type.
|
// based on the target type.
|
||||||
|
@ -4296,7 +4301,7 @@ bool cmTarget::UsesDefaultOutputDir(const char* config, bool implib)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetOutputName(const char* config, bool implib)
|
std::string cmTarget::GetOutputName(const char* config, bool implib) const
|
||||||
{
|
{
|
||||||
std::vector<std::string> props;
|
std::vector<std::string> props;
|
||||||
std::string type = this->GetOutputTargetType(implib);
|
std::string type = this->GetOutputTargetType(implib);
|
||||||
|
@ -4333,7 +4338,7 @@ std::string cmTarget::GetOutputName(const char* config, bool implib)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetFrameworkVersion()
|
std::string cmTarget::GetFrameworkVersion() const
|
||||||
{
|
{
|
||||||
if(const char* fversion = this->GetProperty("FRAMEWORK_VERSION"))
|
if(const char* fversion = this->GetProperty("FRAMEWORK_VERSION"))
|
||||||
{
|
{
|
||||||
|
@ -4376,7 +4381,7 @@ const char* cmTarget::GetExportMacro()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsNullImpliedByLinkLibraries(const std::string &p)
|
bool cmTarget::IsNullImpliedByLinkLibraries(const std::string &p) const
|
||||||
{
|
{
|
||||||
return this->LinkImplicitNullProperties.find(p)
|
return this->LinkImplicitNullProperties.find(p)
|
||||||
!= this->LinkImplicitNullProperties.end();
|
!= this->LinkImplicitNullProperties.end();
|
||||||
|
@ -4384,20 +4389,21 @@ bool cmTarget::IsNullImpliedByLinkLibraries(const std::string &p)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
template<typename PropertyType>
|
template<typename PropertyType>
|
||||||
PropertyType getTypedProperty(cmTarget *tgt, const char *prop,
|
PropertyType getTypedProperty(cmTarget const* tgt, const char *prop,
|
||||||
PropertyType *);
|
PropertyType *);
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
template<>
|
template<>
|
||||||
bool getTypedProperty<bool>(cmTarget *tgt, const char *prop, bool *)
|
bool getTypedProperty<bool>(cmTarget const* tgt, const char *prop, bool *)
|
||||||
{
|
{
|
||||||
return tgt->GetPropertyAsBool(prop);
|
return tgt->GetPropertyAsBool(prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
template<>
|
template<>
|
||||||
const char *getTypedProperty<const char *>(cmTarget *tgt, const char *prop,
|
const char *getTypedProperty<const char *>(cmTarget const* tgt,
|
||||||
const char **)
|
const char *prop,
|
||||||
|
const char **)
|
||||||
{
|
{
|
||||||
return tgt->GetProperty(prop);
|
return tgt->GetProperty(prop);
|
||||||
}
|
}
|
||||||
|
@ -4507,7 +4513,7 @@ const char* impliedValue<const char*>(const char*)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
template<typename PropertyType>
|
template<typename PropertyType>
|
||||||
PropertyType checkInterfacePropertyCompatibility(cmTarget *tgt,
|
PropertyType checkInterfacePropertyCompatibility(cmTarget const* tgt,
|
||||||
const std::string &p,
|
const std::string &p,
|
||||||
const char *config,
|
const char *config,
|
||||||
const char *defaultValue,
|
const char *defaultValue,
|
||||||
|
@ -4656,7 +4662,7 @@ PropertyType checkInterfacePropertyCompatibility(cmTarget *tgt,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::GetLinkInterfaceDependentBoolProperty(const std::string &p,
|
bool cmTarget::GetLinkInterfaceDependentBoolProperty(const std::string &p,
|
||||||
const char *config)
|
const char *config) const
|
||||||
{
|
{
|
||||||
return checkInterfacePropertyCompatibility<bool>(this, p, config, "FALSE",
|
return checkInterfacePropertyCompatibility<bool>(this, p, config, "FALSE",
|
||||||
BoolType, 0);
|
BoolType, 0);
|
||||||
|
@ -4665,7 +4671,7 @@ bool cmTarget::GetLinkInterfaceDependentBoolProperty(const std::string &p,
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char * cmTarget::GetLinkInterfaceDependentStringProperty(
|
const char * cmTarget::GetLinkInterfaceDependentStringProperty(
|
||||||
const std::string &p,
|
const std::string &p,
|
||||||
const char *config)
|
const char *config) const
|
||||||
{
|
{
|
||||||
return checkInterfacePropertyCompatibility<const char *>(this,
|
return checkInterfacePropertyCompatibility<const char *>(this,
|
||||||
p,
|
p,
|
||||||
|
@ -4677,7 +4683,7 @@ const char * cmTarget::GetLinkInterfaceDependentStringProperty(
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char * cmTarget::GetLinkInterfaceDependentNumberMinProperty(
|
const char * cmTarget::GetLinkInterfaceDependentNumberMinProperty(
|
||||||
const std::string &p,
|
const std::string &p,
|
||||||
const char *config)
|
const char *config) const
|
||||||
{
|
{
|
||||||
return checkInterfacePropertyCompatibility<const char *>(this,
|
return checkInterfacePropertyCompatibility<const char *>(this,
|
||||||
p,
|
p,
|
||||||
|
@ -4689,7 +4695,7 @@ const char * cmTarget::GetLinkInterfaceDependentNumberMinProperty(
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char * cmTarget::GetLinkInterfaceDependentNumberMaxProperty(
|
const char * cmTarget::GetLinkInterfaceDependentNumberMaxProperty(
|
||||||
const std::string &p,
|
const std::string &p,
|
||||||
const char *config)
|
const char *config) const
|
||||||
{
|
{
|
||||||
return checkInterfacePropertyCompatibility<const char *>(this,
|
return checkInterfacePropertyCompatibility<const char *>(this,
|
||||||
p,
|
p,
|
||||||
|
@ -4699,7 +4705,7 @@ const char * cmTarget::GetLinkInterfaceDependentNumberMaxProperty(
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool isLinkDependentProperty(cmTarget *tgt, const std::string &p,
|
bool isLinkDependentProperty(cmTarget const* tgt, const std::string &p,
|
||||||
const char *interfaceProperty,
|
const char *interfaceProperty,
|
||||||
const char *config)
|
const char *config)
|
||||||
{
|
{
|
||||||
|
@ -4743,7 +4749,7 @@ bool isLinkDependentProperty(cmTarget *tgt, const std::string &p,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsLinkInterfaceDependentBoolProperty(const std::string &p,
|
bool cmTarget::IsLinkInterfaceDependentBoolProperty(const std::string &p,
|
||||||
const char *config)
|
const char *config) const
|
||||||
{
|
{
|
||||||
if (this->TargetTypeValue == OBJECT_LIBRARY)
|
if (this->TargetTypeValue == OBJECT_LIBRARY)
|
||||||
{
|
{
|
||||||
|
@ -4756,7 +4762,7 @@ bool cmTarget::IsLinkInterfaceDependentBoolProperty(const std::string &p,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsLinkInterfaceDependentStringProperty(const std::string &p,
|
bool cmTarget::IsLinkInterfaceDependentStringProperty(const std::string &p,
|
||||||
const char *config)
|
const char *config) const
|
||||||
{
|
{
|
||||||
if (this->TargetTypeValue == OBJECT_LIBRARY)
|
if (this->TargetTypeValue == OBJECT_LIBRARY)
|
||||||
{
|
{
|
||||||
|
@ -4768,7 +4774,7 @@ bool cmTarget::IsLinkInterfaceDependentStringProperty(const std::string &p,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsLinkInterfaceDependentNumberMinProperty(const std::string &p,
|
bool cmTarget::IsLinkInterfaceDependentNumberMinProperty(const std::string &p,
|
||||||
const char *config)
|
const char *config) const
|
||||||
{
|
{
|
||||||
if (this->TargetTypeValue == OBJECT_LIBRARY)
|
if (this->TargetTypeValue == OBJECT_LIBRARY)
|
||||||
{
|
{
|
||||||
|
@ -4780,7 +4786,7 @@ bool cmTarget::IsLinkInterfaceDependentNumberMinProperty(const std::string &p,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsLinkInterfaceDependentNumberMaxProperty(const std::string &p,
|
bool cmTarget::IsLinkInterfaceDependentNumberMaxProperty(const std::string &p,
|
||||||
const char *config)
|
const char *config) const
|
||||||
{
|
{
|
||||||
if (this->TargetTypeValue == OBJECT_LIBRARY)
|
if (this->TargetTypeValue == OBJECT_LIBRARY)
|
||||||
{
|
{
|
||||||
|
@ -4804,7 +4810,7 @@ void cmTarget::GetLanguages(std::set<cmStdString>& languages) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::IsChrpathUsed(const char* config)
|
bool cmTarget::IsChrpathUsed(const char* config) const
|
||||||
{
|
{
|
||||||
// Only certain target types have an rpath.
|
// Only certain target types have an rpath.
|
||||||
if(!(this->GetType() == cmTarget::SHARED_LIBRARY ||
|
if(!(this->GetType() == cmTarget::SHARED_LIBRARY ||
|
||||||
|
@ -4871,7 +4877,7 @@ bool cmTarget::IsChrpathUsed(const char* config)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmTarget::ImportInfo const*
|
cmTarget::ImportInfo const*
|
||||||
cmTarget::GetImportInfo(const char* config, cmTarget *headTarget)
|
cmTarget::GetImportInfo(const char* config, cmTarget const* headTarget) const
|
||||||
{
|
{
|
||||||
// There is no imported information for non-imported targets.
|
// There is no imported information for non-imported targets.
|
||||||
if(!this->IsImported())
|
if(!this->IsImported())
|
||||||
|
@ -4921,7 +4927,7 @@ cmTarget::GetImportInfo(const char* config, cmTarget *headTarget)
|
||||||
bool cmTarget::GetMappedConfig(std::string const& desired_config,
|
bool cmTarget::GetMappedConfig(std::string const& desired_config,
|
||||||
const char** loc,
|
const char** loc,
|
||||||
const char** imp,
|
const char** imp,
|
||||||
std::string& suffix)
|
std::string& suffix) const
|
||||||
{
|
{
|
||||||
// Track the configuration-specific property suffix.
|
// Track the configuration-specific property suffix.
|
||||||
suffix = "_";
|
suffix = "_";
|
||||||
|
@ -5043,7 +5049,7 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config,
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmTarget::ComputeImportInfo(std::string const& desired_config,
|
void cmTarget::ComputeImportInfo(std::string const& desired_config,
|
||||||
ImportInfo& info,
|
ImportInfo& info,
|
||||||
cmTarget *headTarget)
|
cmTarget const* headTarget) const
|
||||||
{
|
{
|
||||||
// This method finds information about an imported target from its
|
// This method finds information about an imported target from its
|
||||||
// properties. The "IMPORTED_" namespace is reserved for properties
|
// properties. The "IMPORTED_" namespace is reserved for properties
|
||||||
|
@ -5229,7 +5235,7 @@ void cmTarget::ComputeImportInfo(std::string const& desired_config,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmTarget::LinkInterface const* cmTarget::GetLinkInterface(const char* config,
|
cmTarget::LinkInterface const* cmTarget::GetLinkInterface(const char* config,
|
||||||
cmTarget *head)
|
cmTarget const* head) const
|
||||||
{
|
{
|
||||||
// Imported targets have their own link interface.
|
// Imported targets have their own link interface.
|
||||||
if(this->IsImported())
|
if(this->IsImported())
|
||||||
|
@ -5271,8 +5277,8 @@ cmTarget::LinkInterface const* cmTarget::GetLinkInterface(const char* config,
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmTarget::GetTransitivePropertyLinkLibraries(
|
void cmTarget::GetTransitivePropertyLinkLibraries(
|
||||||
const char* config,
|
const char* config,
|
||||||
cmTarget *headTarget,
|
cmTarget const* headTarget,
|
||||||
std::vector<std::string> &libs)
|
std::vector<std::string> &libs) const
|
||||||
{
|
{
|
||||||
cmTarget::LinkInterface const* iface = this->GetLinkInterface(config,
|
cmTarget::LinkInterface const* iface = this->GetLinkInterface(config,
|
||||||
headTarget);
|
headTarget);
|
||||||
|
@ -5312,7 +5318,7 @@ void cmTarget::GetTransitivePropertyLinkLibraries(
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
|
bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
|
||||||
cmTarget *headTarget)
|
cmTarget const* headTarget) const
|
||||||
{
|
{
|
||||||
// Construct the property name suffix for this configuration.
|
// Construct the property name suffix for this configuration.
|
||||||
std::string suffix = "_";
|
std::string suffix = "_";
|
||||||
|
@ -5574,7 +5580,7 @@ bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmTarget::LinkImplementation const*
|
cmTarget::LinkImplementation const*
|
||||||
cmTarget::GetLinkImplementation(const char* config, cmTarget *head)
|
cmTarget::GetLinkImplementation(const char* config, cmTarget const* head) const
|
||||||
{
|
{
|
||||||
// There is no link implementation for imported targets.
|
// There is no link implementation for imported targets.
|
||||||
if(this->IsImported())
|
if(this->IsImported())
|
||||||
|
@ -5604,7 +5610,7 @@ cmTarget::GetLinkImplementation(const char* config, cmTarget *head)
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmTarget::ComputeLinkImplementation(const char* config,
|
void cmTarget::ComputeLinkImplementation(const char* config,
|
||||||
LinkImplementation& impl,
|
LinkImplementation& impl,
|
||||||
cmTarget *head)
|
cmTarget const* head) const
|
||||||
{
|
{
|
||||||
// Compute which library configuration to link.
|
// Compute which library configuration to link.
|
||||||
cmTarget::LinkLibraryType linkType = this->ComputeLinkType(config);
|
cmTarget::LinkLibraryType linkType = this->ComputeLinkType(config);
|
||||||
|
@ -5686,7 +5692,8 @@ void cmTarget::ComputeLinkImplementation(const char* config,
|
||||||
// Get languages used in our source files.
|
// Get languages used in our source files.
|
||||||
this->GetLanguages(languages);
|
this->GetLanguages(languages);
|
||||||
// Get languages used in object library sources.
|
// Get languages used in object library sources.
|
||||||
for(std::vector<std::string>::iterator i = this->ObjectLibraries.begin();
|
for(std::vector<std::string>::const_iterator
|
||||||
|
i = this->ObjectLibraries.begin();
|
||||||
i != this->ObjectLibraries.end(); ++i)
|
i != this->ObjectLibraries.end(); ++i)
|
||||||
{
|
{
|
||||||
if(cmTarget* objLib = this->Makefile->FindTargetToUse(i->c_str()))
|
if(cmTarget* objLib = this->Makefile->FindTargetToUse(i->c_str()))
|
||||||
|
@ -5706,7 +5713,7 @@ void cmTarget::ComputeLinkImplementation(const char* config,
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::CheckCMP0004(std::string const& item)
|
std::string cmTarget::CheckCMP0004(std::string const& item) const
|
||||||
{
|
{
|
||||||
// Strip whitespace off the library names because we used to do this
|
// Strip whitespace off the library names because we used to do this
|
||||||
// in case variables were expanded at generate time. We no longer
|
// in case variables were expanded at generate time. We no longer
|
||||||
|
@ -5765,14 +5772,14 @@ std::string cmTarget::CheckCMP0004(std::string const& item)
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename PropertyType>
|
template<typename PropertyType>
|
||||||
PropertyType getLinkInterfaceDependentProperty(cmTarget *tgt,
|
PropertyType getLinkInterfaceDependentProperty(cmTarget const* tgt,
|
||||||
const std::string prop,
|
const std::string prop,
|
||||||
const char *config,
|
const char *config,
|
||||||
CompatibleType,
|
CompatibleType,
|
||||||
PropertyType *);
|
PropertyType *);
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
bool getLinkInterfaceDependentProperty(cmTarget *tgt,
|
bool getLinkInterfaceDependentProperty(cmTarget const* tgt,
|
||||||
const std::string prop,
|
const std::string prop,
|
||||||
const char *config,
|
const char *config,
|
||||||
CompatibleType, bool *)
|
CompatibleType, bool *)
|
||||||
|
@ -5781,7 +5788,7 @@ bool getLinkInterfaceDependentProperty(cmTarget *tgt,
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
const char * getLinkInterfaceDependentProperty(cmTarget *tgt,
|
const char * getLinkInterfaceDependentProperty(cmTarget const* tgt,
|
||||||
const std::string prop,
|
const std::string prop,
|
||||||
const char *config,
|
const char *config,
|
||||||
CompatibleType t,
|
CompatibleType t,
|
||||||
|
@ -5805,7 +5812,7 @@ const char * getLinkInterfaceDependentProperty(cmTarget *tgt,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
template<typename PropertyType>
|
template<typename PropertyType>
|
||||||
void checkPropertyConsistency(cmTarget *depender, cmTarget *dependee,
|
void checkPropertyConsistency(cmTarget const* depender, cmTarget *dependee,
|
||||||
const char *propName,
|
const char *propName,
|
||||||
std::set<cmStdString> &emitted,
|
std::set<cmStdString> &emitted,
|
||||||
const char *config,
|
const char *config,
|
||||||
|
@ -5897,7 +5904,7 @@ static cmStdString intersect(const std::set<cmStdString> &s1,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmTarget::CheckPropertyCompatibility(cmComputeLinkInformation *info,
|
void cmTarget::CheckPropertyCompatibility(cmComputeLinkInformation *info,
|
||||||
const char* config)
|
const char* config) const
|
||||||
{
|
{
|
||||||
const cmComputeLinkInformation::ItemVector &deps = info->GetItems();
|
const cmComputeLinkInformation::ItemVector &deps = info->GetItems();
|
||||||
|
|
||||||
|
@ -6000,9 +6007,9 @@ void cmTarget::CheckPropertyCompatibility(cmComputeLinkInformation *info,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmComputeLinkInformation*
|
cmComputeLinkInformation*
|
||||||
cmTarget::GetLinkInformation(const char* config, cmTarget *head)
|
cmTarget::GetLinkInformation(const char* config, cmTarget const* head) const
|
||||||
{
|
{
|
||||||
cmTarget *headTarget = head ? head : this;
|
cmTarget const* headTarget = head ? head : this;
|
||||||
// Lookup any existing information for this configuration.
|
// Lookup any existing information for this configuration.
|
||||||
TargetConfigPair key(headTarget,
|
TargetConfigPair key(headTarget,
|
||||||
cmSystemTools::UpperCase(config?config:""));
|
cmSystemTools::UpperCase(config?config:""));
|
||||||
|
@ -6033,7 +6040,7 @@ cmTarget::GetLinkInformation(const char* config, cmTarget *head)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetFrameworkDirectory(const char* config,
|
std::string cmTarget::GetFrameworkDirectory(const char* config,
|
||||||
bool rootDir)
|
bool rootDir) const
|
||||||
{
|
{
|
||||||
std::string fpath;
|
std::string fpath;
|
||||||
fpath += this->GetOutputName(config, false);
|
fpath += this->GetOutputName(config, false);
|
||||||
|
@ -6048,7 +6055,7 @@ std::string cmTarget::GetFrameworkDirectory(const char* config,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetCFBundleDirectory(const char* config,
|
std::string cmTarget::GetCFBundleDirectory(const char* config,
|
||||||
bool contentOnly)
|
bool contentOnly) const
|
||||||
{
|
{
|
||||||
std::string fpath;
|
std::string fpath;
|
||||||
fpath += this->GetOutputName(config, false);
|
fpath += this->GetOutputName(config, false);
|
||||||
|
@ -6067,7 +6074,7 @@ std::string cmTarget::GetCFBundleDirectory(const char* config,
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::GetAppBundleDirectory(const char* config,
|
std::string cmTarget::GetAppBundleDirectory(const char* config,
|
||||||
bool contentOnly)
|
bool contentOnly) const
|
||||||
{
|
{
|
||||||
std::string fpath = this->GetFullName(config, false);
|
std::string fpath = this->GetFullName(config, false);
|
||||||
fpath += ".app/Contents";
|
fpath += ".app/Contents";
|
||||||
|
@ -6079,7 +6086,7 @@ std::string cmTarget::GetAppBundleDirectory(const char* config,
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmTarget::BuildMacContentDirectory(const std::string& base,
|
std::string cmTarget::BuildMacContentDirectory(const std::string& base,
|
||||||
const char* config,
|
const char* config,
|
||||||
bool contentOnly)
|
bool contentOnly) const
|
||||||
{
|
{
|
||||||
std::string fpath = base;
|
std::string fpath = base;
|
||||||
if(this->IsAppBundleOnApple())
|
if(this->IsAppBundleOnApple())
|
||||||
|
|
|
@ -36,9 +36,10 @@ class cmListFileBacktrace;
|
||||||
class cmTarget;
|
class cmTarget;
|
||||||
|
|
||||||
struct cmTargetLinkInformationMap:
|
struct cmTargetLinkInformationMap:
|
||||||
public std::map<std::pair<cmTarget*, std::string>, cmComputeLinkInformation*>
|
public std::map<std::pair<cmTarget const* , std::string>,
|
||||||
|
cmComputeLinkInformation*>
|
||||||
{
|
{
|
||||||
typedef std::map<std::pair<cmTarget*, std::string>,
|
typedef std::map<std::pair<cmTarget const* , std::string>,
|
||||||
cmComputeLinkInformation*> derived;
|
cmComputeLinkInformation*> derived;
|
||||||
cmTargetLinkInformationMap() {}
|
cmTargetLinkInformationMap() {}
|
||||||
cmTargetLinkInformationMap(cmTargetLinkInformationMap const& r);
|
cmTargetLinkInformationMap(cmTargetLinkInformationMap const& r);
|
||||||
|
@ -94,7 +95,7 @@ public:
|
||||||
|
|
||||||
///! Set/Get the name of the target
|
///! Set/Get the name of the target
|
||||||
const char* GetName() const {return this->Name.c_str();}
|
const char* GetName() const {return this->Name.c_str();}
|
||||||
const char* GetExportName();
|
const char* GetExportName() const;
|
||||||
|
|
||||||
///! Set the cmMakefile that owns this target
|
///! Set the cmMakefile that owns this target
|
||||||
void SetMakefile(cmMakefile *mf);
|
void SetMakefile(cmMakefile *mf);
|
||||||
|
@ -176,13 +177,13 @@ public:
|
||||||
{return this->OriginalLinkLibraries;}
|
{return this->OriginalLinkLibraries;}
|
||||||
void GetDirectLinkLibraries(const char *config,
|
void GetDirectLinkLibraries(const char *config,
|
||||||
std::vector<std::string> &,
|
std::vector<std::string> &,
|
||||||
cmTarget *head);
|
cmTarget const* head) const;
|
||||||
void GetInterfaceLinkLibraries(const char *config,
|
void GetInterfaceLinkLibraries(const char *config,
|
||||||
std::vector<std::string> &,
|
std::vector<std::string> &,
|
||||||
cmTarget *head);
|
cmTarget *head);
|
||||||
|
|
||||||
/** Compute the link type to use for the given configuration. */
|
/** Compute the link type to use for the given configuration. */
|
||||||
LinkLibraryType ComputeLinkType(const char* config);
|
LinkLibraryType ComputeLinkType(const char* config) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear the dependency information recorded for this target, if any.
|
* Clear the dependency information recorded for this target, if any.
|
||||||
|
@ -204,7 +205,7 @@ public:
|
||||||
void MergeLinkLibraries( cmMakefile& mf, const char* selfname,
|
void MergeLinkLibraries( cmMakefile& mf, const char* selfname,
|
||||||
const LinkLibraryVectorType& libs );
|
const LinkLibraryVectorType& libs );
|
||||||
|
|
||||||
const std::vector<std::string>& GetLinkDirectories();
|
const std::vector<std::string>& GetLinkDirectories() const;
|
||||||
|
|
||||||
void AddLinkDirectory(const char* d);
|
void AddLinkDirectory(const char* d);
|
||||||
|
|
||||||
|
@ -226,7 +227,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Get/Set whether there is an install rule for this target.
|
* Get/Set whether there is an install rule for this target.
|
||||||
*/
|
*/
|
||||||
bool GetHaveInstallRule() { return this->HaveInstallRule; }
|
bool GetHaveInstallRule() const { return this->HaveInstallRule; }
|
||||||
void SetHaveInstallRule(bool h) { this->HaveInstallRule = h; }
|
void SetHaveInstallRule(bool h) { this->HaveInstallRule = h; }
|
||||||
|
|
||||||
/** Add a utility on which this project depends. A utility is an executable
|
/** Add a utility on which this project depends. A utility is an executable
|
||||||
|
@ -243,9 +244,9 @@ public:
|
||||||
///! Set/Get a property of this target file
|
///! Set/Get a property of this target file
|
||||||
void SetProperty(const char *prop, const char *value);
|
void SetProperty(const char *prop, const char *value);
|
||||||
void AppendProperty(const char* prop, const char* value,bool asString=false);
|
void AppendProperty(const char* prop, const char* value,bool asString=false);
|
||||||
const char *GetProperty(const char *prop);
|
const char *GetProperty(const char *prop) const;
|
||||||
const char *GetProperty(const char *prop, cmProperty::ScopeType scope);
|
const char *GetProperty(const char *prop, cmProperty::ScopeType scope) const;
|
||||||
bool GetPropertyAsBool(const char *prop);
|
bool GetPropertyAsBool(const char *prop) const;
|
||||||
void CheckProperty(const char* prop, cmMakefile* context);
|
void CheckProperty(const char* prop, cmMakefile* context);
|
||||||
|
|
||||||
const char* GetFeature(const char* feature, const char* config);
|
const char* GetFeature(const char* feature, const char* config);
|
||||||
|
@ -281,10 +282,10 @@ public:
|
||||||
/** Get the link interface for the given configuration. Returns 0
|
/** Get the link interface for the given configuration. Returns 0
|
||||||
if the target cannot be linked. */
|
if the target cannot be linked. */
|
||||||
LinkInterface const* GetLinkInterface(const char* config,
|
LinkInterface const* GetLinkInterface(const char* config,
|
||||||
cmTarget *headTarget);
|
cmTarget const* headTarget) const;
|
||||||
void GetTransitivePropertyLinkLibraries(const char* config,
|
void GetTransitivePropertyLinkLibraries(const char* config,
|
||||||
cmTarget *headTarget,
|
cmTarget const* headTarget,
|
||||||
std::vector<std::string> &libs);
|
std::vector<std::string> &libs) const;
|
||||||
|
|
||||||
/** The link implementation specifies the direct library
|
/** The link implementation specifies the direct library
|
||||||
dependencies needed by the object files of the target. */
|
dependencies needed by the object files of the target. */
|
||||||
|
@ -301,7 +302,7 @@ public:
|
||||||
std::vector<std::string> WrongConfigLibraries;
|
std::vector<std::string> WrongConfigLibraries;
|
||||||
};
|
};
|
||||||
LinkImplementation const* GetLinkImplementation(const char* config,
|
LinkImplementation const* GetLinkImplementation(const char* config,
|
||||||
cmTarget *head);
|
cmTarget const* head) const;
|
||||||
|
|
||||||
/** Link information from the transitive closure of the link
|
/** Link information from the transitive closure of the link
|
||||||
implementation and the interfaces of its dependencies. */
|
implementation and the interfaces of its dependencies. */
|
||||||
|
@ -313,17 +314,18 @@ public:
|
||||||
// Languages whose runtime libraries must be linked.
|
// Languages whose runtime libraries must be linked.
|
||||||
std::vector<std::string> Languages;
|
std::vector<std::string> Languages;
|
||||||
};
|
};
|
||||||
LinkClosure const* GetLinkClosure(const char* config, cmTarget *head);
|
LinkClosure const* GetLinkClosure(const char* config,
|
||||||
|
cmTarget const* head) const;
|
||||||
|
|
||||||
/** Strip off leading and trailing whitespace from an item named in
|
/** Strip off leading and trailing whitespace from an item named in
|
||||||
the link dependencies of this target. */
|
the link dependencies of this target. */
|
||||||
std::string CheckCMP0004(std::string const& item);
|
std::string CheckCMP0004(std::string const& item) const;
|
||||||
|
|
||||||
/** Get the directory in which this target will be built. If the
|
/** Get the directory in which this target will be built. If the
|
||||||
configuration name is given then the generator will add its
|
configuration name is given then the generator will add its
|
||||||
subdirectory for that configuration. Otherwise just the canonical
|
subdirectory for that configuration. Otherwise just the canonical
|
||||||
output directory is given. */
|
output directory is given. */
|
||||||
std::string GetDirectory(const char* config = 0, bool implib = false);
|
std::string GetDirectory(const char* config = 0, bool implib = false) const;
|
||||||
|
|
||||||
/** Get the directory in which this targets .pdb files will be placed.
|
/** Get the directory in which this targets .pdb files will be placed.
|
||||||
If the configuration name is given then the generator will add its
|
If the configuration name is given then the generator will add its
|
||||||
|
@ -334,7 +336,7 @@ public:
|
||||||
/** Get the location of the target in the build tree for the given
|
/** Get the location of the target in the build tree for the given
|
||||||
configuration. This location is suitable for use as the LOCATION
|
configuration. This location is suitable for use as the LOCATION
|
||||||
target property. */
|
target property. */
|
||||||
const char* GetLocation(const char* config);
|
const char* GetLocation(const char* config) const;
|
||||||
|
|
||||||
/** Get the target major and minor version numbers interpreted from
|
/** Get the target major and minor version numbers interpreted from
|
||||||
the VERSION property. Version 0 is returned if the property is
|
the VERSION property. Version 0 is returned if the property is
|
||||||
|
@ -358,23 +360,24 @@ public:
|
||||||
bool FindSourceFiles();
|
bool FindSourceFiles();
|
||||||
|
|
||||||
///! Return the preferred linker language for this target
|
///! Return the preferred linker language for this target
|
||||||
const char* GetLinkerLanguage(const char* config = 0, cmTarget *head = 0);
|
const char* GetLinkerLanguage(const char* config = 0,
|
||||||
|
cmTarget const* head = 0) const;
|
||||||
|
|
||||||
/** Get the full name of the target according to the settings in its
|
/** Get the full name of the target according to the settings in its
|
||||||
makefile. */
|
makefile. */
|
||||||
std::string GetFullName(const char* config=0, bool implib = false);
|
std::string GetFullName(const char* config=0, bool implib = false) const;
|
||||||
void GetFullNameComponents(std::string& prefix,
|
void GetFullNameComponents(std::string& prefix,
|
||||||
std::string& base, std::string& suffix,
|
std::string& base, std::string& suffix,
|
||||||
const char* config=0, bool implib = false);
|
const char* config=0, bool implib = false);
|
||||||
|
|
||||||
/** Get the name of the pdb file for the target. */
|
/** Get the name of the pdb file for the target. */
|
||||||
std::string GetPDBName(const char* config=0);
|
std::string GetPDBName(const char* config=0) const;
|
||||||
|
|
||||||
/** Whether this library has soname enabled and platform supports it. */
|
/** Whether this library has soname enabled and platform supports it. */
|
||||||
bool HasSOName(const char* config);
|
bool HasSOName(const char* config) const;
|
||||||
|
|
||||||
/** Get the soname of the target. Allowed only for a shared library. */
|
/** Get the soname of the target. Allowed only for a shared library. */
|
||||||
std::string GetSOName(const char* config);
|
std::string GetSOName(const char* config) const;
|
||||||
|
|
||||||
/** Whether this library has \@rpath and platform supports it. */
|
/** Whether this library has \@rpath and platform supports it. */
|
||||||
bool HasMacOSXRpath(const char* config);
|
bool HasMacOSXRpath(const char* config);
|
||||||
|
@ -386,21 +389,21 @@ public:
|
||||||
/** Get the full path to the target according to the settings in its
|
/** Get the full path to the target according to the settings in its
|
||||||
makefile and the configuration type. */
|
makefile and the configuration type. */
|
||||||
std::string GetFullPath(const char* config=0, bool implib = false,
|
std::string GetFullPath(const char* config=0, bool implib = false,
|
||||||
bool realname = false);
|
bool realname = false) const;
|
||||||
|
|
||||||
/** Get the names of the library needed to generate a build rule
|
/** Get the names of the library needed to generate a build rule
|
||||||
that takes into account shared library version numbers. This
|
that takes into account shared library version numbers. This
|
||||||
should be called only on a library target. */
|
should be called only on a library target. */
|
||||||
void GetLibraryNames(std::string& name, std::string& soName,
|
void GetLibraryNames(std::string& name, std::string& soName,
|
||||||
std::string& realName, std::string& impName,
|
std::string& realName, std::string& impName,
|
||||||
std::string& pdbName, const char* config);
|
std::string& pdbName, const char* config) const;
|
||||||
|
|
||||||
/** Get the names of the executable needed to generate a build rule
|
/** Get the names of the executable needed to generate a build rule
|
||||||
that takes into account executable version numbers. This should
|
that takes into account executable version numbers. This should
|
||||||
be called only on an executable target. */
|
be called only on an executable target. */
|
||||||
void GetExecutableNames(std::string& name, std::string& realName,
|
void GetExecutableNames(std::string& name, std::string& realName,
|
||||||
std::string& impName,
|
std::string& impName,
|
||||||
std::string& pdbName, const char* config);
|
std::string& pdbName, const char* config) const;
|
||||||
|
|
||||||
/** Does this target have a GNU implib to convert to MS format? */
|
/** Does this target have a GNU implib to convert to MS format? */
|
||||||
bool HasImplibGNUtoMS();
|
bool HasImplibGNUtoMS();
|
||||||
|
@ -415,11 +418,11 @@ public:
|
||||||
*/
|
*/
|
||||||
bool NeedRelinkBeforeInstall(const char* config);
|
bool NeedRelinkBeforeInstall(const char* config);
|
||||||
|
|
||||||
bool HaveBuildTreeRPATH(const char *config);
|
bool HaveBuildTreeRPATH(const char *config) const;
|
||||||
bool HaveInstallTreeRPATH();
|
bool HaveInstallTreeRPATH() const;
|
||||||
|
|
||||||
/** Return true if builtin chrpath will work for this target */
|
/** Return true if builtin chrpath will work for this target */
|
||||||
bool IsChrpathUsed(const char* config);
|
bool IsChrpathUsed(const char* config) const;
|
||||||
|
|
||||||
/** Return the install name directory for the target in the
|
/** Return the install name directory for the target in the
|
||||||
* build tree. For example: "\@rpath/", "\@loader_path/",
|
* build tree. For example: "\@rpath/", "\@loader_path/",
|
||||||
|
@ -431,15 +434,15 @@ public:
|
||||||
std::string GetInstallNameDirForInstallTree();
|
std::string GetInstallNameDirForInstallTree();
|
||||||
|
|
||||||
cmComputeLinkInformation* GetLinkInformation(const char* config,
|
cmComputeLinkInformation* GetLinkInformation(const char* config,
|
||||||
cmTarget *head = 0);
|
cmTarget const* head = 0) const;
|
||||||
|
|
||||||
// Get the properties
|
// Get the properties
|
||||||
cmPropertyMap &GetProperties() { return this->Properties; };
|
cmPropertyMap &GetProperties() const { return this->Properties; };
|
||||||
|
|
||||||
bool GetMappedConfig(std::string const& desired_config,
|
bool GetMappedConfig(std::string const& desired_config,
|
||||||
const char** loc,
|
const char** loc,
|
||||||
const char** imp,
|
const char** imp,
|
||||||
std::string& suffix);
|
std::string& suffix) const;
|
||||||
|
|
||||||
// Define the properties
|
// Define the properties
|
||||||
static void DefineProperties(cmake *cm);
|
static void DefineProperties(cmake *cm);
|
||||||
|
@ -460,7 +463,7 @@ public:
|
||||||
|
|
||||||
/** Return whether this target is an executable with symbol exports
|
/** Return whether this target is an executable with symbol exports
|
||||||
enabled. */
|
enabled. */
|
||||||
bool IsExecutableWithExports();
|
bool IsExecutableWithExports() const;
|
||||||
|
|
||||||
/** Return whether this target may be used to link another target. */
|
/** Return whether this target may be used to link another target. */
|
||||||
bool IsLinkable();
|
bool IsLinkable();
|
||||||
|
@ -469,25 +472,25 @@ public:
|
||||||
bool IsDLLPlatform() { return this->DLLPlatform; }
|
bool IsDLLPlatform() { return this->DLLPlatform; }
|
||||||
|
|
||||||
/** Return whether or not the target has a DLL import library. */
|
/** Return whether or not the target has a DLL import library. */
|
||||||
bool HasImportLibrary();
|
bool HasImportLibrary() const;
|
||||||
|
|
||||||
/** Return whether this target is a shared library Framework on
|
/** Return whether this target is a shared library Framework on
|
||||||
Apple. */
|
Apple. */
|
||||||
bool IsFrameworkOnApple();
|
bool IsFrameworkOnApple() const;
|
||||||
|
|
||||||
/** Return whether this target is a CFBundle (plugin) on Apple. */
|
/** Return whether this target is a CFBundle (plugin) on Apple. */
|
||||||
bool IsCFBundleOnApple();
|
bool IsCFBundleOnApple() const;
|
||||||
|
|
||||||
/** Return whether this target is an executable Bundle on Apple. */
|
/** Return whether this target is an executable Bundle on Apple. */
|
||||||
bool IsAppBundleOnApple();
|
bool IsAppBundleOnApple() const;
|
||||||
|
|
||||||
/** Return whether this target is an executable Bundle, a framework
|
/** Return whether this target is an executable Bundle, a framework
|
||||||
or CFBundle on Apple. */
|
or CFBundle on Apple. */
|
||||||
bool IsBundleOnApple();
|
bool IsBundleOnApple() const;
|
||||||
|
|
||||||
/** Return the framework version string. Undefined if
|
/** Return the framework version string. Undefined if
|
||||||
IsFrameworkOnApple returns false. */
|
IsFrameworkOnApple returns false. */
|
||||||
std::string GetFrameworkVersion();
|
std::string GetFrameworkVersion() const;
|
||||||
|
|
||||||
/** Get a backtrace from the creation of the target. */
|
/** Get a backtrace from the creation of the target. */
|
||||||
cmListFileBacktrace const& GetBacktrace() const;
|
cmListFileBacktrace const& GetBacktrace() const;
|
||||||
|
@ -504,16 +507,17 @@ public:
|
||||||
bool implib);
|
bool implib);
|
||||||
|
|
||||||
/** @return whether this target have a well defined output file name. */
|
/** @return whether this target have a well defined output file name. */
|
||||||
bool HaveWellDefinedOutputFiles();
|
bool HaveWellDefinedOutputFiles() const;
|
||||||
|
|
||||||
/** @return the Mac framework directory without the base. */
|
/** @return the Mac framework directory without the base. */
|
||||||
std::string GetFrameworkDirectory(const char* config, bool rootDir);
|
std::string GetFrameworkDirectory(const char* config, bool rootDir) const;
|
||||||
|
|
||||||
/** @return the Mac CFBundle directory without the base */
|
/** @return the Mac CFBundle directory without the base */
|
||||||
std::string GetCFBundleDirectory(const char* config, bool contentOnly);
|
std::string GetCFBundleDirectory(const char* config, bool contentOnly) const;
|
||||||
|
|
||||||
/** @return the Mac App directory without the base */
|
/** @return the Mac App directory without the base */
|
||||||
std::string GetAppBundleDirectory(const char* config, bool contentOnly);
|
std::string GetAppBundleDirectory(const char* config,
|
||||||
|
bool contentOnly) const;
|
||||||
|
|
||||||
std::vector<std::string> GetIncludeDirectories(const char *config);
|
std::vector<std::string> GetIncludeDirectories(const char *config);
|
||||||
void InsertInclude(const cmValueWithOrigin &entry,
|
void InsertInclude(const cmValueWithOrigin &entry,
|
||||||
|
@ -528,25 +532,25 @@ public:
|
||||||
void GetCompileOptions(std::vector<std::string> &result,
|
void GetCompileOptions(std::vector<std::string> &result,
|
||||||
const char *config);
|
const char *config);
|
||||||
|
|
||||||
bool IsNullImpliedByLinkLibraries(const std::string &p);
|
bool IsNullImpliedByLinkLibraries(const std::string &p) const;
|
||||||
bool IsLinkInterfaceDependentBoolProperty(const std::string &p,
|
bool IsLinkInterfaceDependentBoolProperty(const std::string &p,
|
||||||
const char *config);
|
const char *config) const;
|
||||||
bool IsLinkInterfaceDependentStringProperty(const std::string &p,
|
bool IsLinkInterfaceDependentStringProperty(const std::string &p,
|
||||||
const char *config);
|
const char *config) const;
|
||||||
bool IsLinkInterfaceDependentNumberMinProperty(const std::string &p,
|
bool IsLinkInterfaceDependentNumberMinProperty(const std::string &p,
|
||||||
const char *config);
|
const char *config) const;
|
||||||
bool IsLinkInterfaceDependentNumberMaxProperty(const std::string &p,
|
bool IsLinkInterfaceDependentNumberMaxProperty(const std::string &p,
|
||||||
const char *config);
|
const char *config) const;
|
||||||
|
|
||||||
bool GetLinkInterfaceDependentBoolProperty(const std::string &p,
|
bool GetLinkInterfaceDependentBoolProperty(const std::string &p,
|
||||||
const char *config);
|
const char *config) const;
|
||||||
|
|
||||||
const char *GetLinkInterfaceDependentStringProperty(const std::string &p,
|
const char *GetLinkInterfaceDependentStringProperty(const std::string &p,
|
||||||
const char *config);
|
const char *config) const;
|
||||||
const char *GetLinkInterfaceDependentNumberMinProperty(const std::string &p,
|
const char *GetLinkInterfaceDependentNumberMinProperty(const std::string &p,
|
||||||
const char *config);
|
const char *config) const;
|
||||||
const char *GetLinkInterfaceDependentNumberMaxProperty(const std::string &p,
|
const char *GetLinkInterfaceDependentNumberMaxProperty(const std::string &p,
|
||||||
const char *config);
|
const char *config) const;
|
||||||
|
|
||||||
std::string GetDebugGeneratorExpressions(const std::string &value,
|
std::string GetDebugGeneratorExpressions(const std::string &value,
|
||||||
cmTarget::LinkLibraryType llt);
|
cmTarget::LinkLibraryType llt);
|
||||||
|
@ -562,7 +566,7 @@ public:
|
||||||
{ return this->TargetTypeValue == STATIC_LIBRARY; }
|
{ return this->TargetTypeValue == STATIC_LIBRARY; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool HandleLocationPropertyPolicy();
|
bool HandleLocationPropertyPolicy() const;
|
||||||
|
|
||||||
// The set of include directories that are marked as system include
|
// The set of include directories that are marked as system include
|
||||||
// directories.
|
// directories.
|
||||||
|
@ -621,42 +625,42 @@ private:
|
||||||
|
|
||||||
void AnalyzeLibDependencies( const cmMakefile& mf );
|
void AnalyzeLibDependencies( const cmMakefile& mf );
|
||||||
|
|
||||||
const char* GetSuffixVariableInternal(bool implib);
|
const char* GetSuffixVariableInternal(bool implib) const;
|
||||||
const char* GetPrefixVariableInternal(bool implib);
|
const char* GetPrefixVariableInternal(bool implib) const;
|
||||||
std::string GetFullNameInternal(const char* config, bool implib);
|
std::string GetFullNameInternal(const char* config, bool implib) const;
|
||||||
void GetFullNameInternal(const char* config, bool implib,
|
void GetFullNameInternal(const char* config, bool implib,
|
||||||
std::string& outPrefix, std::string& outBase,
|
std::string& outPrefix, std::string& outBase,
|
||||||
std::string& outSuffix);
|
std::string& outSuffix) const;
|
||||||
|
|
||||||
// Use a makefile variable to set a default for the given property.
|
// Use a makefile variable to set a default for the given property.
|
||||||
// If the variable is not defined use the given default instead.
|
// If the variable is not defined use the given default instead.
|
||||||
void SetPropertyDefault(const char* property, const char* default_value);
|
void SetPropertyDefault(const char* property, const char* default_value);
|
||||||
|
|
||||||
// Returns ARCHIVE, LIBRARY, or RUNTIME based on platform and type.
|
// Returns ARCHIVE, LIBRARY, or RUNTIME based on platform and type.
|
||||||
const char* GetOutputTargetType(bool implib);
|
const char* GetOutputTargetType(bool implib) const;
|
||||||
|
|
||||||
// Get the target base name.
|
// Get the target base name.
|
||||||
std::string GetOutputName(const char* config, bool implib);
|
std::string GetOutputName(const char* config, bool implib) const;
|
||||||
|
|
||||||
const char* ImportedGetLocation(const char* config);
|
const char* ImportedGetLocation(const char* config) const;
|
||||||
const char* NormalGetLocation(const char* config);
|
const char* NormalGetLocation(const char* config) const;
|
||||||
|
|
||||||
std::string GetFullNameImported(const char* config, bool implib);
|
std::string GetFullNameImported(const char* config, bool implib) const;
|
||||||
|
|
||||||
std::string ImportedGetFullPath(const char* config, bool implib);
|
std::string ImportedGetFullPath(const char* config, bool implib) const;
|
||||||
std::string NormalGetFullPath(const char* config, bool implib,
|
std::string NormalGetFullPath(const char* config, bool implib,
|
||||||
bool realname);
|
bool realname) const;
|
||||||
|
|
||||||
/** Get the real name of the target. Allowed only for non-imported
|
/** Get the real name of the target. Allowed only for non-imported
|
||||||
targets. When a library or executable file is versioned this is
|
targets. When a library or executable file is versioned this is
|
||||||
the full versioned name. If the target is not versioned this is
|
the full versioned name. If the target is not versioned this is
|
||||||
the same as GetFullName. */
|
the same as GetFullName. */
|
||||||
std::string NormalGetRealName(const char* config);
|
std::string NormalGetRealName(const char* config) const;
|
||||||
|
|
||||||
/** Append to @a base the mac content directory and return it. */
|
/** Append to @a base the mac content directory and return it. */
|
||||||
std::string BuildMacContentDirectory(const std::string& base,
|
std::string BuildMacContentDirectory(const std::string& base,
|
||||||
const char* config,
|
const char* config,
|
||||||
bool contentOnly);
|
bool contentOnly) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string Name;
|
std::string Name;
|
||||||
|
@ -677,7 +681,7 @@ private:
|
||||||
std::string ExportMacro;
|
std::string ExportMacro;
|
||||||
std::set<cmStdString> Utilities;
|
std::set<cmStdString> Utilities;
|
||||||
bool RecordDependencies;
|
bool RecordDependencies;
|
||||||
cmPropertyMap Properties;
|
mutable cmPropertyMap Properties;
|
||||||
LinkLibraryVectorType OriginalLinkLibraries;
|
LinkLibraryVectorType OriginalLinkLibraries;
|
||||||
bool DLLPlatform;
|
bool DLLPlatform;
|
||||||
bool IsApple;
|
bool IsApple;
|
||||||
|
@ -690,27 +694,30 @@ private:
|
||||||
|
|
||||||
// Cache target output paths for each configuration.
|
// Cache target output paths for each configuration.
|
||||||
struct OutputInfo;
|
struct OutputInfo;
|
||||||
OutputInfo const* GetOutputInfo(const char* config);
|
OutputInfo const* GetOutputInfo(const char* config) const;
|
||||||
bool ComputeOutputDir(const char* config, bool implib, std::string& out);
|
bool
|
||||||
bool ComputePDBOutputDir(const char* config, std::string& out);
|
ComputeOutputDir(const char* config, bool implib, std::string& out) const;
|
||||||
|
bool ComputePDBOutputDir(const char* config, std::string& out) const;
|
||||||
|
|
||||||
// Cache import information from properties for each configuration.
|
// Cache import information from properties for each configuration.
|
||||||
struct ImportInfo;
|
struct ImportInfo;
|
||||||
ImportInfo const* GetImportInfo(const char* config,
|
ImportInfo const* GetImportInfo(const char* config,
|
||||||
cmTarget *workingTarget);
|
cmTarget const* workingTarget) const;
|
||||||
void ComputeImportInfo(std::string const& desired_config, ImportInfo& info,
|
void ComputeImportInfo(std::string const& desired_config, ImportInfo& info,
|
||||||
cmTarget *head);
|
cmTarget const* head) const;
|
||||||
|
|
||||||
cmTargetLinkInformationMap LinkInformation;
|
mutable cmTargetLinkInformationMap LinkInformation;
|
||||||
void CheckPropertyCompatibility(cmComputeLinkInformation *info,
|
void CheckPropertyCompatibility(cmComputeLinkInformation *info,
|
||||||
const char* config);
|
const char* config) const;
|
||||||
|
|
||||||
bool ComputeLinkInterface(const char* config, LinkInterface& iface,
|
bool ComputeLinkInterface(const char* config, LinkInterface& iface,
|
||||||
cmTarget *head);
|
cmTarget const* head) const;
|
||||||
|
|
||||||
void ComputeLinkImplementation(const char* config,
|
void ComputeLinkImplementation(const char* config,
|
||||||
LinkImplementation& impl, cmTarget *head);
|
LinkImplementation& impl,
|
||||||
void ComputeLinkClosure(const char* config, LinkClosure& lc, cmTarget *head);
|
cmTarget const* head) const;
|
||||||
|
void ComputeLinkClosure(const char* config, LinkClosure& lc,
|
||||||
|
cmTarget const* head) const;
|
||||||
|
|
||||||
void ClearLinkMaps();
|
void ClearLinkMaps();
|
||||||
|
|
||||||
|
@ -740,7 +747,7 @@ private:
|
||||||
std::string const& base,
|
std::string const& base,
|
||||||
std::string const& suffix,
|
std::string const& suffix,
|
||||||
std::string const& name,
|
std::string const& name,
|
||||||
const char* version);
|
const char* version) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::map<cmStdString,cmTarget> cmTargets;
|
typedef std::map<cmStdString,cmTarget> cmTargets;
|
||||||
|
|
|
@ -384,8 +384,13 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle normal case first.
|
if(this->CurrentProcessingState == ProcessingLinkLibraries
|
||||||
if(this->CurrentProcessingState != ProcessingKeywordLinkInterface
|
&& !this->Target->GetProperty("LINK_INTERFACE_LIBRARIES"))
|
||||||
|
{
|
||||||
|
this->Makefile
|
||||||
|
->AddLinkLibraryForTarget(this->Target->GetName(), lib, llt);
|
||||||
|
}
|
||||||
|
else if(this->CurrentProcessingState != ProcessingKeywordLinkInterface
|
||||||
&& this->CurrentProcessingState != ProcessingPlainLinkInterface)
|
&& this->CurrentProcessingState != ProcessingPlainLinkInterface)
|
||||||
{
|
{
|
||||||
this->Makefile
|
this->Makefile
|
||||||
|
|
Loading…
Reference in New Issue