mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 02:39:48 -06:00
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
61 lines
1.7 KiB
C++
61 lines
1.7 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#pragma once
|
|
|
|
#include "cmConfigure.h" // IWYU pragma: keep
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
class cmExecutionStatus;
|
|
class cmMakefile;
|
|
class cmTarget;
|
|
|
|
class cmTargetPropCommandBase
|
|
{
|
|
public:
|
|
cmTargetPropCommandBase(cmExecutionStatus& status);
|
|
virtual ~cmTargetPropCommandBase() = default;
|
|
|
|
void SetError(std::string const& e);
|
|
|
|
enum ArgumentFlags
|
|
{
|
|
NO_FLAGS = 0x0,
|
|
PROCESS_BEFORE = 0x1,
|
|
PROCESS_AFTER = 0x2,
|
|
PROCESS_SYSTEM = 0x4,
|
|
PROCESS_REUSE_FROM = 0x8
|
|
};
|
|
|
|
bool HandleArguments(std::vector<std::string> const& args,
|
|
const std::string& prop,
|
|
ArgumentFlags flags = NO_FLAGS);
|
|
|
|
protected:
|
|
std::string Property;
|
|
cmTarget* Target = nullptr;
|
|
cmMakefile* Makefile;
|
|
|
|
virtual void HandleInterfaceContent(cmTarget* tgt,
|
|
const std::vector<std::string>& content,
|
|
bool prepend, bool system);
|
|
virtual bool PopulateTargetProperties(
|
|
const std::string& scope, const std::vector<std::string>& content,
|
|
bool prepend, bool system);
|
|
|
|
private:
|
|
virtual void HandleMissingTarget(const std::string& name) = 0;
|
|
|
|
virtual bool HandleDirectContent(cmTarget* tgt,
|
|
const std::vector<std::string>& content,
|
|
bool prepend, bool system) = 0;
|
|
|
|
virtual std::string Join(const std::vector<std::string>& content) = 0;
|
|
|
|
bool ProcessContentArgs(std::vector<std::string> const& args,
|
|
unsigned int& argIndex, bool prepend, bool system);
|
|
|
|
cmExecutionStatus& Status;
|
|
};
|