diff --git a/Source/cmEndIfCommand.cxx b/Source/cmEndIfCommand.cxx index 7dd1db0cc..fb408a12c 100644 --- a/Source/cmEndIfCommand.cxx +++ b/Source/cmEndIfCommand.cxx @@ -19,6 +19,13 @@ bool cmEndIfCommand::InitialPass(std::vector const&) { + const char* versionValue + = m_Makefile->GetDefinition("CMAKE_MINIMUM_REQUIRED_VERSION"); + if (!versionValue || (atof(versionValue) <= 1.4)) + { + return true; + } + this->SetError("An ENDIF command was found outside of a proper IF ENDIF structure. Or its arguments did not match the opening IF command."); return false; } diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index 4fb9bfd6e..de5a09bea 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -81,6 +81,13 @@ ShouldRemove(const char *name, const std::vector &args, void cmIfFunctionBlocker:: ScopeEnded(cmMakefile &mf) { + const char* versionValue + = mf.GetDefinition("CMAKE_MINIMUM_REQUIRED_VERSION"); + if (!versionValue || (atof(versionValue) <= 1.4)) + { + return; + } + std::string errmsg = "The end of a CMakeLists file was reached with an IF statement that was not closed properly.\nWithin the directory: "; errmsg += mf.GetCurrentDirectory(); errmsg += "\nThe arguments are: ";