|  | @@ -692,6 +692,28 @@ static const struct CXXCompilerIdNode : public CompilerIdNode
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  } cxxCompilerIdNode;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +static const struct FortranCompilerIdNode : public CompilerIdNode
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  FortranCompilerIdNode() {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  std::string Evaluate(
 | 
	
		
			
				|  |  | +    const std::vector<std::string>& parameters,
 | 
	
		
			
				|  |  | +    cmGeneratorExpressionContext* context,
 | 
	
		
			
				|  |  | +    const GeneratorExpressionContent* content,
 | 
	
		
			
				|  |  | +    cmGeneratorExpressionDAGChecker* dagChecker) const override
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    if (!context->HeadTarget) {
 | 
	
		
			
				|  |  | +      reportError(
 | 
	
		
			
				|  |  | +        context, content->GetOriginalExpression(),
 | 
	
		
			
				|  |  | +        "$<Fortran_COMPILER_ID> may only be used with binary targets.  It may "
 | 
	
		
			
				|  |  | +        "not be used with add_custom_command or add_custom_target.");
 | 
	
		
			
				|  |  | +      return std::string();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return this->EvaluateWithLanguage(parameters, context, content, dagChecker,
 | 
	
		
			
				|  |  | +                                      "Fortran");
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +} fortranCompilerIdNode;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  struct CompilerVersionNode : public cmGeneratorExpressionNode
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    CompilerVersionNode() {}
 | 
	
	
		
			
				|  | @@ -773,6 +795,28 @@ static const struct CxxCompilerVersionNode : public CompilerVersionNode
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  } cxxCompilerVersionNode;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +static const struct FortranCompilerVersionNode : public CompilerVersionNode
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  FortranCompilerVersionNode() {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  std::string Evaluate(
 | 
	
		
			
				|  |  | +    const std::vector<std::string>& parameters,
 | 
	
		
			
				|  |  | +    cmGeneratorExpressionContext* context,
 | 
	
		
			
				|  |  | +    const GeneratorExpressionContent* content,
 | 
	
		
			
				|  |  | +    cmGeneratorExpressionDAGChecker* dagChecker) const override
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    if (!context->HeadTarget) {
 | 
	
		
			
				|  |  | +      reportError(
 | 
	
		
			
				|  |  | +        context, content->GetOriginalExpression(),
 | 
	
		
			
				|  |  | +        "$<Fortran_COMPILER_VERSION> may only be used with binary targets.  "
 | 
	
		
			
				|  |  | +        "It may not be used with add_custom_command or add_custom_target.");
 | 
	
		
			
				|  |  | +      return std::string();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return this->EvaluateWithLanguage(parameters, context, content, dagChecker,
 | 
	
		
			
				|  |  | +                                      "Fortran");
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +} fortranCompilerVersionNode;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  struct PlatformIdNode : public cmGeneratorExpressionNode
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    PlatformIdNode() {}
 | 
	
	
		
			
				|  | @@ -2024,6 +2068,7 @@ const cmGeneratorExpressionNode* cmGeneratorExpressionNode::GetNode(
 | 
	
		
			
				|  |  |      nodeMap["NOT"] = ¬Node;
 | 
	
		
			
				|  |  |      nodeMap["C_COMPILER_ID"] = &cCompilerIdNode;
 | 
	
		
			
				|  |  |      nodeMap["CXX_COMPILER_ID"] = &cxxCompilerIdNode;
 | 
	
		
			
				|  |  | +    nodeMap["Fortran_COMPILER_ID"] = &fortranCompilerIdNode;
 | 
	
		
			
				|  |  |      nodeMap["VERSION_GREATER"] = &versionGreaterNode;
 | 
	
		
			
				|  |  |      nodeMap["VERSION_GREATER_EQUAL"] = &versionGreaterEqNode;
 | 
	
		
			
				|  |  |      nodeMap["VERSION_LESS"] = &versionLessNode;
 | 
	
	
		
			
				|  | @@ -2031,6 +2076,7 @@ const cmGeneratorExpressionNode* cmGeneratorExpressionNode::GetNode(
 | 
	
		
			
				|  |  |      nodeMap["VERSION_EQUAL"] = &versionEqualNode;
 | 
	
		
			
				|  |  |      nodeMap["C_COMPILER_VERSION"] = &cCompilerVersionNode;
 | 
	
		
			
				|  |  |      nodeMap["CXX_COMPILER_VERSION"] = &cxxCompilerVersionNode;
 | 
	
		
			
				|  |  | +    nodeMap["Fortran_COMPILER_VERSION"] = &fortranCompilerVersionNode;
 | 
	
		
			
				|  |  |      nodeMap["PLATFORM_ID"] = &platformIdNode;
 | 
	
		
			
				|  |  |      nodeMap["COMPILE_FEATURES"] = &compileFeaturesNode;
 | 
	
		
			
				|  |  |      nodeMap["CONFIGURATION"] = &configurationNode;
 |