cmTargetPropCommandBase: Restore ArgumentFlags enum value bool logic

The values of the cmTargetPropCommandBase::ArgumentFlags enum
are combined in boolean OR and AND operations in various places.
That used to be valid, but some values were added over time which did
not preserve support for such boolean logic. Update the enum values
such that they are increasing powers of 2 to restore that capability.

Fixes: #24199
This commit is contained in:
Craig Scott 2022-11-27 19:14:35 +11:00
parent 00630bbac7
commit dd3482f675
No known key found for this signature in database
GPG Key ID: 6FF37CBDCCADED9F
5 changed files with 11 additions and 2 deletions

View File

@ -24,8 +24,8 @@ public:
NO_FLAGS = 0x0,
PROCESS_BEFORE = 0x1,
PROCESS_AFTER = 0x2,
PROCESS_SYSTEM = 0x3,
PROCESS_REUSE_FROM = 0x4
PROCESS_SYSTEM = 0x4,
PROCESS_REUSE_FROM = 0x8
};
bool HandleArguments(std::vector<std::string> const& args,

View File

@ -1,6 +1,7 @@
include(RunCMake)
run_cmake(empty_keyword_args)
run_cmake(bad_keyword)
if (CMAKE_C_COMPILER_ID MATCHES "GNU|LCC|Clang")
macro(run_cmake_target test subtest target)

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1,2 @@
CMake Error at bad_keyword\.cmake:[0-9]+ \(target_compile_options\):
target_compile_options called with invalid arguments

View File

@ -0,0 +1,5 @@
add_library(iface INTERFACE)
# SYSTEM is a recognized keyword for the base class used to implement the
# command. Verify that we don't allow it.
target_compile_options(iface SYSTEM PRIVATE)