[cmake-commits] martink committed cmAddCustomCommandCommand.cxx 1.35 1.36 cmAddCustomCommandCommand.h 1.31 1.32 cmAddCustomTargetCommand.cxx 1.26 1.27 cmAddCustomTargetCommand.h 1.21 1.22 cmAddDefinitionsCommand.cxx 1.13 1.14 cmAddDefinitionsCommand.h 1.13 1.14 cmAddDependenciesCommand.cxx 1.15 1.16 cmAddDependenciesCommand.h 1.9 1.10 cmAddExecutableCommand.cxx 1.31 1.32 cmAddExecutableCommand.h 1.18 1.19 cmAddLibraryCommand.cxx 1.32 1.33 cmAddLibraryCommand.h 1.19 1.20 cmAddSubDirectoryCommand.cxx 1.10 1.11 cmAddSubDirectoryCommand.h 1.6 1.7 cmAddTestCommand.cxx 1.28 1.29 cmAddTestCommand.h 1.15 1.16 cmAuxSourceDirectoryCommand.cxx 1.25 1.26 cmAuxSourceDirectoryCommand.h 1.15 1.16 cmBootstrapCommands.cxx 1.22 1.23 cmBuildCommand.cxx 1.23 1.24 cmBuildCommand.h 1.12 1.13 cmBuildNameCommand.cxx 1.18 1.19 cmBuildNameCommand.h 1.15 1.16 cmCMakeMinimumRequired.cxx 1.12 1.13 cmCMakeMinimumRequired.h 1.9 1.10 cmCPluginAPI.cxx 1.41 1.42 cmCommand.h 1.25 1.26 cmConfigureFileCommand.cxx 1.29 1.30 cmConfigureFileCommand.h 1.21 1.22 cmCreateTestSourceList.cxx 1.43 1.44 cmCreateTestSourceList.h 1.15 1.16 cmDefinePropertyCommand.cxx 1.2 1.3 cmDefinePropertyCommand.h 1.4 1.5 cmElseCommand.cxx 1.25 1.26 cmElseCommand.h 1.13 1.14 cmElseIfCommand.cxx 1.1 1.2 cmElseIfCommand.h 1.2 1.3 cmEnableLanguageCommand.cxx 1.4 1.5 cmEnableLanguageCommand.h 1.7 1.8 cmEnableTestingCommand.cxx 1.18 1.19 cmEnableTestingCommand.h 1.14 1.15 cmEndForEachCommand.cxx 1.9 1.10 cmEndForEachCommand.h 1.12 1.13 cmEndFunctionCommand.cxx 1.1 1.2 cmEndFunctionCommand.h 1.1 1.2 cmEndIfCommand.cxx 1.14 1.15 cmEndIfCommand.h 1.12 1.13 cmEndMacroCommand.cxx 1.1 1.2 cmEndMacroCommand.h 1.2 1.3 cmEndWhileCommand.cxx 1.2 1.3 cmEndWhileCommand.h 1.5 1.6 cmExecProgramCommand.cxx 1.22 1.23 cmExecProgramCommand.h 1.22 1.23 cmExecuteProcessCommand.cxx 1.9 1.10 cmExecuteProcessCommand.h 1.5 1.6 cmExportCommand.cxx 1.6 1.7 cmExportCommand.h 1.5 1.6 cmExportLibraryDependencies.cxx 1.18 1.19 cmExportLibraryDependencies.h 1.8 1.9 cmFLTKWrapUICommand.cxx 1.37 1.38 cmFLTKWrapUICommand.h 1.15 1.16 cmFileCommand.cxx 1.95 1.96 cmFileCommand.h 1.31 1.32 cmFindLibraryCommand.cxx 1.50 1.51 cmFindLibraryCommand.h 1.24 1.25 cmFindPackageCommand.cxx 1.33 1.34 cmFindPackageCommand.h 1.17 1.18 cmFindPathCommand.cxx 1.40 1.41 cmFindPathCommand.h 1.17 1.18 cmFindProgramCommand.cxx 1.41 1.42 cmFindProgramCommand.h 1.20 1.21 cmForEachCommand.cxx 1.25 1.26 cmForEachCommand.h 1.18 1.19 cmFunctionBlocker.h 1.11 1.12 cmFunctionCommand.cxx 1.3 1.4 cmFunctionCommand.h 1.2 1.3 cmGetCMakePropertyCommand.cxx 1.7 1.8 cmGetCMakePropertyCommand.h 1.7 1.8 cmGetDirectoryPropertyCommand.cxx 1.10 1.11 cmGetDirectoryPropertyCommand.h 1.7 1.8 cmGetFilenameComponentCommand.cxx 1.16 1.17 cmGetFilenameComponentCommand.h 1.13 1.14 cmGetPropertyCommand.cxx 1.4 1.5 cmGetPropertyCommand.h 1.5 1.6 cmGetSourceFilePropertyCommand.cxx 1.12 1.13 cmGetSourceFilePropertyCommand.h 1.12 1.13 cmGetTargetPropertyCommand.cxx 1.9 1.10 cmGetTargetPropertyCommand.h 1.11 1.12 cmGetTestPropertyCommand.cxx 1.3 1.4 cmGetTestPropertyCommand.h 1.4 1.5 cmIfCommand.cxx 1.81 1.82 cmIfCommand.h 1.44 1.45 cmIncludeCommand.cxx 1.19 1.20 cmIncludeCommand.h 1.16 1.17 cmIncludeDirectoryCommand.cxx 1.26 1.27 cmIncludeDirectoryCommand.h 1.15 1.16 cmIncludeExternalMSProjectCommand.cxx 1.21 1.22 cmIncludeExternalMSProjectCommand.h 1.7 1.8 cmIncludeRegularExpressionCommand.cxx 1.9 1.10 cmIncludeRegularExpressionCommand.h 1.13 1.14 cmInstallCommand.cxx 1.38 1.39 cmInstallCommand.h 1.23 1.24 cmInstallFilesCommand.cxx 1.27 1.28 cmInstallFilesCommand.h 1.22 1.23 cmInstallProgramsCommand.cxx 1.19 1.20 cmInstallProgramsCommand.h 1.19 1.20 cmInstallTargetsCommand.cxx 1.14 1.15 cmInstallTargetsCommand.h 1.15 1.16 cmLinkDirectoriesCommand.cxx 1.12 1.13 cmLinkDirectoriesCommand.h 1.12 1.13 cmLinkLibrariesCommand.cxx 1.23 1.24 cmLinkLibrariesCommand.h 1.19 1.20 cmListCommand.cxx 1.16 1.17 cmListCommand.h 1.13 1.14 cmLoadCacheCommand.cxx 1.18 1.19 cmLoadCacheCommand.h 1.13 1.14 cmLoadCommandCommand.cxx 1.28 1.29 cmLoadCommandCommand.h 1.8 1.9 cmMacroCommand.cxx 1.33 1.34 cmMacroCommand.h 1.15 1.16 cmMakeDirectoryCommand.cxx 1.9 1.10 cmMakeDirectoryCommand.h 1.12 1.13 cmMakefile.cxx 1.428 1.429 cmMakefile.h 1.219 1.220 cmMarkAsAdvancedCommand.cxx 1.14 1.15 cmMarkAsAdvancedCommand.h 1.11 1.12 cmMathCommand.cxx 1.2 1.3 cmMathCommand.h 1.4 1.5 cmMessageCommand.cxx 1.21 1.22 cmMessageCommand.h 1.15 1.16 cmOptionCommand.cxx 1.22 1.23 cmOptionCommand.h 1.15 1.16 cmOutputRequiredFilesCommand.cxx 1.15 1.16 cmOutputRequiredFilesCommand.h 1.11 1.12 cmProjectCommand.cxx 1.24 1.25 cmProjectCommand.h 1.15 1.16 cmQTWrapCPPCommand.cxx 1.26 1.27 cmQTWrapCPPCommand.h 1.14 1.15 cmQTWrapUICommand.cxx 1.25 1.26 cmQTWrapUICommand.h 1.13 1.14 cmRemoveCommand.cxx 1.6 1.7 cmRemoveCommand.h 1.10 1.11 cmRemoveDefinitionsCommand.cxx 1.3 1.4 cmRemoveDefinitionsCommand.h 1.6 1.7 cmSeparateArgumentsCommand.cxx 1.5 1.6 cmSeparateArgumentsCommand.h 1.8 1.9 cmSetCommand.cxx 1.31 1.32 cmSetCommand.h 1.19 1.20 cmSetDirectoryPropertiesCommand.cxx 1.6 1.7 cmSetDirectoryPropertiesCommand.h 1.6 1.7 cmSetPropertyCommand.cxx 1.3 1.4 cmSetPropertyCommand.h 1.2 1.3 cmSetSourceFilesPropertiesCommand.cxx 1.17 1.18 cmSetSourceFilesPropertiesCommand.h 1.14 1.15 cmSetTargetPropertiesCommand.cxx 1.7 1.8 cmSetTargetPropertiesCommand.h 1.30 1.31 cmSetTestsPropertiesCommand.cxx 1.6 1.7 cmSetTestsPropertiesCommand.h 1.7 1.8 cmSiteNameCommand.cxx 1.23 1.24 cmSiteNameCommand.h 1.10 1.11 cmSourceGroupCommand.cxx 1.19 1.20 cmSourceGroupCommand.h 1.15 1.16 cmStringCommand.cxx 1.26 1.27 cmStringCommand.h 1.27 1.28 cmSubdirCommand.cxx 1.18 1.19 cmSubdirCommand.h 1.20 1.21 cmSubdirDependsCommand.cxx 1.6 1.7 cmSubdirDependsCommand.h 1.11 1.12 cmTargetLinkLibrariesCommand.cxx 1.24 1.25 cmTargetLinkLibrariesCommand.h 1.13 1.14 cmTryCompileCommand.cxx 1.62 1.63 cmTryCompileCommand.h 1.26 1.27 cmTryRunCommand.cxx 1.40 1.41 cmTryRunCommand.h 1.14 1.15 cmUseMangledMesaCommand.cxx 1.17 1.18 cmUseMangledMesaCommand.h 1.13 1.14 cmUtilitySourceCommand.cxx 1.24 1.25 cmUtilitySourceCommand.h 1.13 1.14 cmVariableRequiresCommand.cxx 1.14 1.15 cmVariableRequiresCommand.h 1.14 1.15 cmVariableWatchCommand.cxx 1.2 1.3 cmVariableWatchCommand.h 1.3 1.4 cmWhileCommand.cxx 1.9 1.10 cmWhileCommand.h 1.8 1.9 cmWriteFileCommand.cxx 1.15 1.16 cmWriteFileCommand.h 1.11 1.12

cmake-commits at cmake.org cmake-commits at cmake.org
Wed Jan 23 10:28:01 EST 2008


Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv25407

Modified Files:
	cmAddCustomCommandCommand.cxx cmAddCustomCommandCommand.h 
	cmAddCustomTargetCommand.cxx cmAddCustomTargetCommand.h 
	cmAddDefinitionsCommand.cxx cmAddDefinitionsCommand.h 
	cmAddDependenciesCommand.cxx cmAddDependenciesCommand.h 
	cmAddExecutableCommand.cxx cmAddExecutableCommand.h 
	cmAddLibraryCommand.cxx cmAddLibraryCommand.h 
	cmAddSubDirectoryCommand.cxx cmAddSubDirectoryCommand.h 
	cmAddTestCommand.cxx cmAddTestCommand.h 
	cmAuxSourceDirectoryCommand.cxx cmAuxSourceDirectoryCommand.h 
	cmBootstrapCommands.cxx cmBuildCommand.cxx cmBuildCommand.h 
	cmBuildNameCommand.cxx cmBuildNameCommand.h 
	cmCMakeMinimumRequired.cxx cmCMakeMinimumRequired.h 
	cmCPluginAPI.cxx cmCommand.h cmConfigureFileCommand.cxx 
	cmConfigureFileCommand.h cmCreateTestSourceList.cxx 
	cmCreateTestSourceList.h cmDefinePropertyCommand.cxx 
	cmDefinePropertyCommand.h cmElseCommand.cxx cmElseCommand.h 
	cmElseIfCommand.cxx cmElseIfCommand.h 
	cmEnableLanguageCommand.cxx cmEnableLanguageCommand.h 
	cmEnableTestingCommand.cxx cmEnableTestingCommand.h 
	cmEndForEachCommand.cxx cmEndForEachCommand.h 
	cmEndFunctionCommand.cxx cmEndFunctionCommand.h 
	cmEndIfCommand.cxx cmEndIfCommand.h cmEndMacroCommand.cxx 
	cmEndMacroCommand.h cmEndWhileCommand.cxx cmEndWhileCommand.h 
	cmExecProgramCommand.cxx cmExecProgramCommand.h 
	cmExecuteProcessCommand.cxx cmExecuteProcessCommand.h 
	cmExportCommand.cxx cmExportCommand.h 
	cmExportLibraryDependencies.cxx cmExportLibraryDependencies.h 
	cmFLTKWrapUICommand.cxx cmFLTKWrapUICommand.h 
	cmFileCommand.cxx cmFileCommand.h cmFindLibraryCommand.cxx 
	cmFindLibraryCommand.h cmFindPackageCommand.cxx 
	cmFindPackageCommand.h cmFindPathCommand.cxx 
	cmFindPathCommand.h cmFindProgramCommand.cxx 
	cmFindProgramCommand.h cmForEachCommand.cxx cmForEachCommand.h 
	cmFunctionBlocker.h cmFunctionCommand.cxx cmFunctionCommand.h 
	cmGetCMakePropertyCommand.cxx cmGetCMakePropertyCommand.h 
	cmGetDirectoryPropertyCommand.cxx 
	cmGetDirectoryPropertyCommand.h 
	cmGetFilenameComponentCommand.cxx 
	cmGetFilenameComponentCommand.h cmGetPropertyCommand.cxx 
	cmGetPropertyCommand.h cmGetSourceFilePropertyCommand.cxx 
	cmGetSourceFilePropertyCommand.h 
	cmGetTargetPropertyCommand.cxx cmGetTargetPropertyCommand.h 
	cmGetTestPropertyCommand.cxx cmGetTestPropertyCommand.h 
	cmIfCommand.cxx cmIfCommand.h cmIncludeCommand.cxx 
	cmIncludeCommand.h cmIncludeDirectoryCommand.cxx 
	cmIncludeDirectoryCommand.h 
	cmIncludeExternalMSProjectCommand.cxx 
	cmIncludeExternalMSProjectCommand.h 
	cmIncludeRegularExpressionCommand.cxx 
	cmIncludeRegularExpressionCommand.h cmInstallCommand.cxx 
	cmInstallCommand.h cmInstallFilesCommand.cxx 
	cmInstallFilesCommand.h cmInstallProgramsCommand.cxx 
	cmInstallProgramsCommand.h cmInstallTargetsCommand.cxx 
	cmInstallTargetsCommand.h cmLinkDirectoriesCommand.cxx 
	cmLinkDirectoriesCommand.h cmLinkLibrariesCommand.cxx 
	cmLinkLibrariesCommand.h cmListCommand.cxx cmListCommand.h 
	cmLoadCacheCommand.cxx cmLoadCacheCommand.h 
	cmLoadCommandCommand.cxx cmLoadCommandCommand.h 
	cmMacroCommand.cxx cmMacroCommand.h cmMakeDirectoryCommand.cxx 
	cmMakeDirectoryCommand.h cmMakefile.cxx cmMakefile.h 
	cmMarkAsAdvancedCommand.cxx cmMarkAsAdvancedCommand.h 
	cmMathCommand.cxx cmMathCommand.h cmMessageCommand.cxx 
	cmMessageCommand.h cmOptionCommand.cxx cmOptionCommand.h 
	cmOutputRequiredFilesCommand.cxx 
	cmOutputRequiredFilesCommand.h cmProjectCommand.cxx 
	cmProjectCommand.h cmQTWrapCPPCommand.cxx cmQTWrapCPPCommand.h 
	cmQTWrapUICommand.cxx cmQTWrapUICommand.h cmRemoveCommand.cxx 
	cmRemoveCommand.h cmRemoveDefinitionsCommand.cxx 
	cmRemoveDefinitionsCommand.h cmSeparateArgumentsCommand.cxx 
	cmSeparateArgumentsCommand.h cmSetCommand.cxx cmSetCommand.h 
	cmSetDirectoryPropertiesCommand.cxx 
	cmSetDirectoryPropertiesCommand.h cmSetPropertyCommand.cxx 
	cmSetPropertyCommand.h cmSetSourceFilesPropertiesCommand.cxx 
	cmSetSourceFilesPropertiesCommand.h 
	cmSetTargetPropertiesCommand.cxx 
	cmSetTargetPropertiesCommand.h cmSetTestsPropertiesCommand.cxx 
	cmSetTestsPropertiesCommand.h cmSiteNameCommand.cxx 
	cmSiteNameCommand.h cmSourceGroupCommand.cxx 
	cmSourceGroupCommand.h cmStringCommand.cxx cmStringCommand.h 
	cmSubdirCommand.cxx cmSubdirCommand.h 
	cmSubdirDependsCommand.cxx cmSubdirDependsCommand.h 
	cmTargetLinkLibrariesCommand.cxx 
	cmTargetLinkLibrariesCommand.h cmTryCompileCommand.cxx 
	cmTryCompileCommand.h cmTryRunCommand.cxx cmTryRunCommand.h 
	cmUseMangledMesaCommand.cxx cmUseMangledMesaCommand.h 
	cmUtilitySourceCommand.cxx cmUtilitySourceCommand.h 
	cmVariableRequiresCommand.cxx cmVariableRequiresCommand.h 
	cmVariableWatchCommand.cxx cmVariableWatchCommand.h 
	cmWhileCommand.cxx cmWhileCommand.h cmWriteFileCommand.cxx 
	cmWriteFileCommand.h 
