summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-11-30 12:57:01 (GMT)
committerKitware Robot <kwrobot@kitware.com>2017-11-30 12:57:08 (GMT)
commit5d43e46ad5e2760f0e149959dc09b1414d54f362 (patch)
treed98f9c8893e3f31010a03bb72dc4ff131ab422de
parent21806e6f5f817c4c6cd1d2a304839b460d1fdbbc (diff)
parentfb3c5bfdbe87786169dfe6d3ddaa86f4f6a5676f (diff)
downloadCMake-5d43e46ad5e2760f0e149959dc09b1414d54f362.zip
CMake-5d43e46ad5e2760f0e149959dc09b1414d54f362.tar.gz
CMake-5d43e46ad5e2760f0e149959dc09b1414d54f362.tar.bz2
Merge topic 'whitelist-more-interface-properties'
fb3c5bfd cmTargetPropertyComputer: whitelist custom properties Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1515
-rw-r--r--Help/release/dev/whitelist-more-interface-properties.rst7
-rw-r--r--Source/cmTargetPropertyComputer.cxx7
-rw-r--r--Tests/RunCMake/interface_library/whitelist.cmake10
3 files changed, 24 insertions, 0 deletions
diff --git a/Help/release/dev/whitelist-more-interface-properties.rst b/Help/release/dev/whitelist-more-interface-properties.rst
new file mode 100644
index 0000000..793361c
--- /dev/null
+++ b/Help/release/dev/whitelist-more-interface-properties.rst
@@ -0,0 +1,7 @@
+whitelist-more-interface-properties
+-----------------------------------
+
+* ``INTERFACE`` libraries may now have custom properties set on them if they
+ start with either an underscore (``_``) or a lowercase ASCII character. The
+ original intention was to only allow properties which made sense for
+ ``INTERFACE`` libraries, but it also blocked usage of custom properties.
diff --git a/Source/cmTargetPropertyComputer.cxx b/Source/cmTargetPropertyComputer.cxx
index ed9026e..06ce0b1 100644
--- a/Source/cmTargetPropertyComputer.cxx
+++ b/Source/cmTargetPropertyComputer.cxx
@@ -3,6 +3,7 @@
#include "cmTargetPropertyComputer.h"
+#include <cctype>
#include <sstream>
#include <unordered_set>
@@ -49,6 +50,12 @@ bool cmTargetPropertyComputer::WhiteListedInterfaceProperty(
if (cmHasLiteralPrefix(prop, "INTERFACE_")) {
return true;
}
+ if (cmHasLiteralPrefix(prop, "_")) {
+ return true;
+ }
+ if (std::islower(prop[0])) {
+ return true;
+ }
static std::unordered_set<std::string> builtIns;
if (builtIns.empty()) {
builtIns.insert("COMPATIBLE_INTERFACE_BOOL");
diff --git a/Tests/RunCMake/interface_library/whitelist.cmake b/Tests/RunCMake/interface_library/whitelist.cmake
index 98ef05c..bf64f01 100644
--- a/Tests/RunCMake/interface_library/whitelist.cmake
+++ b/Tests/RunCMake/interface_library/whitelist.cmake
@@ -4,3 +4,13 @@ add_library(iface INTERFACE)
set_property(TARGET iface PROPERTY OUTPUT_NAME output)
set_property(TARGET iface APPEND PROPERTY OUTPUT_NAME append)
get_target_property(outname iface OUTPUT_NAME)
+
+# Properties starting with `_` are allowed.
+set_property(TARGET iface PROPERTY "_custom_property" output)
+set_property(TARGET iface APPEND PROPERTY "_custom_property" append)
+get_target_property(outname iface "_custom_property")
+
+# Properties starting with a lowercase letter are allowed.
+set_property(TARGET iface PROPERTY "custom_property" output)
+set_property(TARGET iface APPEND PROPERTY "custom_property" append)
+get_target_property(outname iface "custom_property")