123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #include "cmSetSourceFilesPropertiesCommand.h"
- #include "cmMakefile.h"
- #include "cmSourceFile.h"
- #include "cmSystemTools.h"
- class cmExecutionStatus;
- bool cmSetSourceFilesPropertiesCommand::InitialPass(
- std::vector<std::string> const& args, cmExecutionStatus&)
- {
- if (args.size() < 2) {
- this->SetError("called with incorrect number of arguments");
- return false;
- }
-
- int numFiles = 0;
- std::vector<std::string>::const_iterator j;
- j = args.begin();
-
- while (j != args.end() && *j != "ABSTRACT" && *j != "WRAP_EXCLUDE" &&
- *j != "GENERATED" && *j != "COMPILE_FLAGS" &&
- *j != "OBJECT_DEPENDS" && *j != "PROPERTIES") {
- numFiles++;
- ++j;
- }
-
- std::string errors;
- bool ret = cmSetSourceFilesPropertiesCommand::RunCommand(
- this->Makefile, args.begin(), args.begin() + numFiles,
- args.begin() + numFiles, args.end(), errors);
- if (!ret) {
- this->SetError(errors);
- }
- return ret;
- }
- bool cmSetSourceFilesPropertiesCommand::RunCommand(
- cmMakefile* mf, std::vector<std::string>::const_iterator filebeg,
- std::vector<std::string>::const_iterator fileend,
- std::vector<std::string>::const_iterator propbeg,
- std::vector<std::string>::const_iterator propend, std::string& errors)
- {
- std::vector<std::string> propertyPairs;
- bool generated = false;
- std::vector<std::string>::const_iterator j;
-
- for (j = propbeg; j != propend; ++j) {
-
- if (*j == "ABSTRACT") {
- propertyPairs.push_back("ABSTRACT");
- propertyPairs.push_back("1");
- } else if (*j == "WRAP_EXCLUDE") {
- propertyPairs.push_back("WRAP_EXCLUDE");
- propertyPairs.push_back("1");
- } else if (*j == "GENERATED") {
- generated = true;
- propertyPairs.push_back("GENERATED");
- propertyPairs.push_back("1");
- } else if (*j == "COMPILE_FLAGS") {
- propertyPairs.push_back("COMPILE_FLAGS");
- ++j;
- if (j == propend) {
- errors = "called with incorrect number of arguments "
- "COMPILE_FLAGS with no flags";
- return false;
- }
- propertyPairs.push_back(*j);
- } else if (*j == "OBJECT_DEPENDS") {
- propertyPairs.push_back("OBJECT_DEPENDS");
- ++j;
- if (j == propend) {
- errors = "called with incorrect number of arguments "
- "OBJECT_DEPENDS with no dependencies";
- return false;
- }
- propertyPairs.push_back(*j);
- } else if (*j == "PROPERTIES") {
-
- ++j;
- while (j != propend) {
- propertyPairs.push_back(*j);
- if (*j == "GENERATED") {
- ++j;
- if (j != propend && cmSystemTools::IsOn(j->c_str())) {
- generated = true;
- }
- } else {
- ++j;
- }
- if (j == propend) {
- errors = "called with incorrect number of arguments.";
- return false;
- }
- propertyPairs.push_back(*j);
- ++j;
- }
-
- break;
- } else {
- errors = "called with illegal arguments, maybe missing a "
- "PROPERTIES specifier?";
- return false;
- }
- }
-
- for (j = filebeg; j != fileend; ++j) {
-
- cmSourceFile* sf = mf->GetOrCreateSource(*j, generated);
- if (sf) {
-
- unsigned int k;
- for (k = 0; k < propertyPairs.size(); k = k + 2) {
- sf->SetProperty(propertyPairs[k], propertyPairs[k + 1].c_str());
- }
- }
- }
- return true;
- }
|