Log Message:
ENH: add return and break support to cmake, also change basic command invocation signature to be able to return extra informaiton via the cmExecutionStatus class


Index: cmRemoveCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmRemoveCommand.cxx,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- cmRemoveCommand.cxx	15 Mar 2006 16:02:07 -0000	1.6
+++ cmRemoveCommand.cxx	23 Jan 2008 15:27:59 -0000	1.7
@@ -17,7 +17,8 @@
 #include "cmRemoveCommand.h"
 
 // cmRemoveCommand
-bool cmRemoveCommand::InitialPass(std::vector<std::string> const& args)
+bool cmRemoveCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1)
     {

Index: cmBuildNameCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmBuildNameCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmBuildNameCommand.h	10 Oct 2007 15:47:43 -0000	1.15
+++ cmBuildNameCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmLinkDirectoriesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLinkDirectoriesCommand.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- cmLinkDirectoriesCommand.h	24 Dec 2007 00:03:22 -0000	1.12
+++ cmLinkDirectoriesCommand.h	23 Jan 2008 15:27:59 -0000	1.13
@@ -42,7 +42,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmAddDependenciesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddDependenciesCommand.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmAddDependenciesCommand.h	10 Oct 2007 15:47:43 -0000	1.9
+++ cmAddDependenciesCommand.h	23 Jan 2008 15:27:59 -0000	1.10
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmIfCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIfCommand.cxx,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -d -r1.81 -r1.82
--- cmIfCommand.cxx	29 Aug 2007 18:35:06 -0000	1.81
+++ cmIfCommand.cxx	23 Jan 2008 15:27:59 -0000	1.82
@@ -22,89 +22,122 @@
 #include <cmsys/RegularExpression.hxx>
 
 bool cmIfFunctionBlocker::
-IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf)
+IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf,
+                  cmExecutionStatus &inStatus)
 {
-  // if we are blocking then all we need to do is keep track of 
-  // scope depth of nested if statements
-  if (this->IsBlocking)
+  // Prevent recusion and don't let this blocker block its own
+  // commands.
+  if (this->Executing)
     {
-    if (!cmSystemTools::Strucmp(lff.Name.c_str(),"if"))
-      {
-      this->ScopeDepth++;
-      return true;
-      }
+    return false;
     }
 
-  if (this->IsBlocking && this->ScopeDepth)
+  // we start by recording all the functions
+  if (!cmSystemTools::Strucmp(lff.Name.c_str(),"if"))
     {
-    if (!cmSystemTools::Strucmp(lff.Name.c_str(),"endif"))
-      {
-      this->ScopeDepth--;
-      }
-    return true;
+    this->ScopeDepth++;
     }
-      
-  // watch for our ELSE or ENDIF
-  if (!cmSystemTools::Strucmp(lff.Name.c_str(),"else") ||
-      !cmSystemTools::Strucmp(lff.Name.c_str(),"elseif") ||
-      !cmSystemTools::Strucmp(lff.Name.c_str(),"endif"))
+  if (!cmSystemTools::Strucmp(lff.Name.c_str(),"endif"))
     {
-    // if it was an else statement then we should change state
-    // and block this Else Command
-    if (!cmSystemTools::Strucmp(lff.Name.c_str(),"else"))
-      {
-      this->IsBlocking = this->HasRun;
-      return true;
-      }
-    // if it was an elseif statement then we should check state
-    // and possibly block this Else Command
-    if (!cmSystemTools::Strucmp(lff.Name.c_str(),"elseif"))
+    this->ScopeDepth--;
+    // if this is the endif for this if statement, then start executing
+    if (!this->ScopeDepth) 
       {
-      if (!this->HasRun)
+      // execute the functions for the true parts of the if statement
+      this->Executing = true;
+      cmExecutionStatus status;
+      int scopeDepth = 0;
+      for(unsigned int c = 0; c < this->Functions.size(); ++c)
         {
-        char* errorString = 0;
-        
-        std::vector<std::string> expandedArguments;
-        mf.ExpandArguments(lff.Arguments, expandedArguments);
-        bool isTrue = 
-          cmIfCommand::IsTrue(expandedArguments,&errorString,&mf);
-        
-        if (errorString)
+        // keep track of scope depth
+        if (!cmSystemTools::Strucmp(this->Functions[c].Name.c_str(),"if"))
           {
-          std::string err = "had incorrect arguments: ";
-          unsigned int i;
-          for(i =0; i < lff.Arguments.size(); ++i)
+          scopeDepth++;
+          }
+        if (!cmSystemTools::Strucmp(this->Functions[c].Name.c_str(),"endif"))
+          {
+          scopeDepth--;
+          }
+        // watch for our state change
+        if (scopeDepth == 0 &&
+            !cmSystemTools::Strucmp(this->Functions[c].Name.c_str(),"else"))
+          {
+          this->IsBlocking = this->HasRun;
+          this->HasRun = true;
+          }
+        else if (scopeDepth == 0 && !cmSystemTools::Strucmp
+                 (this->Functions[c].Name.c_str(),"elseif"))
+          {
+          if (this->HasRun)
             {
-            err += (lff.Arguments[i].Quoted?"\"":"");
-            err += lff.Arguments[i].Value;
-            err += (lff.Arguments[i].Quoted?"\"":"");
-            err += " ";
+            this->IsBlocking = true;
             }
-          err += "(";
-          err += errorString;
-          err += ").";
-          cmSystemTools::Error(err.c_str());
-          delete [] errorString;
-          return false;
-          }
+          else
+            {
+            char* errorString = 0;
+            
+            std::vector<std::string> expandedArguments;
+            mf.ExpandArguments(this->Functions[c].Arguments, 
+                               expandedArguments);
+            bool isTrue = 
+              cmIfCommand::IsTrue(expandedArguments,&errorString,&mf);
+            
+            if (errorString)
+              {
+              std::string err = "had incorrect arguments: ";
+              unsigned int i;
+              for(i =0; i < this->Functions[c].Arguments.size(); ++i)
+                {
+                err += (this->Functions[c].Arguments[i].Quoted?"\"":"");
+                err += this->Functions[c].Arguments[i].Value;
+                err += (this->Functions[c].Arguments[i].Quoted?"\"":"");
+                err += " ";
+                }
+              err += "(";
+              err += errorString;
+              err += ").";
+              cmSystemTools::Error(err.c_str());
+              delete [] errorString;
+              return false;
+              }
         
-        if (isTrue)
+            if (isTrue)
+              {
+              this->IsBlocking = false;
+              this->HasRun = true;
+              }
+            }
+          }
+            
+        // should we execute?
+        else if (!this->IsBlocking)
           {
-          this->IsBlocking = false;
-          this->HasRun = true;
-          return true;
+          status.Clear();
+          mf.ExecuteCommand(this->Functions[c],status);
+          if (status.GetReturnInvoked())
+            {
+            inStatus.SetReturnInvoked(true);
+            mf.RemoveFunctionBlocker(lff);
+            return true;
+            }
+          if (status.GetBreakInvoked())
+            {
+            inStatus.SetBreakInvoked(true);
+            mf.RemoveFunctionBlocker(lff);
+            return true;
+            }
           }
         }
-      this->IsBlocking = true;
+      mf.RemoveFunctionBlocker(lff);
       return true;
       }
-    // otherwise it must be an ENDIF statement, in that case remove the
-    // function blocker
-    mf.RemoveFunctionBlocker(lff);
-    return true;
     }
   
-  return this->IsBlocking;
+  // record the command
+  this->Functions.push_back(lff);
+  
+  // always return true
+  return true;
 }
 
 bool cmIfFunctionBlocker::ShouldRemove(const cmListFileFunction& lff,
@@ -142,7 +175,8 @@
 }
 
 bool cmIfCommand
