summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorExpressionEvaluator.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-03-04 20:46:42 (GMT)
committerStephen Kelly <steveire@gmail.com>2015-03-09 19:49:16 (GMT)
commit0b945ea9a6a38d1b3ee27cc32afb4268bd571600 (patch)
tree79411aba297b00a76587c9bd855e3a9e5afa3e10 /Source/cmGeneratorExpressionEvaluator.cxx
parent5c559f11137dcb14113a3c5df99ff896c65c7596 (diff)
downloadCMake-0b945ea9a6a38d1b3ee27cc32afb4268bd571600.zip
CMake-0b945ea9a6a38d1b3ee27cc32afb4268bd571600.tar.gz
CMake-0b945ea9a6a38d1b3ee27cc32afb4268bd571600.tar.bz2
Genex: Allow COMPILE_LANGUAGE when processing compile definitions.
Issue an error if this is encountered by an IDE generator.
Diffstat (limited to 'Source/cmGeneratorExpressionEvaluator.cxx')
-rw-r--r--Source/cmGeneratorExpressionEvaluator.cxx15
1 files changed, 12 insertions, 3 deletions
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index 6a9f251..3ec8595 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -817,7 +817,7 @@ static const struct CompileLanguageNode : public cmGeneratorExpressionNode
std::string Evaluate(const std::vector<std::string> &parameters,
cmGeneratorExpressionContext *context,
const GeneratorExpressionContent *content,
- cmGeneratorExpressionDAGChecker *) const
+ cmGeneratorExpressionDAGChecker *dagChecker) const
{
if(context->Language.empty())
{
@@ -849,12 +849,21 @@ static const struct CompileLanguageNode : public cmGeneratorExpressionNode
"generators.");
return std::string();
}
+ else if (genName.find("Xcode") != std::string::npos)
+ {
+ if (dagChecker && dagChecker->EvaluatingCompileDefinitions())
+ {
+ reportError(context, content->GetOriginalExpression(),
+ "$<COMPILE_LANGUAGE:...> may only be used with COMPILE_OPTIONS "
+ "with the Xcode generator.");
+ return std::string();
+ }
+ }
else
{
if(genName.find("Makefiles") == std::string::npos &&
genName.find("Ninja") == std::string::npos &&
- genName.find("Watcom WMake") == std::string::npos &&
- genName.find("Xcode") == std::string::npos)
+ genName.find("Watcom WMake") == std::string::npos)
{
reportError(context, content->GetOriginalExpression(),
"$<COMPILE_LANGUAGE:...> not supported for this generator.");