summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-02-12 10:56:58 (GMT)
committerStephen Kelly <steveire@gmail.com>2013-02-13 14:12:31 (GMT)
commit3df36b5954bef70891a666756d325e8bb4d01c1a (patch)
tree055c8c03e49569ecb9319c3628ad23ca8017cfe3 /Source
parente1f908015f943ed507063260b3aae1f3b503237e (diff)
downloadCMake-3df36b5954bef70891a666756d325e8bb4d01c1a.zip
CMake-3df36b5954bef70891a666756d325e8bb4d01c1a.tar.gz
CMake-3df36b5954bef70891a666756d325e8bb4d01c1a.tar.bz2
Revert "Add the $<LINKED:...> generator expression."
This reverts commit 0b92602b816e2584db3781b120a1e5200da72ada. Conflicts: Source/cmGeneratorExpressionEvaluator.cxx Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt Tests/CMakeCommands/target_include_directories/CMakeLists.txt
Diffstat (limited to 'Source')
-rw-r--r--Source/cmDocumentGeneratorExpressions.h8
-rw-r--r--Source/cmExportFileGenerator.cxx66
-rw-r--r--Source/cmExportFileGenerator.h4
-rw-r--r--Source/cmGeneratorExpressionEvaluator.cxx94
4 files changed, 8 insertions, 164 deletions
diff --git a/Source/cmDocumentGeneratorExpressions.h b/Source/cmDocumentGeneratorExpressions.h
index 3993f7d..8b80a8a 100644
--- a/Source/cmDocumentGeneratorExpressions.h
+++ b/Source/cmDocumentGeneratorExpressions.h
@@ -51,14 +51,6 @@
"on the target tgt.\n" \
"Note that tgt is not added as a dependency of the target this " \
"expression is evaluated on.\n" \
- " $<LINKED:item> = An empty string if item is not a " \
- "target. If item is a target then the " \
- "INTERFACE_INCLUDE_DIRECTORIES or INTERFACE_COMPILE_DEFINITIONS " \
- "content is read from the target. " \
- "This generator expression can only be used in evaluation of the " \
- "INCLUDE_DIRECTORIES or COMPILE_DEFINITIONS property. Note that " \
- "this expression is for internal use and may be changed or removed " \
- "in the future.\n" \
" $<TARGET_POLICY:pol> = '1' if the policy was NEW when " \
"the 'head' target was created, else '0'. If the policy was not " \
"set, the warning message for the policy will be emitted. This " \
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx
index fbed95a..ee8436c 100644
--- a/Source/cmExportFileGenerator.cxx
+++ b/Source/cmExportFileGenerator.cxx
@@ -25,8 +25,6 @@
#include <cmsys/auto_ptr.hxx>
-#include "assert.h"
-
//----------------------------------------------------------------------------
cmExportFileGenerator::cmExportFileGenerator()
{
@@ -162,7 +160,7 @@ void cmExportFileGenerator::PopulateInterfaceProperty(const char *propName,
preprocessRule);
if (!prepro.empty())
{
- this->ResolveTargetsInGeneratorExpressions(prepro, target, propName,
+ this->ResolveTargetsInGeneratorExpressions(prepro, target,
missingTargets);
properties[outputName] = prepro;
}
@@ -318,14 +316,13 @@ cmExportFileGenerator::AddTargetNamespace(std::string &input,
void
cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
std::string &input,
- cmTarget* target, const char *propName,
+ cmTarget* target,
std::vector<std::string> &missingTargets,
FreeTargetsReplace replace)
{
if (replace == NoReplaceFreeTargets)
{
- this->ResolveTargetsInGeneratorExpression(input, target, propName,
- missingTargets);
+ this->ResolveTargetsInGeneratorExpression(input, target, missingTargets);
return;
}
std::vector<std::string> parts;
@@ -344,7 +341,7 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
{
this->ResolveTargetsInGeneratorExpression(
*li,
- target, propName,
+ target,
missingTargets);
}
input += sep + *li;
@@ -356,7 +353,7 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
void
cmExportFileGenerator::ResolveTargetsInGeneratorExpression(
std::string &input,
- cmTarget* target, const char *propName,
+ cmTarget* target,
std::vector<std::string> &missingTargets)
{
std::string::size_type pos = 0;
@@ -393,57 +390,6 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpression(
std::string errorString;
pos = 0;
lastPos = pos;
- while((pos = input.find("$<LINKED:", lastPos)) != input.npos)
- {
- std::string::size_type nameStartPos = pos + sizeof("$<LINKED:") - 1;
- std::string::size_type endPos = input.find(">", nameStartPos);
- if (endPos == input.npos)
- {
- errorString = "$<LINKED:...> expression incomplete";
- break;
- }
- std::string targetName = input.substr(nameStartPos,
- endPos - nameStartPos);
- if(targetName.find("$<") != input.npos)
- {
- errorString = "$<LINKED:...> requires its parameter to be a "
- "literal.";
- break;
- }
- if (this->AddTargetNamespace(targetName, target, missingTargets))
- {
- assert(propName); // The link libraries strings will
- // never contain $<LINKED>
- std::string replacement = "$<TARGET_PROPERTY:"
- + targetName + "," + propName;
- input.replace(pos, endPos - pos, replacement);
- lastPos = pos + replacement.size() + 1;
- }
- else
- {
- if (pos != 0)
- {
- if (input[pos - 1] == ';')
- {
- --pos;
- }
- }
- else if (input[endPos + 1] == ';')
- {
- ++endPos;
- }
- input.replace(pos, endPos - pos + 1, "");
- lastPos = pos;
- }
- }
- if (!errorString.empty())
- {
- mf->IssueMessage(cmake::FATAL_ERROR, errorString);
- return;
- }
-
- pos = 0;
- lastPos = pos;
while((pos = input.find("$<TARGET_NAME:", lastPos)) != input.npos)
{
std::string::size_type nameStartPos = pos + sizeof("$<TARGET_NAME:") - 1;
@@ -537,7 +483,7 @@ cmExportFileGenerator
preprocessRule);
if (!prepro.empty())
{
- this->ResolveTargetsInGeneratorExpressions(prepro, target, 0,
+ this->ResolveTargetsInGeneratorExpressions(prepro, target,
missingTargets,
ReplaceFreeTargets);
properties["IMPORTED_LINK_INTERFACE_LIBRARIES" + suffix] = prepro;
diff --git a/Source/cmExportFileGenerator.h b/Source/cmExportFileGenerator.h
index 5ad27bf..776be61 100644
--- a/Source/cmExportFileGenerator.h
+++ b/Source/cmExportFileGenerator.h
@@ -119,7 +119,7 @@ protected:
};
void ResolveTargetsInGeneratorExpressions(std::string &input,
- cmTarget* target, const char *propName,
+ cmTarget* target,
std::vector<std::string> &missingTargets,
FreeTargetsReplace replace = NoReplaceFreeTargets);
@@ -150,7 +150,7 @@ private:
std::vector<std::string> &missingTargets);
void ResolveTargetsInGeneratorExpression(std::string &input,
- cmTarget* target, const char *propName,
+ cmTarget* target,
std::vector<std::string> &missingTargets);
virtual void ReplaceInstallPrefix(std::string &input);
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index eb8cdc8..cd6a40b 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -713,98 +713,6 @@ static const struct InstallPrefixNode : public cmGeneratorExpressionNode
} installPrefixNode;
//----------------------------------------------------------------------------
-static const struct LinkedNode : public cmGeneratorExpressionNode
-{
- LinkedNode() {}
-
- virtual bool GeneratesContent() const { return true; }
- virtual int NumExpectedParameters() const { return 1; }
- virtual bool RequiresLiteralInput() const { return true; }
-
- std::string Evaluate(const std::vector<std::string> &parameters,
- cmGeneratorExpressionContext *context,
- const GeneratorExpressionContent *content,
- cmGeneratorExpressionDAGChecker *dagChecker) const
- {
- if (dagChecker->EvaluatingIncludeDirectories())
- {
- return this->GetInterfaceProperty(parameters.front(),
- "INCLUDE_DIRECTORIES",
- context, content, dagChecker);
- }
- if (dagChecker->EvaluatingCompileDefinitions())
- {
- return this->GetInterfaceProperty(parameters.front(),
- "COMPILE_DEFINITIONS",
- context, content, dagChecker);
- }
-
- reportError(context, content->GetOriginalExpression(),
- "$<LINKED:...> may only be used in INCLUDE_DIRECTORIES and "
- "COMPILE_DEFINITIONS properties.");
-
- return std::string();
- }
-
-private:
- std::string GetInterfaceProperty(const std::string &item,
- const std::string &prop,
- cmGeneratorExpressionContext *context,
- const GeneratorExpressionContent *content,
- cmGeneratorExpressionDAGChecker *dagCheckerParent) const
- {
- cmTarget *target = context->CurrentTarget
- ->GetMakefile()->FindTargetToUse(item.c_str());
- if (!target)
- {
- return std::string();
- }
- std::string propertyName = "INTERFACE_" + prop;
- const char *propContent = target->GetProperty(propertyName.c_str());
- if (!propContent)
- {
- return std::string();
- }
-
- cmGeneratorExpressionDAGChecker dagChecker(context->Backtrace,
- target->GetName(),
- propertyName,
- content,
- dagCheckerParent);
-
- switch (dagChecker.check())
- {
- case cmGeneratorExpressionDAGChecker::SELF_REFERENCE:
- dagChecker.reportError(context, content->GetOriginalExpression());
- return std::string();
- case cmGeneratorExpressionDAGChecker::CYCLIC_REFERENCE:
- // No error. We just skip cyclic references.
- return std::string();
- case cmGeneratorExpressionDAGChecker::ALREADY_SEEN:
- // No error. We're not going to find anything new here.
- return std::string();
- case cmGeneratorExpressionDAGChecker::DAG:
- break;
- }
-
- cmGeneratorExpression ge(context->Backtrace);
- cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(propContent);
- std::string result = cge->Evaluate(context->Makefile,
- context->Config,
- context->Quiet,
- context->HeadTarget,
- target,
- &dagChecker);
- if (cge->GetHadContextSensitiveCondition())
- {
- context->HadContextSensitiveCondition = true;
- }
- return result;
- }
-
-} linkedNode;
-
-//----------------------------------------------------------------------------
template<bool linker, bool soname>
struct TargetFilesystemArtifactResultCreator
{
@@ -1038,8 +946,6 @@ cmGeneratorExpressionNode* GetNode(const std::string &identifier)
return &targetDefinedNode;
else if (identifier == "INSTALL_PREFIX")
return &installPrefixNode;
- else if (identifier == "LINKED")
- return &linkedNode;
return 0;
}