-::InvokeInitialPass(const std::vector<cmListFileArgument>& args)
+::InvokeInitialPass(const std::vector<cmListFileArgument>& args, 
+                    cmExecutionStatus &)
 {
   char* errorString = 0;
   
@@ -172,6 +206,7 @@
   
   cmIfFunctionBlocker *f = new cmIfFunctionBlocker();
   // if is isn't true block the commands
+  f->ScopeDepth = 1;
   f->IsBlocking = !isTrue;
   if (isTrue)
     {

Index: cmListCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmListCommand.cxx,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- cmListCommand.cxx	16 Jan 2008 16:24:41 -0000	1.16
+++ cmListCommand.cxx	23 Jan 2008 15:27:59 -0000	1.17
@@ -21,7 +21,8 @@
 #include <stdlib.h> // required for atoi
 #include <ctype.h>
 //----------------------------------------------------------------------------
-bool cmListCommand::InitialPass(std::vector<std::string> const& args)
+bool cmListCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1)
     {

Index: cmEndWhileCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndWhileCommand.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- cmEndWhileCommand.cxx	10 May 2006 19:06:06 -0000	1.2
+++ cmEndWhileCommand.cxx	23 Jan 2008 15:27:59 -0000	1.3
@@ -17,7 +17,8 @@
 #include "cmEndWhileCommand.h"
 
 bool cmEndWhileCommand
-::InvokeInitialPass(std::vector<cmListFileArgument> const&)
+::InvokeInitialPass(std::vector<cmListFileArgument> const&,
+                    cmExecutionStatus &)
 {
   this->SetError("An ENDWHILE command was found outside of a proper "
                  "WHILE ENDWHILE structure. Or its arguments did not "

Index: cmGetPropertyCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetPropertyCommand.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- cmGetPropertyCommand.h	17 Jan 2008 22:19:13 -0000	1.5
+++ cmGetPropertyCommand.h	23 Jan 2008 15:27:59 -0000	1.6
@@ -33,7 +33,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmProjectCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmProjectCommand.cxx,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- cmProjectCommand.cxx	28 Jun 2007 13:09:26 -0000	1.24
+++ cmProjectCommand.cxx	23 Jan 2008 15:27:59 -0000	1.25
@@ -17,7 +17,8 @@
 #include "cmProjectCommand.h"
 
 // cmProjectCommand
-bool cmProjectCommand::InitialPass(std::vector<std::string> const& args)
+bool cmProjectCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmExecProgramCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExecProgramCommand.cxx,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- cmExecProgramCommand.cxx	10 May 2006 19:06:06 -0000	1.22
+++ cmExecProgramCommand.cxx	23 Jan 2008 15:27:59 -0000	1.23
@@ -18,7 +18,8 @@
 #include "cmSystemTools.h"
 
 // cmExecProgramCommand
-bool cmExecProgramCommand::InitialPass(std::vector<std::string> const& args)
+bool cmExecProgramCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmAddLibraryCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddLibraryCommand.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- cmAddLibraryCommand.h	10 Oct 2007 15:47:43 -0000	1.19
+++ cmAddLibraryCommand.h	23 Jan 2008 15:27:59 -0000	1.20
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmSourceGroupCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSourceGroupCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmSourceGroupCommand.h	10 Oct 2007 15:47:43 -0000	1.15
+++ cmSourceGroupCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmOutputRequiredFilesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmOutputRequiredFilesCommand.cxx,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmOutputRequiredFilesCommand.cxx	18 Jun 2007 15:59:23 -0000	1.15
+++ cmOutputRequiredFilesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.16
@@ -177,7 +177,7 @@
 
 // cmOutputRequiredFilesCommand
 bool cmOutputRequiredFilesCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() != 2 )
     {
@@ -189,6 +189,21 @@
   this->File = args[0];
   this->OutputFile = args[1];
   
+  // compute the list of files
+  cmLBDepend md;
+  md.SetMakefile(this->Makefile);
+  md.AddSearchPath(this->Makefile->GetStartDirectory());
+  // find the depends for a file
+  const cmDependInformation *info = md.FindDependencies(this->File.c_str());
+  if (info)
+    {
+    // write them out
+    FILE *fout = fopen(this->OutputFile.c_str(),"w");
+    std::set<cmDependInformation const*> visited;
+    this->ListDependencies(info,fout, &visited);
+    fclose(fout);
+    }
+
   return true;
 }
 
@@ -221,20 +236,3 @@
     }
 }
 
-void cmOutputRequiredFilesCommand::FinalPass()
-{
-  // compute the list of files
-  cmLBDepend md;
-  md.SetMakefile(this->Makefile);
-  md.AddSearchPath(this->Makefile->GetStartDirectory());
-  // find the depends for a file
-  const cmDependInformation *info = md.FindDependencies(this->File.c_str());
-  if (info)
-    {
-    // write them out
-    FILE *fout = fopen(this->OutputFile.c_str(),"w");
-    std::set<cmDependInformation const*> visited;
-    this->ListDependencies(info,fout, &visited);
-    fclose(fout);
-    }
-}

Index: cmOptionCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmOptionCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmOptionCommand.h	20 Dec 2007 22:49:38 -0000	1.15
+++ cmOptionCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmForEachCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmForEachCommand.cxx,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- cmForEachCommand.cxx	7 Dec 2006 14:44:45 -0000	1.25
+++ cmForEachCommand.cxx	23 Jan 2008 15:27:59 -0000	1.26
@@ -17,9 +17,10 @@
 #include "cmForEachCommand.h"
 
 bool cmForEachFunctionBlocker::
-IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf) 
+IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf,
+                  cmExecutionStatus &inStatus)
 {
-  // Prevent recusion and don't let this blobker block its own
+  // Prevent recusion and don't let this blocker block its own
   // commands.
   if (this->Executing)
     {
@@ -54,9 +55,26 @@
         // set the variable to the loop value
         mf.AddDefinition(this->Args[0].c_str(),j->c_str());
         // Invoke all the functions that were collected in the block.
+        cmExecutionStatus status;
         for(unsigned int c = 0; c < this->Functions.size(); ++c)
           {
-          mf.ExecuteCommand(this->Functions[c]);
+          status.Clear();
+          mf.ExecuteCommand(this->Functions[c],status);
+          if (status.GetReturnInvoked())
+            {
+            inStatus.SetReturnInvoked(true);
+            // restore the variable to its prior value
+            mf.AddDefinition(this->Args[0].c_str(),oldDef.c_str());
+            mf.RemoveFunctionBlocker(lff);
+            return true;
+            }
+          if (status.GetBreakInvoked())
+            {
+            // restore the variable to its prior value
+            mf.AddDefinition(this->Args[0].c_str(),oldDef.c_str());
+            mf.RemoveFunctionBlocker(lff);
+            return true;
+            }
           }
         }
       // restore the variable to its prior value
@@ -105,7 +123,8 @@
                        mf.GetCurrentDirectory());
 }
 
-bool cmForEachCommand::InitialPass(std::vector<std::string> const& args)
+bool cmForEachCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1)
     {

Index: cmWhileCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmWhileCommand.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- cmWhileCommand.h	10 Jan 2008 03:09:19 -0000	1.8
+++ cmWhileCommand.h	23 Jan 2008 15:27:59 -0000	1.9
@@ -32,7 +32,8 @@
   cmWhileFunctionBlocker() {Executing = false; Depth=0;}
   virtual ~cmWhileFunctionBlocker() {}
   virtual bool IsFunctionBlocked(const cmListFileFunction& lff,
-                                 cmMakefile &mf);
+                                 cmMakefile &mf,
+                                 cmExecutionStatus &);
   virtual bool ShouldRemove(const cmListFileFunction& lff, cmMakefile &mf);
   virtual void ScopeEnded(cmMakefile &mf);
   
@@ -63,13 +64,15 @@
    * This overrides the default InvokeInitialPass implementation.
    * It records the arguments before expansion.
    */
-  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args);
+  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args,
+                                 cmExecutionStatus &);
     
   /**
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const&) { return false; }
+  virtual bool InitialPass(std::vector<std::string> const&,
+                           cmExecutionStatus &) { return false; }
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmGetPropertyCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetPropertyCommand.cxx,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- cmGetPropertyCommand.cxx	17 Jan 2008 22:19:13 -0000	1.4
+++ cmGetPropertyCommand.cxx	23 Jan 2008 15:27:59 -0000	1.5
@@ -27,7 +27,8 @@
 }
 
 //----------------------------------------------------------------------------
-bool cmGetPropertyCommand::InitialPass(std::vector<std::string> const& args)
+bool cmGetPropertyCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 3 )
     {

Index: cmStringCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmStringCommand.cxx,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- cmStringCommand.cxx	16 Dec 2007 12:56:43 -0000	1.26
+++ cmStringCommand.cxx	23 Jan 2008 15:27:59 -0000	1.27
@@ -23,7 +23,8 @@
 #include <time.h>
 
 //----------------------------------------------------------------------------
-bool cmStringCommand::InitialPass(std::vector<std::string> const& args)
+bool cmStringCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1)
     {

Index: cmEndFunctionCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndFunctionCommand.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- cmEndFunctionCommand.cxx	3 Dec 2007 17:47:22 -0000	1.1
+++ cmEndFunctionCommand.cxx	23 Jan 2008 15:27:59 -0000	1.2
@@ -17,7 +17,8 @@
 #include "cmEndFunctionCommand.h"
 
 bool cmEndFunctionCommand
-::InvokeInitialPass(std::vector<cmListFileArgument> const&)
+::InvokeInitialPass(std::vector<cmListFileArgument> const&,
+                    cmExecutionStatus &)
 {
   this->SetError("An ENDFUNCTION command was found outside of a proper "
                  "FUNCTION ENDFUNCTION structure. Or its arguments did not "

Index: cmSetTestsPropertiesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetTestsPropertiesCommand.cxx,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- cmSetTestsPropertiesCommand.cxx	7 Dec 2006 21:31:56 -0000	1.6
+++ cmSetTestsPropertiesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.7
@@ -20,8 +20,8 @@
 #include "cmTest.h"
 
 // cmSetTestsPropertiesCommand
-bool cmSetTestsPropertiesCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmSetTestsPropertiesCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmAddCustomCommandCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddCustomCommandCommand.h,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- cmAddCustomCommandCommand.h	10 Oct 2007 15:47:43 -0000	1.31
+++ cmAddCustomCommandCommand.h	23 Jan 2008 15:27:59 -0000	1.32
@@ -42,7 +42,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmSetSourceFilesPropertiesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetSourceFilesPropertiesCommand.cxx,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- cmSetSourceFilesPropertiesCommand.cxx	11 Dec 2006 15:26:10 -0000	1.17
+++ cmSetSourceFilesPropertiesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.18
@@ -19,8 +19,8 @@
 #include "cmSourceFile.h"
 
 // cmSetSourceFilesPropertiesCommand
-bool cmSetSourceFilesPropertiesCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmSetSourceFilesPropertiesCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmMakefile.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMakefile.cxx,v
retrieving revision 1.428
retrieving revision 1.429
diff -u -d -r1.428 -r1.429
--- cmMakefile.cxx	18 Jan 2008 22:11:50 -0000	1.428
+++ cmMakefile.cxx	23 Jan 2008 15:27:59 -0000	1.429
@@ -278,17 +278,20 @@
   return this->GetCMakeInstance()->CommandExists(name);
 }
 
-bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff)
+bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff,
+                                cmExecutionStatus &status)
 {
   bool result = true;
+
   // quick return if blocked
-  if(this->IsFunctionBlocked(lff))
+  if(this->IsFunctionBlocked(lff,status))
     {
     // No error.
     return result;
     }
-
+  
   std::string name = lff.Name;
+
   // execute the command
   cmCommand *rm =
     this->GetCMakeInstance()->GetCommand(name.c_str());
@@ -319,7 +322,7 @@
        (!this->GetCMakeInstance()->GetScriptMode() ||
         usedCommand->IsScriptable()))
       {
-      if(!usedCommand->InvokeInitialPass(lff.Arguments))
+      if(!usedCommand->InvokeInitialPass(lff.Arguments,status))
         {
         cmOStringStream error;
         error << "Error in cmake code at\n"
@@ -478,8 +481,10 @@
   const size_t numberFunctions = cacheFile.Functions.size();
   for(size_t i =0; i < numberFunctions; ++i)
     {
-    this->ExecuteCommand(cacheFile.Functions[i]);
-    if ( cmSystemTools::GetFatalErrorOccured() )
+    cmExecutionStatus status;
+    this->ExecuteCommand(cacheFile.Functions[i],status);
+    if (status.GetReturnInvoked() ||
+        cmSystemTools::GetFatalErrorOccured() )
       {
       // pop the listfile off the stack
       this->ListFileStack.pop_back();
@@ -2110,7 +2115,8 @@
 }
 #endif
 
-bool cmMakefile::IsFunctionBlocked(const cmListFileFunction& lff)
+bool cmMakefile::IsFunctionBlocked(const cmListFileFunction& lff,
+                                   cmExecutionStatus &status)
 {
   // if there are no blockers get out of here
   if (this->FunctionBlockers.begin() == this->FunctionBlockers.end())
@@ -2124,7 +2130,7 @@
   for (pos = this->FunctionBlockers.rbegin();
        pos != this->FunctionBlockers.rend(); ++pos)
     {
-    if((*pos)->IsFunctionBlocked(lff, *this))
+    if((*pos)->IsFunctionBlocked(lff, *this, status))
       {
       return true;
       }

Index: cmFunctionCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFunctionCommand.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- cmFunctionCommand.h	4 Dec 2007 15:43:33 -0000	1.2
+++ cmFunctionCommand.h	23 Jan 2008 15:27:59 -0000	1.3
@@ -30,7 +30,9 @@
 public:
   cmFunctionFunctionBlocker() {this->Depth=0;}
   virtual ~cmFunctionFunctionBlocker() {}
-  virtual bool IsFunctionBlocked(const cmListFileFunction&, cmMakefile &mf);
+  virtual bool IsFunctionBlocked(const cmListFileFunction&, 
+                                 cmMakefile &mf,
+                                 cmExecutionStatus &);
   virtual bool ShouldRemove(const cmListFileFunction&, cmMakefile &mf);
   virtual void ScopeEnded(cmMakefile &mf);
   
@@ -59,7 +61,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmAddLibraryCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddLibraryCommand.cxx,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- cmAddLibraryCommand.cxx	13 Jul 2007 16:03:13 -0000	1.32
+++ cmAddLibraryCommand.cxx	23 Jan 2008 15:27:59 -0000	1.33
@@ -19,7 +19,8 @@
 #include "cmake.h"
 
 // cmLibraryCommand
-bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args)
+bool cmAddLibraryCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmQTWrapUICommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmQTWrapUICommand.cxx,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- cmQTWrapUICommand.cxx	18 Jun 2007 15:59:23 -0000	1.25
+++ cmQTWrapUICommand.cxx	23 Jan 2008 15:27:59 -0000	1.26
@@ -17,7 +17,8 @@
 #include "cmQTWrapUICommand.h"
 
 // cmQTWrapUICommand
-bool cmQTWrapUICommand::InitialPass(std::vector<std::string> const& argsIn)
+bool cmQTWrapUICommand::InitialPass(std::vector<std::string> const& argsIn, 
+                                    cmExecutionStatus &)
 {
   if(argsIn.size() < 4 )
     {

Index: cmGetTestPropertyCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetTestPropertyCommand.cxx,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cmGetTestPropertyCommand.cxx	15 Mar 2006 16:02:02 -0000	1.3
+++ cmGetTestPropertyCommand.cxx	23 Jan 2008 15:27:59 -0000	1.4
@@ -20,8 +20,8 @@
 #include "cmTest.h"
 
 // cmGetTestPropertyCommand
-bool cmGetTestPropertyCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmGetTestPropertyCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 3 )
     {

Index: cmIncludeExternalMSProjectCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIncludeExternalMSProjectCommand.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- cmIncludeExternalMSProjectCommand.h	10 Oct 2007 15:47:43 -0000	1.7
+++ cmIncludeExternalMSProjectCommand.h	23 Jan 2008 15:27:59 -0000	1.8
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmAddDefinitionsCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddDefinitionsCommand.cxx,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmAddDefinitionsCommand.cxx	15 Mar 2006 16:01:58 -0000	1.13
+++ cmAddDefinitionsCommand.cxx	23 Jan 2008 15:27:59 -0000	1.14
@@ -17,8 +17,8 @@
 #include "cmAddDefinitionsCommand.h"
 
 // cmAddDefinitionsCommand
-bool cmAddDefinitionsCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmAddDefinitionsCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   // it is OK to have no arguments
   if(args.size() < 1 )

Index: cmIncludeRegularExpressionCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIncludeRegularExpressionCommand.cxx,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmIncludeRegularExpressionCommand.cxx	11 May 2006 19:50:11 -0000	1.9
+++ cmIncludeRegularExpressionCommand.cxx	23 Jan 2008 15:27:59 -0000	1.10
@@ -18,7 +18,7 @@
 
 // cmIncludeRegularExpressionCommand
 bool cmIncludeRegularExpressionCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if((args.size() < 1) || (args.size() > 2))
     {

Index: cmLinkLibrariesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLinkLibrariesCommand.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- cmLinkLibrariesCommand.h	10 Oct 2007 15:47:43 -0000	1.19
+++ cmLinkLibrariesCommand.h	23 Jan 2008 15:27:59 -0000	1.20
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmRemoveDefinitionsCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmRemoveDefinitionsCommand.cxx,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cmRemoveDefinitionsCommand.cxx	12 May 2006 17:44:15 -0000	1.3
+++ cmRemoveDefinitionsCommand.cxx	23 Jan 2008 15:27:59 -0000	1.4
@@ -18,7 +18,7 @@
 
 // cmRemoveDefinitionsCommand
 bool cmRemoveDefinitionsCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   // it is OK to have no arguments
   if(args.size() < 1 )

Index: cmEndIfCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndIfCommand.cxx,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- cmEndIfCommand.cxx	10 May 2006 19:06:06 -0000	1.14
+++ cmEndIfCommand.cxx	23 Jan 2008 15:27:59 -0000	1.15
@@ -16,7 +16,8 @@
 =========================================================================*/
 #include "cmEndIfCommand.h"
 #include <stdlib.h> // required for atof
