From 84923605cf89d24c1748256b271e0b79bf1f1e79 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Fri, 10 Feb 2006 14:41:31 -0500
Subject: [PATCH] ENH: Allow IF(DEFINED ENV{somevar}) to work.

---
 Source/cmIfCommand.cxx | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx
index c99bb737c7..f92c647341 100644
--- a/Source/cmIfCommand.cxx
+++ b/Source/cmIfCommand.cxx
@@ -262,7 +262,17 @@ bool cmIfCommand::IsTrue(const std::vector<std::string> &args,
       // is a variable defined
       if (*arg == "DEFINED" && argP1  != newArgs.end())
         {
-        def = makefile->GetDefinition((argP1)->c_str());
+        unsigned int argP1len = argP1->size();
+        if(argP1len > 4 && argP1->substr(0, 4) == "ENV{" &&
+           argP1->operator[](argP1len-1) == '}')
+          {
+          std::string env = argP1->substr(4, argP1len-5);
+          def = cmSystemTools::GetEnv(env.c_str());
+          }
+        else
+          {
+          def = makefile->GetDefinition((argP1)->c_str());
+          }
         if(def)
           {
           *arg = "1";
-- 
GitLab