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))
|
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
|
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;
|
||||||
const char* prop_cstr = target.GetProperty(args[2]);
|
const char* prop_cstr = target.GetProperty(args[2], this->Makefile);
|
||||||
if(prop_cstr)
|
if(prop_cstr)
|
||||||
{
|
{
|
||||||
prop = 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
|
bool cmTarget::HandleLocationPropertyPolicy(cmMakefile* context) const
|
||||||
{
|
|
||||||
return this->GetProperty(prop, cmProperty::TARGET);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
bool cmTarget::HandleLocationPropertyPolicy() const
|
|
||||||
{
|
{
|
||||||
if (this->IsImported())
|
if (this->IsImported())
|
||||||
{
|
{
|
||||||
|
@ -3193,7 +3187,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()
|
||||||
|
@ -3214,15 +3208,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());
|
context->IssueMessage(messageType, e.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
return messageType != cmake::FATAL_ERROR;
|
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,
|
const char *cmTarget::GetProperty(const std::string& prop,
|
||||||
cmProperty::ScopeType scope) const
|
cmMakefile* context) const
|
||||||
{
|
{
|
||||||
if (this->GetType() == INTERFACE_LIBRARY
|
if (this->GetType() == INTERFACE_LIBRARY
|
||||||
&& !whiteListedInterfaceProperty(prop))
|
&& !whiteListedInterfaceProperty(prop))
|
||||||
|
@ -3230,7 +3230,7 @@ const char *cmTarget::GetProperty(const std::string& 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());
|
context->IssueMessage(cmake::FATAL_ERROR, e.str());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3249,7 +3249,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
||||||
{
|
{
|
||||||
if(prop == "LOCATION")
|
if(prop == "LOCATION")
|
||||||
{
|
{
|
||||||
if (!this->HandleLocationPropertyPolicy())
|
if (!this->HandleLocationPropertyPolicy(context))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3270,7 +3270,7 @@ const char *cmTarget::GetProperty(const std::string& 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;
|
||||||
}
|
}
|
||||||
|
@ -3285,7 +3285,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
||||||
std::string configName(prop.c_str(), prop.size() - 9);
|
std::string configName(prop.c_str(), prop.size() - 9);
|
||||||
if(configName != "IMPORTED")
|
if(configName != "IMPORTED")
|
||||||
{
|
{
|
||||||
if (!this->HandleLocationPropertyPolicy())
|
if (!this->HandleLocationPropertyPolicy(context))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3423,7 +3423,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
|
||||||
bool noMessage = true;
|
bool noMessage = true;
|
||||||
cmOStringStream e;
|
cmOStringStream e;
|
||||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||||
switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0051))
|
switch(context->GetPolicyStatus(cmPolicies::CMP0051))
|
||||||
{
|
{
|
||||||
case cmPolicies::WARN:
|
case cmPolicies::WARN:
|
||||||
e << (this->Makefile->GetPolicies()
|
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 "
|
"read at configure time. Code reading that property needs to be "
|
||||||
"adapted to ignore the generator expression using the "
|
"adapted to ignore the generator expression using the "
|
||||||
"string(GENEX_STRIP) command.";
|
"string(GENEX_STRIP) command.";
|
||||||
this->Makefile->IssueMessage(messageType, e.str());
|
context->IssueMessage(messageType, e.str());
|
||||||
}
|
}
|
||||||
if (addContent)
|
if (addContent)
|
||||||
{
|
{
|
||||||
|
@ -3489,10 +3489,10 @@ const char *cmTarget::GetProperty(const std::string& 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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -231,8 +231,7 @@ public:
|
||||||
void AppendProperty(const std::string& prop, const char* value,
|
void AppendProperty(const std::string& prop, const char* value,
|
||||||
bool asString=false);
|
bool asString=false);
|
||||||
const char *GetProperty(const std::string& prop) const;
|
const char *GetProperty(const std::string& prop) const;
|
||||||
const char *GetProperty(const std::string& prop,
|
const char *GetProperty(const std::string& prop, cmMakefile* context) const;
|
||||||
cmProperty::ScopeType scope) const;
|
|
||||||
bool GetPropertyAsBool(const std::string& prop) const;
|
bool GetPropertyAsBool(const std::string& prop) const;
|
||||||
void CheckProperty(const std::string& prop, cmMakefile* context) const;
|
void CheckProperty(const std::string& prop, cmMakefile* context) const;
|
||||||
|
|
||||||
|
@ -589,7 +588,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.
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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\)
|
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.
|
||||||
|
|
||||||
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)
|
get_target_property(srcs empty SOURCES)
|
||||||
|
|
||||||
message("Sources: \"${srcs}\"")
|
message("Sources: \"${srcs}\"")
|
||||||
|
|
||||||
|
add_subdirectory(CMP0051-WARN-Dir)
|
||||||
|
|
||||||
|
get_target_property(srcs empty2 SOURCES)
|
||||||
|
|
||||||
|
message("Sources: \"${srcs}\"")
|
||||||
|
|
Loading…
Reference in New Issue