-bool cmEndIfCommand::InitialPass(std::vector<std::string> const&)
+bool cmEndIfCommand::InitialPass(std::vector<std::string> const&,
+                                 cmExecutionStatus &)
 {
   const char* versionValue
     = this->Makefile->GetDefinition("CMAKE_MINIMUM_REQUIRED_VERSION");

Index: cmEndMacroCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndMacroCommand.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- cmEndMacroCommand.cxx	3 Oct 2006 18:40:22 -0000	1.1
+++ cmEndMacroCommand.cxx	23 Jan 2008 15:27:59 -0000	1.2
@@ -17,7 +17,8 @@
 #include "cmEndMacroCommand.h"
 
 bool cmEndMacroCommand
-::InvokeInitialPass(std::vector<cmListFileArgument> const&)
+::InvokeInitialPass(std::vector<cmListFileArgument> const&,
+                    cmExecutionStatus &)
 {
   this->SetError("An ENDMACRO command was found outside of a proper "
                  "MACRO ENDMACRO structure. Or its arguments did not "

Index: cmCreateTestSourceList.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCreateTestSourceList.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmCreateTestSourceList.h	20 Dec 2007 22:49:38 -0000	1.15
+++ cmCreateTestSourceList.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmElseIfCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmElseIfCommand.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- cmElseIfCommand.h	10 Oct 2007 15:47:43 -0000	1.2
+++ cmElseIfCommand.h	23 Jan 2008 15:27:59 -0000	1.3
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmEnableTestingCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEnableTestingCommand.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- cmEnableTestingCommand.h	17 Jan 2008 17:35:07 -0000	1.14
+++ cmEnableTestingCommand.h	23 Jan 2008 15:27:59 -0000	1.15
@@ -47,7 +47,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const&);
+  virtual bool InitialPass(std::vector<std::string> const&,
+                           cmExecutionStatus &);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmMathCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMathCommand.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- cmMathCommand.cxx	15 Mar 2006 16:02:06 -0000	1.2
+++ cmMathCommand.cxx	23 Jan 2008 15:27:59 -0000	1.3
@@ -19,7 +19,8 @@
 #include "cmExprParserHelper.h"
 
 //----------------------------------------------------------------------------
-bool cmMathCommand::InitialPass(std::vector<std::string> const& args)
+bool cmMathCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if ( args.size() < 1 )
     {

Index: cmBootstrapCommands.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmBootstrapCommands.cxx,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- cmBootstrapCommands.cxx	18 Jan 2008 20:52:53 -0000	1.22
+++ cmBootstrapCommands.cxx	23 Jan 2008 15:27:59 -0000	1.23
@@ -27,6 +27,7 @@
 #include "cmAddLibraryCommand.cxx"
 #include "cmAddSubDirectoryCommand.cxx"
 #include "cmAddTestCommand.cxx"
+#include "cmBreakCommand.cxx"
 #include "cmBuildCommand.cxx"
 #include "cmCMakeMinimumRequired.cxx"
 #include "cmCommandArgumentsHelper.cxx"
@@ -70,6 +71,7 @@
 #include "cmMessageCommand.cxx"
 #include "cmOptionCommand.cxx"
 #include "cmProjectCommand.cxx"
+#include "cmReturnCommand.cxx"
 #include "cmSetCommand.cxx"
 #include "cmSetPropertyCommand.cxx"
 #include "cmSetSourceFilesPropertiesCommand.cxx"
@@ -92,6 +94,7 @@
   commands.push_back(new cmAddLibraryCommand);
   commands.push_back(new cmAddSubDirectoryCommand);
   commands.push_back(new cmAddTestCommand);
+  commands.push_back(new cmBreakCommand);
   commands.push_back(new cmBuildCommand);
   commands.push_back(new cmCMakeMinimumRequired);
   commands.push_back(new cmConfigureFileCommand);
@@ -129,6 +132,7 @@
   commands.push_back(new cmMessageCommand);
   commands.push_back(new cmOptionCommand);
   commands.push_back(new cmProjectCommand);
+  commands.push_back(new cmReturnCommand);
   commands.push_back(new cmSetCommand);
   commands.push_back(new cmSetPropertyCommand);
   commands.push_back(new cmSetSourceFilesPropertiesCommand);

Index: cmCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCommand.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- cmCommand.h	2 Jul 2007 19:43:21 -0000	1.25
+++ cmCommand.h	23 Jan 2008 15:27:59 -0000	1.26
@@ -60,18 +60,20 @@
    * encountered in the CMakeLists.txt file.  It expands the command's
    * arguments and then invokes the InitialPass.
    */
-  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args)
+  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args,
+                                 cmExecutionStatus &status)
     {
     std::vector<std::string> expandedArguments;
     this->Makefile->ExpandArguments(args, expandedArguments);
-    return this->InitialPass(expandedArguments);
+    return this->InitialPass(expandedArguments,status);
     }
 
   /**
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args) = 0;
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &) = 0;
 
   /**
    * This is called at the end after all the information

Index: cmSubdirDependsCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSubdirDependsCommand.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- cmSubdirDependsCommand.h	10 Oct 2007 15:47:43 -0000	1.11
+++ cmSubdirDependsCommand.h	23 Jan 2008 15:27:59 -0000	1.12
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmFileCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFileCommand.h,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- cmFileCommand.h	2 Jan 2008 21:46:38 -0000	1.31
+++ cmFileCommand.h	23 Jan 2008 15:27:59 -0000	1.32
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmInstallFilesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmInstallFilesCommand.cxx,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- cmInstallFilesCommand.cxx	25 May 2007 15:08:52 -0000	1.27
+++ cmInstallFilesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.28
@@ -20,7 +20,7 @@
 
 // cmExecutableCommand
 bool cmInstallFilesCommand
-::InitialPass(std::vector<std::string> const& argsIn)
+::InitialPass(std::vector<std::string> const& argsIn, cmExecutionStatus &)
 {
   if(argsIn.size() < 2)
     {

Index: cmSubdirCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSubdirCommand.cxx,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- cmSubdirCommand.cxx	12 Mar 2007 14:26:59 -0000	1.18
+++ cmSubdirCommand.cxx	23 Jan 2008 15:27:59 -0000	1.19
@@ -17,7 +17,8 @@
 #include "cmSubdirCommand.h"
 
 // cmSubdirCommand
-bool cmSubdirCommand::InitialPass(std::vector<std::string> const& args)
+bool cmSubdirCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmEndFunctionCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndFunctionCommand.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- cmEndFunctionCommand.h	3 Dec 2007 17:47:22 -0000	1.1
+++ cmEndFunctionCommand.h	23 Jan 2008 15:27:59 -0000	1.2
@@ -39,13 +39,15 @@
    * Override cmCommand::InvokeInitialPass to get arguments before
    * expansion.
    */
-  virtual bool InvokeInitialPass(std::vector<cmListFileArgument> const&);
+  virtual bool InvokeInitialPass(std::vector<cmListFileArgument> const&,
+                                 cmExecutionStatus &);
   
   /**
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const&) {return false;}
+  virtual bool InitialPass(std::vector<std::string> const&,
+                           cmExecutionStatus &) {return false;}
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmIncludeCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIncludeCommand.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- cmIncludeCommand.h	10 Oct 2007 15:47:43 -0000	1.16
+++ cmIncludeCommand.h	23 Jan 2008 15:27:59 -0000	1.17
@@ -42,7 +42,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmFLTKWrapUICommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFLTKWrapUICommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmFLTKWrapUICommand.h	10 Oct 2007 15:47:43 -0000	1.15
+++ cmFLTKWrapUICommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -42,7 +42,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * This is called at the end after all the information

Index: cmRemoveCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmRemoveCommand.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- cmRemoveCommand.h	10 Oct 2007 15:47:43 -0000	1.10
+++ cmRemoveCommand.h	23 Jan 2008 15:27:59 -0000	1.11
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmAddCustomTargetCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddCustomTargetCommand.cxx,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- cmAddCustomTargetCommand.cxx	13 Mar 2007 19:18:27 -0000	1.26
+++ cmAddCustomTargetCommand.cxx	23 Jan 2008 15:27:59 -0000	1.27
@@ -17,8 +17,8 @@
 #include "cmAddCustomTargetCommand.h"
 
 // cmAddCustomTargetCommand
-bool cmAddCustomTargetCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmAddCustomTargetCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmFindLibraryCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindLibraryCommand.cxx,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- cmFindLibraryCommand.cxx	23 Jan 2008 14:53:33 -0000	1.50
+++ cmFindLibraryCommand.cxx	23 Jan 2008 15:27:59 -0000	1.51
@@ -55,7 +55,8 @@
 }
 
 // cmFindLibraryCommand
-bool cmFindLibraryCommand::InitialPass(std::vector<std::string> const& argsIn)
+bool cmFindLibraryCommand
+::InitialPass(std::vector<std::string> const& argsIn, cmExecutionStatus &)
 {
   this->VariableDocumentation = "Path to a library.";
   this->CMakePathName = "LIBRARY";

Index: cmQTWrapCPPCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmQTWrapCPPCommand.cxx,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- cmQTWrapCPPCommand.cxx	23 Nov 2007 16:30:55 -0000	1.26
+++ cmQTWrapCPPCommand.cxx	23 Jan 2008 15:27:59 -0000	1.27
@@ -17,7 +17,8 @@
 #include "cmQTWrapCPPCommand.h"
 
 // cmQTWrapCPPCommand
-bool cmQTWrapCPPCommand::InitialPass(std::vector<std::string> const& argsIn)
+bool cmQTWrapCPPCommand::InitialPass(std::vector<std::string> const& argsIn, 
+                                     cmExecutionStatus &)
 {
   if(argsIn.size() < 3 )
     {

Index: cmEndMacroCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndMacroCommand.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- cmEndMacroCommand.h	10 Oct 2007 15:47:43 -0000	1.2
+++ cmEndMacroCommand.h	23 Jan 2008 15:27:59 -0000	1.3
@@ -39,13 +39,15 @@
    * Override cmCommand::InvokeInitialPass to get arguments before
    * expansion.
    */
-  virtual bool InvokeInitialPass(std::vector<cmListFileArgument> const&);
+  virtual bool InvokeInitialPass(std::vector<cmListFileArgument> const&,
+                                 cmExecutionStatus &);
   
   /**
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const&) {return false;}
+  virtual bool InitialPass(std::vector<std::string> const&,
+                           cmExecutionStatus &) {return false;}
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmRemoveDefinitionsCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmRemoveDefinitionsCommand.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- cmRemoveDefinitionsCommand.h	18 Jan 2008 00:29:43 -0000	1.6
+++ cmRemoveDefinitionsCommand.h	23 Jan 2008 15:27:59 -0000	1.7
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmEndWhileCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndWhileCommand.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- cmEndWhileCommand.h	10 Oct 2007 15:47:43 -0000	1.5
+++ cmEndWhileCommand.h	23 Jan 2008 15:27:59 -0000	1.6
@@ -39,13 +39,15 @@
    * Override cmCommand::InvokeInitialPass to get arguments before
    * expansion.
    */
-  virtual bool InvokeInitialPass(std::vector<cmListFileArgument> const&);
+  virtual bool InvokeInitialPass(std::vector<cmListFileArgument> const&,
+                                 cmExecutionStatus &status);
   
   /**
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const&) {return false;}
+  virtual bool InitialPass(std::vector<std::string> const&,
+                           cmExecutionStatus &) {return false;}
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmGetTargetPropertyCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetTargetPropertyCommand.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- cmGetTargetPropertyCommand.h	10 Oct 2007 15:47:43 -0000	1.11
+++ cmGetTargetPropertyCommand.h	23 Jan 2008 15:27:59 -0000	1.12
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmUtilitySourceCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmUtilitySourceCommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmUtilitySourceCommand.h	10 Oct 2007 15:47:43 -0000	1.13
+++ cmUtilitySourceCommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -43,7 +43,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmAuxSourceDirectoryCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAuxSourceDirectoryCommand.cxx,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- cmAuxSourceDirectoryCommand.cxx	2 Jan 2008 16:08:02 -0000	1.25
+++ cmAuxSourceDirectoryCommand.cxx	23 Jan 2008 15:27:59 -0000	1.26
@@ -21,7 +21,7 @@
 
 // cmAuxSourceDirectoryCommand
 bool cmAuxSourceDirectoryCommand::InitialPass
-(std::vector<std::string> const& args)
+(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 || args.size() > 2)
     {

Index: cmGetTargetPropertyCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetTargetPropertyCommand.cxx,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmGetTargetPropertyCommand.cxx	31 May 2007 16:03:52 -0000	1.9
+++ cmGetTargetPropertyCommand.cxx	23 Jan 2008 15:27:59 -0000	1.10
@@ -17,8 +17,8 @@
 #include "cmGetTargetPropertyCommand.h"
 
 // cmSetTargetPropertyCommand
-bool cmGetTargetPropertyCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmGetTargetPropertyCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() != 3 )
     {

Index: cmMessageCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMessageCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmMessageCommand.h	10 Oct 2007 15:47:43 -0000	1.15
+++ cmMessageCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -38,7 +38,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmWhileCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmWhileCommand.cxx,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmWhileCommand.cxx	7 Dec 2006 14:44:45 -0000	1.9
+++ cmWhileCommand.cxx	23 Jan 2008 15:27:59 -0000	1.10
@@ -18,7 +18,8 @@
 #include "cmIfCommand.h"
 
 bool cmWhileFunctionBlocker::
-IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf) 
+IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf,
+                  cmExecutionStatus &inStatus)
 {
   // Prevent recusion and don't let this blocker block its own
   // commands.
@@ -51,7 +52,19 @@
         // Invoke all the functions that were collected in the block.
         for(unsigned int c = 0; c < this->Functions.size(); ++c)
           {
-          mf.ExecuteCommand(this->Functions[c]);
+          cmExecutionStatus status;
+          mf.ExecuteCommand(this->Functions[c],status);
+          if (status.GetReturnInvoked())
+            {
+            inStatus.SetReturnInvoked(true);
+            mf.RemoveFunctionBlocker(lff);
+            return true;
+            }
+          if (status.GetBreakInvoked())
+            {
+            mf.RemoveFunctionBlocker(lff);
+            return true;
+            }
           }
         expandedArguments.clear();
         mf.ExpandArguments(this->Args, expandedArguments);
@@ -99,8 +112,9 @@
     mf.GetCurrentDirectory());
 }
 
-bool cmWhileCommand::InvokeInitialPass(
-  const std::vector<cmListFileArgument>& args)
+bool cmWhileCommand
+::InvokeInitialPass(const std::vector<cmListFileArgument>& args, 
+                    cmExecutionStatus &)
 {
   if(args.size() < 1)
     {

Index: cmSubdirCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSubdirCommand.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- cmSubdirCommand.h	10 Oct 2007 15:47:43 -0000	1.20
+++ cmSubdirCommand.h	23 Jan 2008 15:27:59 -0000	1.21
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmForEachCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmForEachCommand.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- cmForEachCommand.h	15 Oct 2007 18:50:18 -0000	1.18
+++ cmForEachCommand.h	23 Jan 2008 15:27:59 -0000	1.19
@@ -32,7 +32,8 @@
   cmForEachFunctionBlocker() {this->Executing = false; Depth = 0;}
   virtual ~cmForEachFunctionBlocker() {}
   virtual bool IsFunctionBlocked(const cmListFileFunction& lff,
-                                 cmMakefile &mf);
+                                 cmMakefile &mf,
+                                 cmExecutionStatus &);
   virtual bool ShouldRemove(const cmListFileFunction& lff, cmMakefile &mf);
   virtual void ScopeEnded(cmMakefile &mf);
   
@@ -63,7 +64,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmGetDirectoryPropertyCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetDirectoryPropertyCommand.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- cmGetDirectoryPropertyCommand.h	10 Oct 2007 15:47:43 -0000	1.7
+++ cmGetDirectoryPropertyCommand.h	23 Jan 2008 15:27:59 -0000	1.8
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmLinkDirectoriesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLinkDirectoriesCommand.cxx,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- cmLinkDirectoriesCommand.cxx	12 May 2006 15:56:08 -0000	1.12
+++ cmLinkDirectoriesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.13
@@ -18,7 +18,7 @@
 
 // cmLinkDirectoriesCommand
 bool cmLinkDirectoriesCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
  if(args.size() < 1 )
     {

Index: cmIncludeCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIncludeCommand.cxx,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- cmIncludeCommand.cxx	17 May 2007 17:20:44 -0000	1.19
+++ cmIncludeCommand.cxx	23 Jan 2008 15:27:59 -0000	1.20
@@ -18,7 +18,8 @@
 
 
 // cmIncludeCommand
-bool cmIncludeCommand::InitialPass(std::vector<std::string> const& args)
+bool cmIncludeCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if (args.size()< 1 || args.size() > 4)
     {

Index: cmAddDefinitionsCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddDefinitionsCommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmAddDefinitionsCommand.h	18 Jan 2008 00:29:43 -0000	1.13
+++ cmAddDefinitionsCommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmExecuteProcessCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExecuteProcessCommand.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- cmExecuteProcessCommand.h	10 Oct 2007 15:47:43 -0000	1.5
+++ cmExecuteProcessCommand.h	23 Jan 2008 15:27:59 -0000	1.6
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmStringCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmStringCommand.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- cmStringCommand.h	10 Jan 2008 03:09:19 -0000	1.27
+++ cmStringCommand.h	23 Jan 2008 15:27:59 -0000	1.28
@@ -44,7 +44,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmCMakeMinimumRequired.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCMakeMinimumRequired.cxx,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- cmCMakeMinimumRequired.cxx	29 Nov 2006 20:59:15 -0000	1.12
+++ cmCMakeMinimumRequired.cxx	23 Jan 2008 15:27:59 -0000	1.13
@@ -19,7 +19,8 @@
 #include "cmVersion.h"
 
 // cmCMakeMinimumRequired
-bool cmCMakeMinimumRequired::InitialPass(std::vector<std::string> const& args)
+bool cmCMakeMinimumRequired
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   // Process arguments.
   std::string version_string;

Index: cmGetCMakePropertyCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetCMakePropertyCommand.cxx,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- cmGetCMakePropertyCommand.cxx	25 Jun 2007 13:51:37 -0000	1.7
+++ cmGetCMakePropertyCommand.cxx	23 Jan 2008 15:27:59 -0000	1.8
@@ -19,8 +19,8 @@
 #include "cmake.h"
 
 // cmGetCMakePropertyCommand
-bool cmGetCMakePropertyCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmGetCMakePropertyCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmSetDirectoryPropertiesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetDirectoryPropertiesCommand.cxx,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- cmSetDirectoryPropertiesCommand.cxx	25 Jun 2007 13:51:37 -0000	1.6
+++ cmSetDirectoryPropertiesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.7
@@ -19,8 +19,8 @@
 #include "cmake.h"
 
 // cmSetDirectoryPropertiesCommand
-bool cmSetDirectoryPropertiesCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmSetDirectoryPropertiesCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmSubdirDependsCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSubdirDependsCommand.cxx,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- cmSubdirDependsCommand.cxx	23 Oct 2002 22:03:26 -0000	1.6
+++ cmSubdirDependsCommand.cxx	23 Jan 2008 15:27:59 -0000	1.7
@@ -17,7 +17,8 @@
 #include "cmSubdirDependsCommand.h"
 
 // cmSubdirDependsCommand
-bool cmSubdirDependsCommand::InitialPass(std::vector<std::string> const& )
+bool cmSubdirDependsCommand::InitialPass(std::vector<std::string> const& ,
+                                         cmExecutionStatus &)
 {
   return true;
 }

Index: cmCMakeMinimumRequired.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCMakeMinimumRequired.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmCMakeMinimumRequired.h	10 Oct 2007 15:47:43 -0000	1.9
+++ cmCMakeMinimumRequired.h	23 Jan 2008 15:27:59 -0000	1.10
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmElseCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmElseCommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmElseCommand.h	10 Oct 2007 15:47:43 -0000	1.13
+++ cmElseCommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmAuxSourceDirectoryCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAuxSourceDirectoryCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmAuxSourceDirectoryCommand.h	20 Dec 2007 22:49:38 -0000	1.15
+++ cmAuxSourceDirectoryCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -43,7 +43,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmGetSourceFilePropertyCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetSourceFilePropertyCommand.cxx,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- cmGetSourceFilePropertyCommand.cxx	18 Dec 2007 14:57:41 -0000	1.12
+++ cmGetSourceFilePropertyCommand.cxx	23 Jan 2008 15:27:59 -0000	1.13
@@ -19,8 +19,8 @@
 #include "cmSourceFile.h"
 
 // cmSetSourceFilePropertyCommand
-bool cmGetSourceFilePropertyCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmGetSourceFilePropertyCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() != 3 )
     {

Index: cmInstallFilesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmInstallFilesCommand.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- cmInstallFilesCommand.h	10 Oct 2007 15:47:43 -0000	1.22
+++ cmInstallFilesCommand.h	23 Jan 2008 15:27:59 -0000	1.23
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmAddExecutableCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddExecutableCommand.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- cmAddExecutableCommand.h	10 Jan 2008 03:09:19 -0000	1.18
+++ cmAddExecutableCommand.h	23 Jan 2008 15:27:59 -0000	1.19
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmBuildCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmBuildCommand.cxx,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- cmBuildCommand.cxx	9 Jul 2006 17:18:15 -0000	1.23
+++ cmBuildCommand.cxx	23 Jan 2008 15:27:59 -0000	1.24
@@ -20,7 +20,8 @@
 #include "cmGlobalGenerator.h"
 
 // cmBuildCommand
-bool cmBuildCommand::InitialPass(std::vector<std::string> const& args)
+bool cmBuildCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmAddTestCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddTestCommand.cxx,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- cmAddTestCommand.cxx	10 May 2006 17:50:44 -0000	1.28
+++ cmAddTestCommand.cxx	23 Jan 2008 15:27:59 -0000	1.29
@@ -20,7 +20,8 @@
 
 
 // cmExecutableCommand
-bool cmAddTestCommand::InitialPass(std::vector<std::string> const& args)
+bool cmAddTestCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   // First argument is the name of the test Second argument is the name of
   // the executable to run (a target or external program) Remaining arguments

Index: cmEndForEachCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndForEachCommand.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- cmEndForEachCommand.h	10 Oct 2007 15:47:43 -0000	1.12
+++ cmEndForEachCommand.h	23 Jan 2008 15:27:59 -0000	1.13
@@ -39,13 +39,15 @@
    * Override cmCommand::InvokeInitialPass to get arguments before
    * expansion.
    */
-  virtual bool InvokeInitialPass(std::vector<cmListFileArgument> const&);
+  virtual bool InvokeInitialPass(std::vector<cmListFileArgument> const&,
+                                 cmExecutionStatus &);
   
   /**
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const&) {return false;}
+  virtual bool InitialPass(std::vector<std::string> const&,
+                           cmExecutionStatus &) {return false;}
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmAddCustomCommandCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddCustomCommandCommand.cxx,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- cmAddCustomCommandCommand.cxx	17 Sep 2007 14:50:46 -0000	1.35
+++ cmAddCustomCommandCommand.cxx	23 Jan 2008 15:27:59 -0000	1.36
@@ -21,8 +21,8 @@
 #include "cmSourceFile.h"
 
 // cmAddCustomCommandCommand
-bool cmAddCustomCommandCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmAddCustomCommandCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   /* Let's complain at the end of this function about the lack of a particular
      arg. For the moment, let's say that COMMAND, and either TARGET or SOURCE

Index: cmVariableRequiresCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmVariableRequiresCommand.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- cmVariableRequiresCommand.h	10 Oct 2007 15:47:43 -0000	1.14
+++ cmVariableRequiresCommand.h	23 Jan 2008 15:27:59 -0000	1.15
@@ -38,7 +38,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmGetFilenameComponentCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetFilenameComponentCommand.cxx,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- cmGetFilenameComponentCommand.cxx	10 May 2006 19:56:00 -0000	1.16
+++ cmGetFilenameComponentCommand.cxx	23 Jan 2008 15:27:59 -0000	1.17
@@ -19,7 +19,7 @@
 
 // cmGetFilenameComponentCommand
 bool cmGetFilenameComponentCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 3)
     {

Index: cmAddTestCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddTestCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmAddTestCommand.h	10 Oct 2007 15:47:43 -0000	1.15
+++ cmAddTestCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmGetDirectoryPropertyCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetDirectoryPropertyCommand.cxx,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- cmGetDirectoryPropertyCommand.cxx	12 Jul 2007 14:17:37 -0000	1.10
+++ cmGetDirectoryPropertyCommand.cxx	23 Jan 2008 15:27:59 -0000	1.11
@@ -19,8 +19,8 @@
 #include "cmake.h"
 
 // cmGetDirectoryPropertyCommand
-bool cmGetDirectoryPropertyCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmGetDirectoryPropertyCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmEndForEachCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndForEachCommand.cxx,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmEndForEachCommand.cxx	10 May 2006 19:06:06 -0000	1.9
+++ cmEndForEachCommand.cxx	23 Jan 2008 15:27:59 -0000	1.10
@@ -17,7 +17,8 @@
 #include "cmEndForEachCommand.h"
 
 bool cmEndForEachCommand
-::InvokeInitialPass(std::vector<cmListFileArgument> const&)
+::InvokeInitialPass(std::vector<cmListFileArgument> const&, 
+                    cmExecutionStatus &)
 {
   this->SetError("An ENDFOREACH command was found outside of a proper "
                  "FOREACH ENDFOREACH structure. Or its arguments did "

Index: cmUtilitySourceCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmUtilitySourceCommand.cxx,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- cmUtilitySourceCommand.cxx	10 Aug 2007 19:02:38 -0000	1.24
+++ cmUtilitySourceCommand.cxx	23 Jan 2008 15:27:59 -0000	1.25
@@ -17,7 +17,8 @@
 #include "cmUtilitySourceCommand.h"
 
 // cmUtilitySourceCommand
-bool cmUtilitySourceCommand::InitialPass(std::vector<std::string> const& args)
+bool cmUtilitySourceCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 3)
     {

Index: cmGetFilenameComponentCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetFilenameComponentCommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmGetFilenameComponentCommand.h	10 Oct 2007 15:47:43 -0000	1.13
+++ cmGetFilenameComponentCommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmMakefile.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMakefile.h,v
retrieving revision 1.219
retrieving revision 1.220
diff -u -d -r1.219 -r1.220
--- cmMakefile.h	18 Jan 2008 00:29:43 -0000	1.219
+++ cmMakefile.h	23 Jan 2008 15:27:59 -0000	1.220
@@ -17,12 +17,13 @@
 #ifndef cmMakefile_h
 #define cmMakefile_h
 
+#include "cmCacheManager.h"
 #include "cmData.h"
-#include "cmSystemTools.h"
-#include "cmTarget.h"
+#include "cmExecutionStatus.h"
 #include "cmListFileCache.h"
-#include "cmCacheManager.h"
 #include "cmPropertyMap.h"
+#include "cmSystemTools.h"
+#include "cmTarget.h"
 
 #if defined(CMAKE_BUILD_WITH_CMAKE)
 #include "cmSourceGroup.h"
@@ -630,8 +631,9 @@
    * Execute a single CMake command.  Returns true if the command
    * succeeded or false if it failed.
    */
-  bool ExecuteCommand(const cmListFileFunction& lff);
-  
+  bool ExecuteCommand(const cmListFileFunction& lff, 
+                      cmExecutionStatus &status);
+
   /** Check if a command exists. */
   bool CommandExists(const char* name) const;
     
@@ -796,7 +798,8 @@
   std::vector<DefinitionMap> DefinitionStack;
   std::vector<cmCommand*> UsedCommands;
   cmLocalGenerator* LocalGenerator;
-  bool IsFunctionBlocked(const cmListFileFunction& lff);
+  bool IsFunctionBlocked(const cmListFileFunction& lff, 
+                         cmExecutionStatus &status);
   
 private:
   void Initialize();

Index: cmVariableWatchCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmVariableWatchCommand.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- cmVariableWatchCommand.cxx	12 Apr 2007 19:50:39 -0000	1.2
+++ cmVariableWatchCommand.cxx	23 Jan 2008 15:27:59 -0000	1.3
@@ -35,7 +35,8 @@
 }
 
 //----------------------------------------------------------------------------
