diff options
author | Stephen Kelly <steveire@gmail.com> | 2013-02-12 10:56:58 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2013-02-13 14:12:31 (GMT) |
commit | 3df36b5954bef70891a666756d325e8bb4d01c1a (patch) | |
tree | 055c8c03e49569ecb9319c3628ad23ca8017cfe3 /Source | |
parent | e1f908015f943ed507063260b3aae1f3b503237e (diff) | |
download | CMake-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.h | 8 | ||||
-rw-r--r-- | Source/cmExportFileGenerator.cxx | 66 | ||||
-rw-r--r-- | Source/cmExportFileGenerator.h | 4 | ||||
-rw-r--r-- | Source/cmGeneratorExpressionEvaluator.cxx | 94 |
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> ¶meters, - 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; } |