Merge branch 'backport-target-property-policy-context' into release
This commit is contained in:
commit
39ae025842
@ -302,7 +302,8 @@ bool cmGetPropertyCommand::HandleTargetMode()
|
|||||||
}
|
}
|
||||||
if(cmTarget* target = this->Makefile->FindTargetToUse(this->Name))
|
if(cmTarget* target = this->Makefile->FindTargetToUse(this->Name))
|
||||||
{
|
{
|
||||||
return this->StoreResult(target->GetProperty(this->PropertyName.c_str()));
|
return this->StoreResult(target->GetProperty(this->PropertyName.c_str(),
|
||||||
|
this->Makefile));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -38,7 +38,7 @@ bool cmGetTargetPropertyCommand
|
|||||||
else if(cmTarget* tgt = this->Makefile->FindTargetToUse(targetName))
|
else if(cmTarget* tgt = this->Makefile->FindTargetToUse(targetName))
|
||||||
{
|
{
|
||||||
cmTarget& target = *tgt;
|
cmTarget& target = *tgt;
|
||||||
prop = target.GetProperty(args[2].c_str());
|
prop = target.GetProperty(args[2].c_str(), this->Makefile);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2624,13 +2624,7 @@ const char* cmTarget::GetFeature(const char* feature, const char* config) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char *cmTarget::GetProperty(const char* prop) const
|
bool cmTarget::HandleLocationPropertyPolicy(cmMakefile* context) const
|
||||||
{
|
|
||||||
return this->GetProperty(prop, cmProperty::TARGET);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
bool cmTarget::HandleLocationPropertyPolicy() const
|
|
||||||
{
|
{
|
||||||
if (this->IsImported())
|
if (this->IsImported())
|
||||||
{
|
{
|
||||||
@ -2639,7 +2633,7 @@ bool cmTarget::HandleLocationPropertyPolicy() const
|
|||||||
cmOStringStream e;
|
cmOStringStream e;
|
||||||
const char *modal = 0;
|
const char *modal = 0;
|
||||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||||
switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP0026))
|
switch (context->GetPolicyStatus(cmPolicies::CMP0026))
|
||||||
{
|
{
|
||||||
case cmPolicies::WARN:
|
case cmPolicies::WARN:
|
||||||
e << (this->Makefile->GetPolicies()
|
e << (this->Makefile->GetPolicies()
|
||||||
@ -2660,15 +2654,21 @@ bool cmTarget::HandleLocationPropertyPolicy() const
|
|||||||
<< this->GetName() << "\". Use the target name directly with "
|
<< this->GetName() << "\". Use the target name directly with "
|
||||||
"add_custom_command, or use the generator expression $<TARGET_FILE>, "
|
"add_custom_command, or use the generator expression $<TARGET_FILE>, "
|
||||||
"as appropriate.\n";
|
"as appropriate.\n";
|
||||||
this->Makefile->IssueMessage(messageType, e.str().c_str());
|
context->IssueMessage(messageType, e.str().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
return messageType != cmake::FATAL_ERROR;
|
return messageType != cmake::FATAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
const char *cmTarget::GetProperty(const char* prop) const
|
||||||
|
{
|
||||||
|
return this->GetProperty(prop, this->Makefile);
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
const char *cmTarget::GetProperty(const char* prop,
|
const char *cmTarget::GetProperty(const char* prop,
|
||||||
cmProperty::ScopeType scope) const
|
cmMakefile* context) const
|
||||||
{
|
{
|
||||||
if(!prop)
|
if(!prop)
|
||||||
{
|
{
|
||||||
@ -2681,7 +2681,7 @@ const char *cmTarget::GetProperty(const char* prop,
|
|||||||
cmOStringStream e;
|
cmOStringStream e;
|
||||||
e << "INTERFACE_LIBRARY targets may only have whitelisted properties. "
|
e << "INTERFACE_LIBRARY targets may only have whitelisted properties. "
|
||||||
"The property \"" << prop << "\" is not allowed.";
|
"The property \"" << prop << "\" is not allowed.";
|
||||||
this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str().c_str());
|
context->IssueMessage(cmake::FATAL_ERROR, e.str().c_str());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2700,7 +2700,7 @@ const char *cmTarget::GetProperty(const char* prop,
|
|||||||
{
|
{
|
||||||
if(strcmp(prop,"LOCATION") == 0)
|
if(strcmp(prop,"LOCATION") == 0)
|
||||||
{
|
{
|
||||||
if (!this->HandleLocationPropertyPolicy())
|
if (!this->HandleLocationPropertyPolicy(context))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2721,7 +2721,7 @@ const char *cmTarget::GetProperty(const char* prop,
|
|||||||
// Support "LOCATION_<CONFIG>".
|
// Support "LOCATION_<CONFIG>".
|
||||||
if(cmHasLiteralPrefix(prop, "LOCATION_"))
|
if(cmHasLiteralPrefix(prop, "LOCATION_"))
|
||||||
{
|
{
|
||||||
if (!this->HandleLocationPropertyPolicy())
|
if (!this->HandleLocationPropertyPolicy(context))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2736,7 +2736,7 @@ const char *cmTarget::GetProperty(const char* prop,
|
|||||||
std::string configName(prop, strlen(prop) - 9);
|
std::string configName(prop, strlen(prop) - 9);
|
||||||
if(configName != "IMPORTED")
|
if(configName != "IMPORTED")
|
||||||
{
|
{
|
||||||
if (!this->HandleLocationPropertyPolicy())
|
if (!this->HandleLocationPropertyPolicy(context))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2857,10 +2857,10 @@ const char *cmTarget::GetProperty(const char* prop,
|
|||||||
}
|
}
|
||||||
bool chain = false;
|
bool chain = false;
|
||||||
const char *retVal =
|
const char *retVal =
|
||||||
this->Properties.GetPropertyValue(prop, scope, chain);
|
this->Properties.GetPropertyValue(prop, cmProperty::TARGET, chain);
|
||||||
if (chain)
|
if (chain)
|
||||||
{
|
{
|
||||||
return this->Makefile->GetProperty(prop,scope);
|
return this->Makefile->GetProperty(prop, cmProperty::TARGET);
|
||||||
}
|
}
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
@ -257,7 +257,7 @@ public:
|
|||||||
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;
|
const char *GetProperty(const char *prop) const;
|
||||||
const char *GetProperty(const char *prop, cmProperty::ScopeType scope) const;
|
const char *GetProperty(const char *prop, cmMakefile* context) const;
|
||||||
bool GetPropertyAsBool(const char *prop) const;
|
bool GetPropertyAsBool(const char *prop) const;
|
||||||
void CheckProperty(const char* prop, cmMakefile* context) const;
|
void CheckProperty(const char* prop, cmMakefile* context) const;
|
||||||
|
|
||||||
@ -580,7 +580,7 @@ public:
|
|||||||
const std::string &compatibilityType) const;
|
const std::string &compatibilityType) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool HandleLocationPropertyPolicy() const;
|
bool HandleLocationPropertyPolicy(cmMakefile* context) 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.
|
||||||
|
1
Tests/RunCMake/CMP0026/CMP0026-WARN-Dir/CMakeLists.txt
Normal file
1
Tests/RunCMake/CMP0026/CMP0026-WARN-Dir/CMakeLists.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
add_library(otherlib ../empty.cpp)
|
@ -10,3 +10,16 @@ CMake Warning \(dev\) at CMP0026-WARN.cmake:5 \(get_target_property\):
|
|||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
CMakeLists.txt:3 \(include\)
|
CMakeLists.txt:3 \(include\)
|
||||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||||
|
+
|
||||||
|
CMake Warning \(dev\) at CMP0026-WARN.cmake:8 \(get_target_property\):
|
||||||
|
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
|
||||||
|
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
|
||||||
|
command to set the policy and suppress this warning.
|
||||||
|
|
||||||
|
The LOCATION property should not be read from target "otherlib". Use the
|
||||||
|
target name directly with add_custom_command, or use the generator
|
||||||
|
expression \$<TARGET_FILE>, as appropriate.
|
||||||
|
|
||||||
|
Call Stack \(most recent call first\):
|
||||||
|
CMakeLists.txt:3 \(include\)
|
||||||
|
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||||
|
@ -3,3 +3,6 @@ enable_language(CXX)
|
|||||||
|
|
||||||
add_library(somelib empty.cpp)
|
add_library(somelib empty.cpp)
|
||||||
get_target_property(_loc somelib LOCATION)
|
get_target_property(_loc somelib LOCATION)
|
||||||
|
|
||||||
|
add_subdirectory(CMP0026-WARN-Dir)
|
||||||
|
get_target_property(_loc otherlib LOCATION)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user