-bool cmVariableWatchCommand::InitialPass(std::vector<std::string> const& args)
+bool cmVariableWatchCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if ( args.size() < 1 )
     {
@@ -102,7 +103,8 @@
     newLFF.Name = command; 
     newLFF.FilePath = "Some weird path";
     newLFF.Line = 9999;
-    if(!makefile->ExecuteCommand(newLFF))
+    cmExecutionStatus status;
+    if(!makefile->ExecuteCommand(newLFF,status))
       {
       arg.FilePath =  "Unknown";
       arg.Line = 0;

Index: cmAddSubDirectoryCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddSubDirectoryCommand.cxx,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- cmAddSubDirectoryCommand.cxx	12 Mar 2007 14:26:59 -0000	1.10
+++ cmAddSubDirectoryCommand.cxx	23 Jan 2008 15:27:59 -0000	1.11
@@ -18,7 +18,7 @@
 
 // cmAddSubDirectoryCommand
 bool cmAddSubDirectoryCommand::InitialPass
-(std::vector<std::string> const& args)
+(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmSiteNameCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSiteNameCommand.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- cmSiteNameCommand.h	10 Oct 2007 15:47:43 -0000	1.10
+++ cmSiteNameCommand.h	23 Jan 2008 15:27:59 -0000	1.11
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmExportLibraryDependencies.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExportLibraryDependencies.cxx,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- cmExportLibraryDependencies.cxx	15 Jun 2007 14:10:24 -0000	1.18
+++ cmExportLibraryDependencies.cxx	23 Jan 2008 15:27:59 -0000	1.19
@@ -23,7 +23,7 @@
 #include <cmsys/auto_ptr.hxx>
 
 bool cmExportLibraryDependenciesCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmExportLibraryDependencies.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExportLibraryDependencies.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- cmExportLibraryDependencies.h	20 Dec 2007 22:49:38 -0000	1.8
+++ cmExportLibraryDependencies.h	23 Jan 2008 15:27:59 -0000	1.9
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This is called at the end after all the information

Index: cmInstallProgramsCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmInstallProgramsCommand.cxx,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- cmInstallProgramsCommand.cxx	25 May 2007 15:01:20 -0000	1.19
+++ cmInstallProgramsCommand.cxx	23 Jan 2008 15:27:59 -0000	1.20
@@ -18,7 +18,7 @@
 
 // cmExecutableCommand
 bool cmInstallProgramsCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2)
     {

Index: cmExportCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExportCommand.cxx,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- cmExportCommand.cxx	14 Oct 2007 12:15:22 -0000	1.6
+++ cmExportCommand.cxx	23 Jan 2008 15:27:59 -0000	1.7
@@ -39,7 +39,7 @@
 
 // cmExportCommand
 bool cmExportCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmIfCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIfCommand.h,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- cmIfCommand.h	10 Oct 2007 15:47:43 -0000	1.44
+++ cmIfCommand.h	23 Jan 2008 15:27:59 -0000	1.45
@@ -28,18 +28,22 @@
 class cmIfFunctionBlocker : public cmFunctionBlocker
 {
 public:
-  cmIfFunctionBlocker() {this->HasRun = false; this->ScopeDepth = 0;}
+  cmIfFunctionBlocker() {
+    this->HasRun = false; this->ScopeDepth = 0; this->Executing = false;}
   virtual ~cmIfFunctionBlocker() {}
   virtual bool IsFunctionBlocked(const cmListFileFunction& lff,
-                                 cmMakefile &mf);
+                                 cmMakefile &mf,
+                                 cmExecutionStatus &);
   virtual bool ShouldRemove(const cmListFileFunction& lff,
                             cmMakefile &mf);
   virtual void ScopeEnded(cmMakefile &mf);
   
   std::vector<cmListFileArgument> Args;
+  std::vector<cmListFileFunction> Functions;
   bool IsBlocking;
   bool HasRun;
   unsigned int ScopeDepth;
+  bool Executing;
 };
 
 /** \class cmIfCommand
@@ -62,13 +66,15 @@
    * This overrides the default InvokeInitialPass implementation.
    * It records the arguments before expansion.
    */
-  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args);
+  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args,
+                                 cmExecutionStatus &);
     
   /**
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const&) { return false; }
+  virtual bool InitialPass(std::vector<std::string> const&,
+                           cmExecutionStatus &) { return false;};
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmWriteFileCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmWriteFileCommand.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- cmWriteFileCommand.h	10 Oct 2007 15:47:43 -0000	1.11
+++ cmWriteFileCommand.h	23 Jan 2008 15:27:59 -0000	1.12
@@ -38,7 +38,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmFindPackageCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindPackageCommand.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- cmFindPackageCommand.h	21 Jan 2008 13:48:33 -0000	1.17
+++ cmFindPackageCommand.h	23 Jan 2008 15:27:59 -0000	1.18
@@ -43,7 +43,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmMakeDirectoryCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMakeDirectoryCommand.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- cmMakeDirectoryCommand.h	10 Oct 2007 15:47:43 -0000	1.12
+++ cmMakeDirectoryCommand.h	23 Jan 2008 15:27:59 -0000	1.13
@@ -43,7 +43,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmMakeDirectoryCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMakeDirectoryCommand.cxx,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmMakeDirectoryCommand.cxx	22 Mar 2006 19:40:36 -0000	1.9
+++ cmMakeDirectoryCommand.cxx	23 Jan 2008 15:27:59 -0000	1.10
@@ -17,7 +17,8 @@
 #include "cmMakeDirectoryCommand.h"
 
 // cmMakeDirectoryCommand
-bool cmMakeDirectoryCommand::InitialPass(std::vector<std::string> const& args)
+bool cmMakeDirectoryCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() != 1 )
     {

Index: cmVariableWatchCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmVariableWatchCommand.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cmVariableWatchCommand.h	10 Jan 2008 03:09:19 -0000	1.3
+++ cmVariableWatchCommand.h	23 Jan 2008 15:27:59 -0000	1.4
@@ -48,7 +48,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmFunctionCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFunctionCommand.cxx,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cmFunctionCommand.cxx	20 Dec 2007 15:05:08 -0000	1.3
+++ cmFunctionCommand.cxx	23 Jan 2008 15:27:59 -0000	1.4
@@ -48,9 +48,11 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args);
+  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args,
+                                 cmExecutionStatus &);
 
-  virtual bool InitialPass(std::vector<std::string> const&) { return false; };
+  virtual bool InitialPass(std::vector<std::string> const&,
+                           cmExecutionStatus &) { return false; };
 
   /**
    * The name of the command as specified in CMakeList.txt.
@@ -83,7 +85,8 @@
 
 
 bool cmFunctionHelperCommand::InvokeInitialPass
-(const std::vector<cmListFileArgument>& args)
+(const std::vector<cmListFileArgument>& args,
+ cmExecutionStatus &)
 {
   // Expand the argument list to the function.
   std::vector<std::string> expandedArgs;
@@ -153,7 +156,8 @@
   // for each function
   for(unsigned int c = 0; c < this->Functions.size(); ++c)
     {
-    if (!this->Makefile->ExecuteCommand(this->Functions[c]))
+    cmExecutionStatus status;
+    if (!this->Makefile->ExecuteCommand(this->Functions[c],status))
       {
       cmOStringStream error;
       error << "Error in cmake code at\n"
@@ -167,6 +171,11 @@
       this->Makefile->PopScope();
       return false;
       }
+    if (status.GetReturnInvoked())
+      {
+      this->Makefile->PopScope();
+      return true;
+      }
     }
 
   // pop scope on the makefile
@@ -175,7 +184,8 @@
 }
 
 bool cmFunctionFunctionBlocker::
-IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf)
+IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf,
+                  cmExecutionStatus &)
 {
   // record commands until we hit the ENDFUNCTION
   // at the ENDFUNCTION call we shift gears and start looking for invocations
@@ -266,7 +276,8 @@
     this->Args[0].c_str());
 }
 
-bool cmFunctionCommand::InitialPass(std::vector<std::string> const& args)
+bool cmFunctionCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1)
     {

Index: cmOutputRequiredFilesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmOutputRequiredFilesCommand.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- cmOutputRequiredFilesCommand.h	10 Oct 2007 15:47:43 -0000	1.11
+++ cmOutputRequiredFilesCommand.h	23 Jan 2008 15:27:59 -0000	1.12
@@ -39,9 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
-
-  virtual void FinalPass();
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmLoadCommandCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLoadCommandCommand.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- cmLoadCommandCommand.h	10 Oct 2007 15:47:43 -0000	1.8
+++ cmLoadCommandCommand.h	23 Jan 2008 15:27:59 -0000	1.9
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmBuildCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmBuildCommand.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- cmBuildCommand.h	20 Dec 2007 22:49:38 -0000	1.12
+++ cmBuildCommand.h	23 Jan 2008 15:27:59 -0000	1.13
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmSetPropertyCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetPropertyCommand.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- cmSetPropertyCommand.h	17 Jan 2008 23:13:55 -0000	1.2
+++ cmSetPropertyCommand.h	23 Jan 2008 15:27:59 -0000	1.3
@@ -33,7 +33,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmSetTargetPropertiesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetTargetPropertiesCommand.h,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- cmSetTargetPropertiesCommand.h	10 Oct 2007 15:47:43 -0000	1.30
+++ cmSetTargetPropertiesCommand.h	23 Jan 2008 15:27:59 -0000	1.31
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmConfigureFileCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmConfigureFileCommand.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- cmConfigureFileCommand.h	10 Jan 2008 03:09:19 -0000	1.21
+++ cmConfigureFileCommand.h	23 Jan 2008 15:27:59 -0000	1.22
@@ -33,7 +33,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmInstallCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmInstallCommand.cxx,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- cmInstallCommand.cxx	2 Jan 2008 20:17:56 -0000	1.38
+++ cmInstallCommand.cxx	23 Jan 2008 15:27:59 -0000	1.39
@@ -46,7 +46,8 @@
 
 
 // cmInstallCommand
-bool cmInstallCommand::InitialPass(std::vector<std::string> const& args)
+bool cmInstallCommand::InitialPass(std::vector<std::string> const& args, 
+                                   cmExecutionStatus &)
 {
   // Allow calling with no arguments so that arguments may be built up
   // using a variable that may be left empty.

Index: cmIncludeDirectoryCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIncludeDirectoryCommand.cxx,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- cmIncludeDirectoryCommand.cxx	8 Mar 2007 13:46:03 -0000	1.26
+++ cmIncludeDirectoryCommand.cxx	23 Jan 2008 15:27:59 -0000	1.27
@@ -18,7 +18,7 @@
 
 // cmIncludeDirectoryCommand
 bool cmIncludeDirectoryCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmMessageCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMessageCommand.cxx,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- cmMessageCommand.cxx	17 Jul 2007 13:25:08 -0000	1.21
+++ cmMessageCommand.cxx	23 Jan 2008 15:27:59 -0000	1.22
@@ -17,7 +17,8 @@
 #include "cmMessageCommand.h"
 
 // cmLibraryCommand
-bool cmMessageCommand::InitialPass(std::vector<std::string> const& args)
+bool cmMessageCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmLoadCacheCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLoadCacheCommand.cxx,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- cmLoadCacheCommand.cxx	12 May 2006 15:56:08 -0000	1.18
+++ cmLoadCacheCommand.cxx	23 Jan 2008 15:27:59 -0000	1.19
@@ -19,7 +19,8 @@
 #include <cmsys/RegularExpression.hxx>
 
 // cmLoadCacheCommand
-bool cmLoadCacheCommand::InitialPass(std::vector<std::string> const& args)
+bool cmLoadCacheCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if (args.size()< 1)
     {

Index: cmFunctionBlocker.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFunctionBlocker.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- cmFunctionBlocker.h	13 Dec 2002 14:18:01 -0000	1.11
+++ cmFunctionBlocker.h	23 Jan 2008 15:27:59 -0000	1.12
@@ -18,6 +18,7 @@
 #define cmFunctionBlocker_h
 
 #include "cmStandardIncludes.h"
+#include "cmExecutionStatus.h"
 class cmMakefile;
 
 /** \class cmFunctionBlocker
@@ -32,7 +33,8 @@
    * should a function be blocked
    */
   virtual bool IsFunctionBlocked(const cmListFileFunction& lff,
-                                 cmMakefile&mf) = 0;
+                                 cmMakefile&mf,
+                                 cmExecutionStatus &status) = 0;
 
   /**
    * should this function blocker be removed, useful when one function adds a

Index: cmEnableLanguageCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEnableLanguageCommand.cxx,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- cmEnableLanguageCommand.cxx	28 Jun 2007 13:09:26 -0000	1.4
+++ cmEnableLanguageCommand.cxx	23 Jan 2008 15:27:59 -0000	1.5
@@ -18,7 +18,7 @@
 
 // cmEnableLanguageCommand
 bool cmEnableLanguageCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   bool optional = false;
   std::vector<std::string> languages;

Index: cmSiteNameCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSiteNameCommand.cxx,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- cmSiteNameCommand.cxx	12 May 2006 17:53:21 -0000	1.23
+++ cmSiteNameCommand.cxx	23 Jan 2008 15:27:59 -0000	1.24
@@ -19,7 +19,8 @@
 #include <cmsys/RegularExpression.hxx>
 
 // cmSiteNameCommand
-bool cmSiteNameCommand::InitialPass(std::vector<std::string> const& args)
+bool cmSiteNameCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() != 1 )
     {

Index: cmAddExecutableCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddExecutableCommand.cxx,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- cmAddExecutableCommand.cxx	22 May 2007 14:42:37 -0000	1.31
+++ cmAddExecutableCommand.cxx	23 Jan 2008 15:27:59 -0000	1.32
@@ -17,7 +17,8 @@
 #include "cmAddExecutableCommand.h"
 
 // cmExecutableCommand
-bool cmAddExecutableCommand::InitialPass(std::vector<std::string> const& args)
+bool cmAddExecutableCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmInstallProgramsCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmInstallProgramsCommand.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- cmInstallProgramsCommand.h	10 Oct 2007 15:47:43 -0000	1.19
+++ cmInstallProgramsCommand.h	23 Jan 2008 15:27:59 -0000	1.20
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmInstallTargetsCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmInstallTargetsCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmInstallTargetsCommand.h	10 Oct 2007 15:47:43 -0000	1.15
+++ cmInstallTargetsCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmLinkLibrariesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLinkLibrariesCommand.cxx,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- cmLinkLibrariesCommand.cxx	12 May 2006 15:56:08 -0000	1.23
+++ cmLinkLibrariesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.24
@@ -17,7 +17,8 @@
 #include "cmLinkLibrariesCommand.h"
 
 // cmLinkLibrariesCommand
-bool cmLinkLibrariesCommand::InitialPass(std::vector<std::string> const& args)
+bool cmLinkLibrariesCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmFileCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFileCommand.cxx,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -d -r1.95 -r1.96
--- cmFileCommand.cxx	7 Jan 2008 19:52:45 -0000	1.95
+++ cmFileCommand.cxx	23 Jan 2008 15:27:59 -0000	1.96
@@ -54,7 +54,8 @@
 #endif
 
 // cmLibraryCommand
-bool cmFileCommand::InitialPass(std::vector<std::string> const& args)
+bool cmFileCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmGetTestPropertyCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetTestPropertyCommand.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- cmGetTestPropertyCommand.h	10 Oct 2007 15:47:43 -0000	1.4
+++ cmGetTestPropertyCommand.h	23 Jan 2008 15:27:59 -0000	1.5
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmUseMangledMesaCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmUseMangledMesaCommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmUseMangledMesaCommand.h	10 Oct 2007 15:47:43 -0000	1.13
+++ cmUseMangledMesaCommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -44,7 +44,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmVariableRequiresCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmVariableRequiresCommand.cxx,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- cmVariableRequiresCommand.cxx	15 Mar 2006 16:02:07 -0000	1.14
+++ cmVariableRequiresCommand.cxx	23 Jan 2008 15:27:59 -0000	1.15
@@ -18,8 +18,8 @@
 #include "cmCacheManager.h"
 
 // cmLibraryCommand
-bool cmVariableRequiresCommand::InitialPass(std::vector<std::string>const&
-                                            args)
+bool cmVariableRequiresCommand
+::InitialPass(std::vector<std::string>const& args, cmExecutionStatus &)
 {
   if(args.size() < 3 )
     {

Index: cmAddCustomTargetCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddCustomTargetCommand.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- cmAddCustomTargetCommand.h	10 Oct 2007 15:47:43 -0000	1.21
+++ cmAddCustomTargetCommand.h	23 Jan 2008 15:27:59 -0000	1.22
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmQTWrapCPPCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmQTWrapCPPCommand.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- cmQTWrapCPPCommand.h	24 Nov 2007 08:51:14 -0000	1.14
+++ cmQTWrapCPPCommand.h	23 Jan 2008 15:27:59 -0000	1.15
@@ -44,7 +44,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmSetSourceFilesPropertiesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetSourceFilesPropertiesCommand.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- cmSetSourceFilesPropertiesCommand.h	10 Oct 2007 15:47:43 -0000	1.14
+++ cmSetSourceFilesPropertiesCommand.h	23 Jan 2008 15:27:59 -0000	1.15
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmQTWrapUICommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmQTWrapUICommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmQTWrapUICommand.h	24 Nov 2007 08:51:14 -0000	1.13
+++ cmQTWrapUICommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -42,7 +42,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmListCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmListCommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmListCommand.h	2 Jan 2008 15:56:08 -0000	1.13
+++ cmListCommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -38,7 +38,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmSeparateArgumentsCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSeparateArgumentsCommand.cxx,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- cmSeparateArgumentsCommand.cxx	7 Mar 2007 16:03:57 -0000	1.5
+++ cmSeparateArgumentsCommand.cxx	23 Jan 2008 15:27:59 -0000	1.6
@@ -18,7 +18,7 @@
 
 // cmSeparateArgumentsCommand
 bool cmSeparateArgumentsCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() != 1 )
     {

Index: cmSetDirectoryPropertiesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetDirectoryPropertiesCommand.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- cmSetDirectoryPropertiesCommand.h	10 Oct 2007 15:47:43 -0000	1.6
+++ cmSetDirectoryPropertiesCommand.h	23 Jan 2008 15:27:59 -0000	1.7
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmMacroCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMacroCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmMacroCommand.h	18 Jan 2008 17:26:45 -0000	1.15
+++ cmMacroCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -30,7 +30,9 @@
 public:
   cmMacroFunctionBlocker() {this->Depth=0;}
   virtual ~cmMacroFunctionBlocker() {}
-  virtual bool IsFunctionBlocked(const cmListFileFunction&, cmMakefile &mf);
+  virtual bool IsFunctionBlocked(const cmListFileFunction&, 
+                                 cmMakefile &mf,
+                                 cmExecutionStatus &);
   virtual bool ShouldRemove(const cmListFileFunction&, cmMakefile &mf);
   virtual void ScopeEnded(cmMakefile &mf);
   
@@ -59,7 +61,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmSetTargetPropertiesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetTargetPropertiesCommand.cxx,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- cmSetTargetPropertiesCommand.cxx	22 May 2007 14:24:59 -0000	1.7
+++ cmSetTargetPropertiesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.8
@@ -19,8 +19,8 @@
 #include "cmGlobalGenerator.h"
 
 // cmSetTargetPropertiesCommand
-bool cmSetTargetPropertiesCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmSetTargetPropertiesCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmLoadCommandCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLoadCommandCommand.cxx,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- cmLoadCommandCommand.cxx	20 Apr 2007 13:49:27 -0000	1.28
+++ cmLoadCommandCommand.cxx	23 Jan 2008 15:27:59 -0000	1.29
@@ -58,7 +58,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args, 
+                           cmExecutionStatus &);
 
   /**
    * This is called at the end after all the information
@@ -153,7 +154,8 @@
 
 const char* cmLoadedCommand::LastName = 0;
 
-bool cmLoadedCommand::InitialPass(std::vector<std::string> const& args)
+bool cmLoadedCommand::InitialPass(std::vector<std::string> const& args,
+                                  cmExecutionStatus &)
 {
   if (!info.InitialPass)
     {
@@ -222,7 +224,8 @@
 }
 
 // cmLoadCommandCommand
-bool cmLoadCommandCommand::InitialPass(std::vector<std::string> const& args)
+bool cmLoadCommandCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmMacroCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMacroCommand.cxx,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- cmMacroCommand.cxx	7 Dec 2006 14:44:45 -0000	1.33
+++ cmMacroCommand.cxx	23 Jan 2008 15:27:59 -0000	1.34
@@ -48,9 +48,11 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args);
+  virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args, 
+                                 cmExecutionStatus &);
 
-  virtual bool InitialPass(std::vector<std::string> const&) { return false; };
+  virtual bool InitialPass(std::vector<std::string> const&,
+                           cmExecutionStatus &) { return false; };
 
   /**
    * The name of the command as specified in CMakeList.txt.
@@ -83,7 +85,8 @@
 
 
 bool cmMacroHelperCommand::InvokeInitialPass
-(const std::vector<cmListFileArgument>& args)
+(const std::vector<cmListFileArgument>& args,
+ cmExecutionStatus &inStatus)
 {
   // Expand the argument list to the macro.
   std::vector<std::string> expandedArgs;
@@ -233,7 +236,8 @@
         }
       newLFF.Arguments.push_back(arg);
       }
-    if(!this->Makefile->ExecuteCommand(newLFF))
+    cmExecutionStatus status;
+    if(!this->Makefile->ExecuteCommand(newLFF,status))
       {
       if(args.size())
         {
@@ -253,12 +257,23 @@
       cmSystemTools::Error(error.str().c_str());
       return false;
       }
+    if (status.GetReturnInvoked())
+      {
+      inStatus.SetReturnInvoked(true);
+      return true;
+      }
+    if (status.GetBreakInvoked())
+      {
+      inStatus.SetBreakInvoked(true);
+      return true;
+      }
     }
   return true;
 }
 
 bool cmMacroFunctionBlocker::
-IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf)
+IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf,
+                  cmExecutionStatus &)
 {
   // record commands until we hit the ENDMACRO
   // at the ENDMACRO call we shift gears and start looking for invocations
@@ -337,7 +352,8 @@
     this->Args[0].c_str());
 }
 
-bool cmMacroCommand::InitialPass(std::vector<std::string> const& args)
+bool cmMacroCommand::InitialPass(std::vector<std::string> const& args,
+                                 cmExecutionStatus &)
 {
   if(args.size() < 1)
     {

Index: cmSeparateArgumentsCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSeparateArgumentsCommand.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- cmSeparateArgumentsCommand.h	10 Oct 2007 15:47:43 -0000	1.8
+++ cmSeparateArgumentsCommand.h	23 Jan 2008 15:27:59 -0000	1.9
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmSetCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetCommand.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- cmSetCommand.h	18 Jan 2008 20:52:53 -0000	1.19
+++ cmSetCommand.h	23 Jan 2008 15:27:59 -0000	1.20
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmUseMangledMesaCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmUseMangledMesaCommand.cxx,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- cmUseMangledMesaCommand.cxx	12 May 2006 18:12:13 -0000	1.17
+++ cmUseMangledMesaCommand.cxx	23 Jan 2008 15:27:59 -0000	1.18
@@ -21,7 +21,7 @@
 
 // cmUseMangledMesaCommand
 bool cmUseMangledMesaCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 { 
   // expected two arguments:
   // arguement one: the full path to gl_mangle.h

Index: cmCreateTestSourceList.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCreateTestSourceList.cxx,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- cmCreateTestSourceList.cxx	18 Jun 2007 15:59:23 -0000	1.43
+++ cmCreateTestSourceList.cxx	23 Jan 2008 15:27:59 -0000	1.44
@@ -18,7 +18,8 @@
 #include "cmSourceFile.h"
 
 // cmCreateTestSourceList
-bool cmCreateTestSourceList::InitialPass(std::vector<std::string> const& args)
+bool cmCreateTestSourceList
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if (args.size() < 3)
     {

Index: cmFindPathCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindPathCommand.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- cmFindPathCommand.h	10 Oct 2007 15:47:43 -0000	1.17
+++ cmFindPathCommand.h	23 Jan 2008 15:27:59 -0000	1.18
@@ -43,7 +43,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmEnableTestingCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEnableTestingCommand.cxx,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- cmEnableTestingCommand.cxx	15 Mar 2006 16:02:01 -0000	1.18
+++ cmEnableTestingCommand.cxx	23 Jan 2008 15:27:59 -0000	1.19
@@ -19,7 +19,8 @@
 
 // we do this in the final pass so that we now the subdirs have all 
 // been defined
-bool cmEnableTestingCommand::InitialPass(std::vector<std::string> const&)
+bool cmEnableTestingCommand::InitialPass(std::vector<std::string> const&,
+                                         cmExecutionStatus &)
 {
   this->Makefile->AddDefinition("CMAKE_TESTING_ENABLED","1");
   return true;

Index: cmFLTKWrapUICommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFLTKWrapUICommand.cxx,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- cmFLTKWrapUICommand.cxx	18 Jun 2007 15:59:23 -0000	1.37
+++ cmFLTKWrapUICommand.cxx	23 Jan 2008 15:27:59 -0000	1.38
@@ -19,7 +19,8 @@
 #include "cmSourceFile.h"
 
 // cmFLTKWrapUICommand
-bool cmFLTKWrapUICommand::InitialPass(std::vector<std::string> const& args)
+bool cmFLTKWrapUICommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmExportCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExportCommand.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- cmExportCommand.h	20 Dec 2007 22:49:38 -0000	1.5
+++ cmExportCommand.h	23 Jan 2008 15:27:59 -0000	1.6
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmTryRunCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmTryRunCommand.cxx,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- cmTryRunCommand.cxx	17 Sep 2007 14:53:20 -0000	1.40
+++ cmTryRunCommand.cxx	23 Jan 2008 15:27:59 -0000	1.41
@@ -19,14 +19,15 @@
 #include "cmTryCompileCommand.h"
 
 // cmTryRunCommand
-bool cmTryRunCommand::InitialPass(std::vector<std::string> const& argv)
+bool cmTryRunCommand
+::InitialPass(std::vector<std::string> const& argv, cmExecutionStatus &)
 {
   if(argv.size() < 4)
     {
     return false;
     }
 
-  // build an arg list for TryCompile and extract the runArgs
+  // build an arg list for TryCompile and extract the runArgs,
   std::vector<std::string> tryCompile;
 
   this->CompileResultVariable = "";

Index: cmFindProgramCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindProgramCommand.cxx,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- cmFindProgramCommand.cxx	17 Jan 2008 14:02:31 -0000	1.41
+++ cmFindProgramCommand.cxx	23 Jan 2008 15:27:59 -0000	1.42
@@ -51,7 +51,8 @@
 }
 
 // cmFindProgramCommand
-bool cmFindProgramCommand::InitialPass(std::vector<std::string> const& argsIn)
+bool cmFindProgramCommand
+::InitialPass(std::vector<std::string> const& argsIn, cmExecutionStatus &)
 {
   this->VariableDocumentation = "Path to a program.";
   this->CMakePathName = "PROGRAM";

Index: cmGetCMakePropertyCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetCMakePropertyCommand.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- cmGetCMakePropertyCommand.h	10 Oct 2007 15:47:43 -0000	1.7
+++ cmGetCMakePropertyCommand.h	23 Jan 2008 15:27:59 -0000	1.8
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmElseCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmElseCommand.cxx,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- cmElseCommand.cxx	10 May 2006 19:06:06 -0000	1.25
+++ cmElseCommand.cxx	23 Jan 2008 15:27:59 -0000	1.26
@@ -16,7 +16,8 @@
 =========================================================================*/
 #include "cmElseCommand.h"
 
