|
|
@@ -3,15 +3,12 @@
|
|
|
|
|
|
#include "cmTargetPropertyComputer.h"
|
|
|
|
|
|
-#include <cctype>
|
|
|
#include <sstream>
|
|
|
-#include <unordered_set>
|
|
|
|
|
|
#include "cmMessageType.h"
|
|
|
#include "cmMessenger.h"
|
|
|
#include "cmPolicies.h"
|
|
|
#include "cmStateSnapshot.h"
|
|
|
-#include "cmStringAlgorithms.h"
|
|
|
|
|
|
bool cmTargetPropertyComputer::HandleLocationPropertyPolicy(
|
|
|
std::string const& tgtName, cmMessenger* messenger,
|
|
|
@@ -44,69 +41,3 @@ bool cmTargetPropertyComputer::HandleLocationPropertyPolicy(
|
|
|
|
|
|
return messageType != MessageType::FATAL_ERROR;
|
|
|
}
|
|
|
-
|
|
|
-bool cmTargetPropertyComputer::WhiteListedInterfaceProperty(
|
|
|
- const std::string& prop)
|
|
|
-{
|
|
|
- if (cmHasLiteralPrefix(prop, "INTERFACE_")) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- if (cmHasLiteralPrefix(prop, "_")) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- if (std::islower(prop[0])) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- static std::unordered_set<std::string> const builtIns{
|
|
|
- "COMPATIBLE_INTERFACE_BOOL",
|
|
|
- "COMPATIBLE_INTERFACE_NUMBER_MAX",
|
|
|
- "COMPATIBLE_INTERFACE_NUMBER_MIN",
|
|
|
- "COMPATIBLE_INTERFACE_STRING",
|
|
|
- "DEPRECATION",
|
|
|
- "EXPORT_NAME",
|
|
|
- "EXPORT_PROPERTIES",
|
|
|
- "IMPORTED",
|
|
|
- "IMPORTED_GLOBAL",
|
|
|
- "MANUALLY_ADDED_DEPENDENCIES",
|
|
|
- "NAME",
|
|
|
- "PRIVATE_HEADER",
|
|
|
- "PUBLIC_HEADER",
|
|
|
- "TYPE"
|
|
|
- };
|
|
|
-
|
|
|
- if (builtIns.count(prop)) {
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- if (prop == "IMPORTED_CONFIGURATIONS" || prop == "IMPORTED_LIBNAME" ||
|
|
|
- cmHasLiteralPrefix(prop, "IMPORTED_LIBNAME_") ||
|
|
|
- cmHasLiteralPrefix(prop, "MAP_IMPORTED_CONFIG_")) {
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- // This property should not be allowed but was incorrectly added in
|
|
|
- // CMake 3.8. We can't remove it from the whitelist without breaking
|
|
|
- // projects that try to set it. One day we could warn about this, but
|
|
|
- // for now silently accept it.
|
|
|
- if (prop == "NO_SYSTEM_FROM_IMPORTED") {
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- return false;
|
|
|
-}
|
|
|
-
|
|
|
-bool cmTargetPropertyComputer::PassesWhitelist(
|
|
|
- cmStateEnums::TargetType tgtType, std::string const& prop,
|
|
|
- cmMessenger* messenger, cmListFileBacktrace const& context)
|
|
|
-{
|
|
|
- if (tgtType == cmStateEnums::INTERFACE_LIBRARY &&
|
|
|
- !WhiteListedInterfaceProperty(prop)) {
|
|
|
- std::ostringstream e;
|
|
|
- e << "INTERFACE_LIBRARY targets may only have whitelisted properties. "
|
|
|
- "The property \""
|
|
|
- << prop << "\" is not allowed.";
|
|
|
- messenger->IssueMessage(MessageType::FATAL_ERROR, e.str(), context);
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
-}
|