cmSetTargetPropertiesCommand: Port away from cmCommand

This commit is contained in:
Regina Pfeifer
2019-09-18 17:38:07 +02:00
parent 77aa75b8dc
commit 42e413bcbb
3 changed files with 25 additions and 50 deletions

View File

@@ -5,31 +5,32 @@
#include <iterator>
#include "cmAlgorithms.h"
#include "cmExecutionStatus.h"
#include "cmMakefile.h"
#include "cmStringAlgorithms.h"
#include "cmTarget.h"
class cmExecutionStatus;
static bool SetOneTarget(const std::string& tname,
std::vector<std::string>& propertyPairs,
cmMakefile* mf);
// cmSetTargetPropertiesCommand
bool cmSetTargetPropertiesCommand::InitialPass(
std::vector<std::string> const& args, cmExecutionStatus&)
bool cmSetTargetPropertiesCommand(std::vector<std::string> const& args,
cmExecutionStatus& status)
{
if (args.size() < 2) {
this->SetError("called with incorrect number of arguments");
status.SetError("called with incorrect number of arguments");
return false;
}
// first collect up the list of files
std::vector<std::string> propertyPairs;
int numFiles = 0;
std::vector<std::string>::const_iterator j;
for (j = args.begin(); j != args.end(); ++j) {
for (auto j = args.begin(); j != args.end(); ++j) {
if (*j == "PROPERTIES") {
// now loop through the rest of the arguments, new style
++j;
if (std::distance(j, args.end()) % 2 != 0) {
this->SetError("called with incorrect number of arguments.");
status.SetError("called with incorrect number of arguments.");
return false;
}
cmAppend(propertyPairs, j, args.end());
@@ -38,33 +39,32 @@ bool cmSetTargetPropertiesCommand::InitialPass(
numFiles++;
}
if (propertyPairs.empty()) {
this->SetError("called with illegal arguments, maybe missing "
"a PROPERTIES specifier?");
status.SetError("called with illegal arguments, maybe missing "
"a PROPERTIES specifier?");
return false;
}
cmMakefile& mf = status.GetMakefile();
// now loop over all the targets
int i;
for (i = 0; i < numFiles; ++i) {
if (this->Makefile->IsAlias(args[i])) {
this->SetError("can not be used on an ALIAS target.");
for (int i = 0; i < numFiles; ++i) {
if (mf.IsAlias(args[i])) {
status.SetError("can not be used on an ALIAS target.");
return false;
}
bool ret = cmSetTargetPropertiesCommand::SetOneTarget(
args[i], propertyPairs, this->Makefile);
bool ret = SetOneTarget(args[i], propertyPairs, &mf);
if (!ret) {
std::string message =
cmStrCat("Can not find target to add properties to: ", args[i]);
this->SetError(message);
status.SetError(
cmStrCat("Can not find target to add properties to: ", args[i]));
return false;
}
}
return true;
}
bool cmSetTargetPropertiesCommand::SetOneTarget(
const std::string& tname, std::vector<std::string>& propertyPairs,
cmMakefile* mf)
static bool SetOneTarget(const std::string& tname,
std::vector<std::string>& propertyPairs,
cmMakefile* mf)
{
if (cmTarget* target = mf->FindTargetToUse(tname)) {
// now loop through all the props and set them