Merge topic 'target-property-policy-context'
75c3d18d
Merge branch 'backport-target-property-policy-context' into target-property-policy-context911cc9a3
cmTarget: Evaluate CMP0026 and CMP0051 in calling contextcb810abe
cmTarget: Drop unused GetProperty signature23409f50
cmTarget: Evaluate CMP0026 in calling context2e75bf67
cmTarget: Drop unused GetProperty signature
This commit is contained in:
commit
c1e428c039
|
@ -302,7 +302,8 @@ bool cmGetPropertyCommand::HandleTargetMode()
|
|||
}
|
||||
if(cmTarget* target = this->Makefile->FindTargetToUse(this->Name))
|
||||
{
|
||||
return this->StoreResult(target->GetProperty(this->PropertyName));
|
||||
return this->StoreResult(target->GetProperty(this->PropertyName,
|
||||
this->Makefile));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -38,7 +38,7 @@ bool cmGetTargetPropertyCommand
|
|||
else if(cmTarget* tgt = this->Makefile->FindTargetToUse(targetName))
|
||||
{
|
||||
cmTarget& target = *tgt;
|
||||
const char* prop_cstr = target.GetProperty(args[2]);
|
||||
const char* prop_cstr = target.GetProperty(args[2], this->Makefile);
|
||||
if(prop_cstr)
|
||||
{
|
||||
prop = prop_cstr;
|
||||
|
|
|
@ -3178,13 +3178,7 @@ const char* cmTarget::GetFeature(const std::string& feature,
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
const char *cmTarget::GetProperty(const std::string& prop) const
|
||||
{
|
||||
return this->GetProperty(prop, cmProperty::TARGET);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmTarget::HandleLocationPropertyPolicy() const
|
||||
bool cmTarget::HandleLocationPropertyPolicy(cmMakefile* context) const
|
||||
{
|
||||
if (this->IsImported())
|
||||
{
|
||||
|
@ -3193,7 +3187,7 @@ bool cmTarget::HandleLocationPropertyPolicy() const
|
|||
cmOStringStream e;
|
||||
const char *modal = 0;
|
||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||
switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP0026))
|
||||
switch (context->GetPolicyStatus(cmPolicies::CMP0026))
|
||||
{
|
||||
case cmPolicies::WARN:
|
||||
e << (this->Makefile->GetPolicies()
|
||||
|
@ -3214,15 +3208,21 @@ bool cmTarget::HandleLocationPropertyPolicy() const
|
|||
<< this->GetName() << "\". Use the target name directly with "
|
||||
"add_custom_command, or use the generator expression $<TARGET_FILE>, "
|
||||
"as appropriate.\n";
|
||||
this->Makefile->IssueMessage(messageType, e.str());
|
||||
context->IssueMessage(messageType, e.str());
|
||||
}
|
||||
|
||||
return messageType != cmake::FATAL_ERROR;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
const char *cmTarget::GetProperty(const std::string& prop) const
|
||||
{
|
||||
return this->GetProperty(prop, this->Makefile);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
const char *cmTarget::GetProperty(const std::string& prop,
|
||||
cmProperty::ScopeType scope) const
|
||||
cmMakefile* context) const
|
||||
{
|
||||
if (this->GetType() == INTERFACE_LIBRARY
|
||||
&& !whiteListedInterfaceProperty(prop))
|
||||
|
@ -3230,7 +3230,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
|||
cmOStringStream e;
|
||||
e << "INTERFACE_LIBRARY targets may only have whitelisted properties. "
|
||||
"The property \"" << prop << "\" is not allowed.";
|
||||
this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
|
||||
context->IssueMessage(cmake::FATAL_ERROR, e.str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -3249,7 +3249,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
|||
{
|
||||
if(prop == "LOCATION")
|
||||
{
|
||||
if (!this->HandleLocationPropertyPolicy())
|
||||
if (!this->HandleLocationPropertyPolicy(context))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -3270,7 +3270,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
|||
// Support "LOCATION_<CONFIG>".
|
||||
if(cmHasLiteralPrefix(prop, "LOCATION_"))
|
||||
{
|
||||
if (!this->HandleLocationPropertyPolicy())
|
||||
if (!this->HandleLocationPropertyPolicy(context))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -3285,7 +3285,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
|||
std::string configName(prop.c_str(), prop.size() - 9);
|
||||
if(configName != "IMPORTED")
|
||||
{
|
||||
if (!this->HandleLocationPropertyPolicy())
|
||||
if (!this->HandleLocationPropertyPolicy(context))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -3423,7 +3423,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
|||
bool noMessage = true;
|
||||
cmOStringStream e;
|
||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||
switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0051))
|
||||
switch(context->GetPolicyStatus(cmPolicies::CMP0051))
|
||||
{
|
||||
case cmPolicies::WARN:
|
||||
e << (this->Makefile->GetPolicies()
|
||||
|
@ -3444,7 +3444,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
|||
"read at configure time. Code reading that property needs to be "
|
||||
"adapted to ignore the generator expression using the "
|
||||
"string(GENEX_STRIP) command.";
|
||||
this->Makefile->IssueMessage(messageType, e.str());
|
||||
context->IssueMessage(messageType, e.str());
|
||||
}
|
||||
if (addContent)
|
||||
{
|
||||
|
@ -3489,10 +3489,10 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
|||
}
|
||||
bool chain = false;
|
||||
const char *retVal =
|
||||
this->Properties.GetPropertyValue(prop, scope, chain);
|
||||
this->Properties.GetPropertyValue(prop, cmProperty::TARGET, chain);
|
||||
if (chain)
|
||||
{
|
||||
return this->Makefile->GetProperty(prop,scope);
|
||||
return this->Makefile->GetProperty(prop, cmProperty::TARGET);
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
|
|
@ -231,8 +231,7 @@ public:
|
|||
void AppendProperty(const std::string& prop, const char* value,
|
||||
bool asString=false);
|
||||
const char *GetProperty(const std::string& prop) const;
|
||||
const char *GetProperty(const std::string& prop,
|
||||
cmProperty::ScopeType scope) const;
|
||||
const char *GetProperty(const std::string& prop, cmMakefile* context) const;
|
||||
bool GetPropertyAsBool(const std::string& prop) const;
|
||||
void CheckProperty(const std::string& prop, cmMakefile* context) const;
|
||||
|
||||
|
@ -589,7 +588,7 @@ public:
|
|||
const std::string &compatibilityType) const;
|
||||
|
||||
private:
|
||||
bool HandleLocationPropertyPolicy() const;
|
||||
bool HandleLocationPropertyPolicy(cmMakefile* context) const;
|
||||
|
||||
// The set of include directories that are marked as system include
|
||||
// directories.
|
||||
|
|
|
@ -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\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
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)
|
||||
get_target_property(_loc somelib LOCATION)
|
||||
|
||||
add_subdirectory(CMP0026-WARN-Dir)
|
||||
get_target_property(_loc otherlib LOCATION)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
add_library(empty2 ../empty.cpp $<TARGET_OBJECTS:objects>)
|
|
@ -12,4 +12,20 @@ Call Stack \(most recent call first\):
|
|||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||
|
||||
Sources: "empty.cpp"$
|
||||
Sources: "empty.cpp"
|
||||
*
|
||||
CMake Warning \(dev\) at CMP0051-WARN.cmake:12 \(get_target_property\):
|
||||
Policy CMP0051 is not set: List TARGET_OBJECTS in SOURCES target property.
|
||||
Run "cmake --help-policy CMP0051" for policy details. Use the cmake_policy
|
||||
command to set the policy and suppress this warning.
|
||||
|
||||
Target "empty2" contains \$<TARGET_OBJECTS> generator expression in its
|
||||
sources list. This content was not previously part of the SOURCES property
|
||||
when that property was read at configure time. Code reading that property
|
||||
needs to be adapted to ignore the generator expression using the
|
||||
string\(GENEX_STRIP\) command.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||
|
||||
Sources: "../empty.cpp"$
|
||||
|
|
|
@ -6,3 +6,9 @@ add_library(empty empty.cpp $<TARGET_OBJECTS:objects>)
|
|||
get_target_property(srcs empty SOURCES)
|
||||
|
||||
message("Sources: \"${srcs}\"")
|
||||
|
||||
add_subdirectory(CMP0051-WARN-Dir)
|
||||
|
||||
get_target_property(srcs empty2 SOURCES)
|
||||
|
||||
message("Sources: \"${srcs}\"")
|
||||
|
|
Loading…
Reference in New Issue