diff options
author | Brad King <brad.king@kitware.com> | 2017-11-30 12:57:01 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2017-11-30 12:57:08 (GMT) |
commit | 5d43e46ad5e2760f0e149959dc09b1414d54f362 (patch) | |
tree | d98f9c8893e3f31010a03bb72dc4ff131ab422de | |
parent | 21806e6f5f817c4c6cd1d2a304839b460d1fdbbc (diff) | |
parent | fb3c5bfdbe87786169dfe6d3ddaa86f4f6a5676f (diff) | |
download | CMake-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.rst | 7 | ||||
-rw-r--r-- | Source/cmTargetPropertyComputer.cxx | 7 | ||||
-rw-r--r-- | Tests/RunCMake/interface_library/whitelist.cmake | 10 |
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") |