diff options
| -rw-r--r-- | tools/create_msvc/create_msvc.cpp | 21 | ||||
| -rw-r--r-- | tools/create_msvc/create_msvc.h | 11 | 
2 files changed, 24 insertions, 8 deletions
diff --git a/tools/create_msvc/create_msvc.cpp b/tools/create_msvc/create_msvc.cpp index 47f9a6bdbc..8cfed79ebf 100644 --- a/tools/create_msvc/create_msvc.cpp +++ b/tools/create_msvc/create_msvc.cpp @@ -144,13 +144,11 @@ int main(int argc, char *argv[]) {  				for (EngineDescList::iterator j = setup.engines.begin(); j != setup.engines.end(); ++j)  					j->enable = true;  			} else if (!setEngineBuildState(name, setup.engines, true)) { -				FeatureList::iterator feature = std::find(setup.features.begin(), setup.features.end(), name); -				if (feature == setup.features.end()) { +				// If none found, we'll try the features list +				if (!setFeatureBuildState(name, setup.features, true)) {  					std::cerr << "ERROR: \"" << name << "\" is neither an engine nor a feature!\n";  					return -1;  				} - -				feature->enable = true;  			}  		} else if (!strncmp(argv[i], "--disable-", 10)) {  			const char *name = &argv[i][10]; @@ -164,13 +162,10 @@ int main(int argc, char *argv[]) {  					j->enable = false;  			} else if (!setEngineBuildState(name, setup.engines, false)) {  				// If none found, we'll try the features list -				FeatureList::iterator feature = std::find(setup.features.begin(), setup.features.end(), name); -				if (feature == setup.features.end()) { +				if (!setFeatureBuildState(name, setup.features, false)) {  					std::cerr << "ERROR: \"" << name << "\" is neither an engine nor a feature!\n";  					return -1;  				} - -				feature->enable = false;  			}  		} else if (!strcmp(argv[i], "--file-prefix")) {  			if (i + 1 >= argc) { @@ -542,6 +537,16 @@ StringList getFeatureLibraries(const FeatureList &features) {  	return libraries;  } +bool setFeatureBuildState(const std::string &name, FeatureList &features, bool enable) { +	FeatureList::iterator i = std::find(features.begin(), features.end(), name); +	if (i != features.end()) { +		i->enable = enable; +		return true; +	} else { +		return false; +	} +} +  namespace {  typedef std::map<std::string, std::string> UUIDMap; diff --git a/tools/create_msvc/create_msvc.h b/tools/create_msvc/create_msvc.h index 093b73e4de..17830ff8c6 100644 --- a/tools/create_msvc/create_msvc.h +++ b/tools/create_msvc/create_msvc.h @@ -164,6 +164,17 @@ StringList getFeatureDefines(const FeatureList &features);  StringList getFeatureLibraries(const FeatureList &features);  /** + * Sets the state of a given feature. This can be used to + * either include or exclude an feature. + * + * @param name Name of the feature. + * @param features List of features to operate on. + * @param enable Whether the feature should be enabled or disabled. + * @return "true", when it succeeded, "false" otherwise. + */ +bool setFeatureBuildState(const std::string &name, FeatureList &features, bool enable); + +/**   * Structure to describe a MSVC build setup.   *   * This includes various information about which engines to  | 