-bool cmElseCommand::InitialPass(std::vector<std::string> const&)
+bool cmElseCommand::InitialPass(std::vector<std::string> const&,
+                                cmExecutionStatus &)
 {
   this->SetError("An ELSE command was found outside of a proper "
                  "IF ENDIF structure. Or its arguments did not match "

Index: cmTargetLinkLibrariesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmTargetLinkLibrariesCommand.cxx,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- cmTargetLinkLibrariesCommand.cxx	29 Nov 2006 16:00:17 -0000	1.24
+++ cmTargetLinkLibrariesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.25
@@ -17,8 +17,8 @@
 #include "cmTargetLinkLibrariesCommand.h"
 
 // cmTargetLinkLibrariesCommand
-bool cmTargetLinkLibrariesCommand::InitialPass(std::vector<std::string> 
-                                               const& args)
+bool cmTargetLinkLibrariesCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   // must have one argument
   if(args.size() < 1)

Index: cmMathCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMathCommand.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- cmMathCommand.h	10 Oct 2007 15:47:43 -0000	1.4
+++ cmMathCommand.h	23 Jan 2008 15:27:59 -0000	1.5
@@ -38,7 +38,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmGetSourceFilePropertyCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGetSourceFilePropertyCommand.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- cmGetSourceFilePropertyCommand.h	10 Oct 2007 15:47:43 -0000	1.12
+++ cmGetSourceFilePropertyCommand.h	23 Jan 2008 15:27:59 -0000	1.13
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmAddSubDirectoryCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddSubDirectoryCommand.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- cmAddSubDirectoryCommand.h	10 Oct 2007 15:47:43 -0000	1.6
+++ cmAddSubDirectoryCommand.h	23 Jan 2008 15:27:59 -0000	1.7
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmSourceGroupCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSourceGroupCommand.cxx,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- cmSourceGroupCommand.cxx	26 Aug 2007 07:17:11 -0000	1.19
+++ cmSourceGroupCommand.cxx	23 Jan 2008 15:27:59 -0000	1.20
@@ -48,7 +48,8 @@
 }
 
 // cmSourceGroupCommand
-bool cmSourceGroupCommand::InitialPass(std::vector<std::string> const& args)
+bool cmSourceGroupCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1)
     {

Index: cmTryRunCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmTryRunCommand.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- cmTryRunCommand.h	10 Oct 2007 15:47:43 -0000	1.14
+++ cmTryRunCommand.h	23 Jan 2008 15:27:59 -0000	1.15
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmExecProgramCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExecProgramCommand.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- cmExecProgramCommand.h	10 Oct 2007 15:47:43 -0000	1.22
+++ cmExecProgramCommand.h	23 Jan 2008 15:27:59 -0000	1.23
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmFindProgramCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindProgramCommand.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- cmFindProgramCommand.h	10 Oct 2007 15:47:43 -0000	1.20
+++ cmFindProgramCommand.h	23 Jan 2008 15:27:59 -0000	1.21
@@ -43,7 +43,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmIncludeExternalMSProjectCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIncludeExternalMSProjectCommand.cxx,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- cmIncludeExternalMSProjectCommand.cxx	20 Jul 2007 12:36:16 -0000	1.21
+++ cmIncludeExternalMSProjectCommand.cxx	23 Jan 2008 15:27:59 -0000	1.22
@@ -18,7 +18,7 @@
 
 // cmIncludeExternalMSProjectCommand
 bool cmIncludeExternalMSProjectCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2) 
   {

Index: cmConfigureFileCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmConfigureFileCommand.cxx,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- cmConfigureFileCommand.cxx	4 Apr 2007 16:05:44 -0000	1.29
+++ cmConfigureFileCommand.cxx	23 Jan 2008 15:27:59 -0000	1.30
@@ -19,7 +19,8 @@
 #include <cmsys/RegularExpression.hxx>
 
 // cmConfigureFileCommand
-bool cmConfigureFileCommand::InitialPass(std::vector<std::string> const& args)
+bool cmConfigureFileCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmIncludeRegularExpressionCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIncludeRegularExpressionCommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmIncludeRegularExpressionCommand.h	10 Oct 2007 15:47:43 -0000	1.13
+++ cmIncludeRegularExpressionCommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmSetCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetCommand.cxx,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- cmSetCommand.cxx	18 Jan 2008 20:52:53 -0000	1.31
+++ cmSetCommand.cxx	23 Jan 2008 15:27:59 -0000	1.32
@@ -17,7 +17,8 @@
 #include "cmSetCommand.h"
 
 // cmSetCommand
-bool cmSetCommand::InitialPass(std::vector<std::string> const& args)
+bool cmSetCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmEnableLanguageCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEnableLanguageCommand.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- cmEnableLanguageCommand.h	10 Jan 2008 03:09:19 -0000	1.7
+++ cmEnableLanguageCommand.h	23 Jan 2008 15:27:59 -0000	1.8
@@ -42,7 +42,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmBuildNameCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmBuildNameCommand.cxx,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- cmBuildNameCommand.cxx	15 Mar 2006 16:01:58 -0000	1.18
+++ cmBuildNameCommand.cxx	23 Jan 2008 15:27:59 -0000	1.19
@@ -19,7 +19,8 @@
 #include <cmsys/RegularExpression.hxx>
 
 // cmBuildNameCommand
-bool cmBuildNameCommand::InitialPass(std::vector<std::string> const& args)
+bool cmBuildNameCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmInstallTargetsCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmInstallTargetsCommand.cxx,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- cmInstallTargetsCommand.cxx	31 Aug 2006 14:47:00 -0000	1.14
+++ cmInstallTargetsCommand.cxx	23 Jan 2008 15:27:59 -0000	1.15
@@ -18,7 +18,7 @@
 
 // cmExecutableCommand
 bool cmInstallTargetsCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmTryCompileCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmTryCompileCommand.cxx,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- cmTryCompileCommand.cxx	24 May 2007 15:27:51 -0000	1.62
+++ cmTryCompileCommand.cxx	23 Jan 2008 15:27:59 -0000	1.63
@@ -17,7 +17,8 @@
 #include "cmTryCompileCommand.h"
 
 // cmTryCompileCommand
-bool cmTryCompileCommand::InitialPass(std::vector<std::string> const& argv)
+bool cmTryCompileCommand
+::InitialPass(std::vector<std::string> const& argv, cmExecutionStatus &)
 {
   if(argv.size() < 3)
     {

Index: cmElseIfCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmElseIfCommand.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- cmElseIfCommand.cxx	22 Sep 2006 15:23:51 -0000	1.1
+++ cmElseIfCommand.cxx	23 Jan 2008 15:27:59 -0000	1.2
@@ -16,7 +16,8 @@
 =========================================================================*/
 #include "cmElseIfCommand.h"
 
-bool cmElseIfCommand::InitialPass(std::vector<std::string> const&)
+bool cmElseIfCommand::InitialPass(std::vector<std::string> const&,
+                                  cmExecutionStatus &)
 {
   this->SetError("An ELSEIF command was found outside of a proper "
                  "IF ENDIF structure.");

Index: cmEndIfCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmEndIfCommand.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- cmEndIfCommand.h	10 Oct 2007 15:47:43 -0000	1.12
+++ cmEndIfCommand.h	23 Jan 2008 15:27:59 -0000	1.13
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmDefinePropertyCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmDefinePropertyCommand.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- cmDefinePropertyCommand.cxx	25 Jun 2007 14:34:21 -0000	1.2
+++ cmDefinePropertyCommand.cxx	23 Jan 2008 15:27:59 -0000	1.3
@@ -18,8 +18,8 @@
 #include "cmake.h"
 
 // cmDefinePropertiesCommand
-bool cmDefinePropertyCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmDefinePropertyCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 5 )
     {

Index: cmDefinePropertyCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmDefinePropertyCommand.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- cmDefinePropertyCommand.h	10 Oct 2007 15:47:43 -0000	1.4
+++ cmDefinePropertyCommand.h	23 Jan 2008 15:27:59 -0000	1.5
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmLoadCacheCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLoadCacheCommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmLoadCacheCommand.h	10 Oct 2007 15:47:43 -0000	1.13
+++ cmLoadCacheCommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmInstallCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmInstallCommand.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- cmInstallCommand.h	2 Jan 2008 20:17:56 -0000	1.23
+++ cmInstallCommand.h	23 Jan 2008 15:27:59 -0000	1.24
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmFindPackageCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindPackageCommand.cxx,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- cmFindPackageCommand.cxx	22 Jan 2008 03:48:07 -0000	1.33
+++ cmFindPackageCommand.cxx	23 Jan 2008 15:27:59 -0000	1.34
@@ -231,7 +231,8 @@
 }
 
 //----------------------------------------------------------------------------
-bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args)
+bool cmFindPackageCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1)
     {

Index: cmWriteFileCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmWriteFileCommand.cxx,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmWriteFileCommand.cxx	12 May 2006 18:12:13 -0000	1.15
+++ cmWriteFileCommand.cxx	23 Jan 2008 15:27:59 -0000	1.16
@@ -20,7 +20,8 @@
 #include <sys/stat.h>
 
 // cmLibraryCommand
-bool cmWriteFileCommand::InitialPass(std::vector<std::string> const& args)
+bool cmWriteFileCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmMarkAsAdvancedCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMarkAsAdvancedCommand.cxx,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- cmMarkAsAdvancedCommand.cxx	11 Apr 2007 14:00:56 -0000	1.14
+++ cmMarkAsAdvancedCommand.cxx	23 Jan 2008 15:27:59 -0000	1.15
@@ -18,7 +18,7 @@
 
 // cmMarkAsAdvancedCommand
 bool cmMarkAsAdvancedCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {

Index: cmTryCompileCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmTryCompileCommand.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- cmTryCompileCommand.h	10 Jan 2008 03:09:19 -0000	1.26
+++ cmTryCompileCommand.h	23 Jan 2008 15:27:59 -0000	1.27
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmTargetLinkLibrariesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmTargetLinkLibrariesCommand.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmTargetLinkLibrariesCommand.h	10 Oct 2007 15:47:43 -0000	1.13
+++ cmTargetLinkLibrariesCommand.h	23 Jan 2008 15:27:59 -0000	1.14
@@ -41,7 +41,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmSetPropertyCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetPropertyCommand.cxx,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cmSetPropertyCommand.cxx	17 Jan 2008 23:13:55 -0000	1.3
+++ cmSetPropertyCommand.cxx	23 Jan 2008 15:27:59 -0000	1.4
@@ -26,7 +26,8 @@
 }
 
 //----------------------------------------------------------------------------
-bool cmSetPropertyCommand::InitialPass(std::vector<std::string> const& args)
+bool cmSetPropertyCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmFindLibraryCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindLibraryCommand.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- cmFindLibraryCommand.h	23 Jan 2008 14:53:33 -0000	1.24
+++ cmFindLibraryCommand.h	23 Jan 2008 15:27:59 -0000	1.25
@@ -43,7 +43,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * This determines if the command is invoked when in script mode.

Index: cmMarkAsAdvancedCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmMarkAsAdvancedCommand.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- cmMarkAsAdvancedCommand.h	10 Oct 2007 15:47:43 -0000	1.11
+++ cmMarkAsAdvancedCommand.h	23 Jan 2008 15:27:59 -0000	1.12
@@ -39,7 +39,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmSetTestsPropertiesCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmSetTestsPropertiesCommand.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- cmSetTestsPropertiesCommand.h	10 Oct 2007 15:47:43 -0000	1.7
+++ cmSetTestsPropertiesCommand.h	23 Jan 2008 15:27:59 -0000	1.8
@@ -31,7 +31,8 @@
    * This is called when the command is first encountered in
    * the input file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmAddDependenciesCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmAddDependenciesCommand.cxx,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmAddDependenciesCommand.cxx	22 May 2007 14:24:59 -0000	1.15
+++ cmAddDependenciesCommand.cxx	23 Jan 2008 15:27:59 -0000	1.16
@@ -19,8 +19,8 @@
 #include "cmGlobalGenerator.h"
 
 // cmDependenciesCommand
-bool cmAddDependenciesCommand::InitialPass(
-  std::vector<std::string> const& args)
+bool cmAddDependenciesCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 2 )
     {

Index: cmCPluginAPI.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmCPluginAPI.cxx,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- cmCPluginAPI.cxx	12 Nov 2007 17:04:36 -0000	1.41
+++ cmCPluginAPI.cxx	23 Jan 2008 15:27:59 -0000	1.42
@@ -430,7 +430,8 @@
     lff.Arguments.push_back(cmListFileArgument(args[i], true,
                                                "[CMake-Plugin]", 0));
     }
-  return mf->ExecuteCommand(lff);
+  cmExecutionStatus status;
+  return mf->ExecuteCommand(lff,status);
 }
 
 void CCONV cmExpandSourceListArguments(void *arg,

Index: cmIncludeDirectoryCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmIncludeDirectoryCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmIncludeDirectoryCommand.h	10 Oct 2007 15:47:43 -0000	1.15
+++ cmIncludeDirectoryCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -40,7 +40,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
 
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmProjectCommand.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmProjectCommand.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmProjectCommand.h	10 Oct 2007 15:47:43 -0000	1.15
+++ cmProjectCommand.h	23 Jan 2008 15:27:59 -0000	1.16
@@ -42,7 +42,8 @@
    * This is called when the command is first encountered in
    * the CMakeLists.txt file.
    */
-  virtual bool InitialPass(std::vector<std::string> const& args);
+  virtual bool InitialPass(std::vector<std::string> const& args,
+                           cmExecutionStatus &status);
   
   /**
    * The name of the command as specified in CMakeList.txt.

Index: cmFindPathCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindPathCommand.cxx,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- cmFindPathCommand.cxx	21 Jan 2008 00:29:12 -0000	1.40
+++ cmFindPathCommand.cxx	23 Jan 2008 15:27:59 -0000	1.41
@@ -70,7 +70,8 @@
 }
 
 // cmFindPathCommand
-bool cmFindPathCommand::InitialPass(std::vector<std::string> const& argsIn)
+bool cmFindPathCommand
+::InitialPass(std::vector<std::string> const& argsIn, cmExecutionStatus &)
 {
   this->VariableDocumentation = "Path to a file.";
   this->CMakePathName = "INCLUDE";

Index: cmOptionCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmOptionCommand.cxx,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- cmOptionCommand.cxx	12 May 2006 17:39:34 -0000	1.22
+++ cmOptionCommand.cxx	23 Jan 2008 15:27:59 -0000	1.23
@@ -17,7 +17,8 @@
 #include "cmOptionCommand.h"
 
 // cmOptionCommand
-bool cmOptionCommand::InitialPass(std::vector<std::string> const& args)
+bool cmOptionCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   bool argError = false;
   if(args.size() < 2)

Index: cmExecuteProcessCommand.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExecuteProcessCommand.cxx,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- cmExecuteProcessCommand.cxx	15 Oct 2007 21:38:10 -0000	1.9
+++ cmExecuteProcessCommand.cxx	23 Jan 2008 15:27:59 -0000	1.10
@@ -33,7 +33,7 @@
 
 // cmExecuteProcessCommand
 bool cmExecuteProcessCommand
-::InitialPass(std::vector<std::string> const& args)
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
   if(args.size() < 1 )
     {



More information about the Cmake-commits mailing list