diff options
Diffstat (limited to 'Source/cmExternalMakefileProjectGenerator.cxx')
-rw-r--r-- | Source/cmExternalMakefileProjectGenerator.cxx | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Source/cmExternalMakefileProjectGenerator.cxx b/Source/cmExternalMakefileProjectGenerator.cxx new file mode 100644 index 0000000..9c965cc --- /dev/null +++ b/Source/cmExternalMakefileProjectGenerator.cxx @@ -0,0 +1,64 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include <assert.h> + +#include "cmExternalMakefileProjectGenerator.h" + +std::string cmExternalMakefileProjectGenerator::CreateFullGeneratorName( + const char* globalGenerator, + const char* extraGenerator) +{ + std::string fullName; + if (globalGenerator) + { + if (extraGenerator && *extraGenerator) + { + fullName = extraGenerator; + fullName += " - "; + } + fullName += globalGenerator; + } + return fullName; +} + +const char* cmExternalMakefileProjectGenerator::GetGlobalGeneratorName( + const char* fullName) +{ + // at least one global generator must be supported + assert(!this->SupportedGlobalGenerators.empty()); + + if (fullName==0) + { + return 0; + } + + std::string currentName = fullName; + // if we get only the short name, take the first global generator as default + if (currentName == this->GetName()) + { + return this->SupportedGlobalGenerators[0].c_str(); + } + + // otherwise search for the matching global generator + for (std::vector<std::string>::const_iterator + it = this->SupportedGlobalGenerators.begin(); + it != this->SupportedGlobalGenerators.end(); + ++it) + { + if (this->CreateFullGeneratorName(it->c_str(), this->GetName()) + == currentName) + { + return it->c_str(); + } + } + return 0; +} |