summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/CMakeLists.txt1
-rw-r--r--Source/cmBootstrapCommands.cxx131
-rw-r--r--Source/cmCommands.cxx116
-rw-r--r--Source/cmCommands.h4
-rw-r--r--Source/cmWhileCommand.cxx1
-rw-r--r--Source/cmake.cxx1
6 files changed, 137 insertions, 117 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index 4451e12..5196fba 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -3,6 +3,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 1.5)
SET(SRCS
cmCacheManager.cxx
cmCacheManager.h
+ cmBootstrapCommands.cxx
cmCommands.cxx
cmCommands.h
cmCustomCommand.cxx
diff --git a/Source/cmBootstrapCommands.cxx b/Source/cmBootstrapCommands.cxx
new file mode 100644
index 0000000..b093cde
--- /dev/null
+++ b/Source/cmBootstrapCommands.cxx
@@ -0,0 +1,131 @@
+/*=========================================================================
+
+ Program: CMake - Cross-Platform Makefile Generator
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
+ See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+// This file is used to compile all the commands
+// that CMake knows about at compile time.
+// This is sort of a boot strapping approach since you would
+// like to have CMake to build CMake.
+#include "cmCommands.h"
+#include "cmAddCustomCommandCommand.cxx"
+#include "cmAddCustomTargetCommand.cxx"
+#include "cmAddDefinitionsCommand.cxx"
+#include "cmAddDependenciesCommand.cxx"
+#include "cmAddExecutableCommand.cxx"
+#include "cmAddLibraryCommand.cxx"
+#include "cmAddTestCommand.cxx"
+#include "cmBuildCommand.cxx"
+#include "cmBuildNameCommand.cxx"
+#include "cmCMakeMinimumRequired.cxx"
+#include "cmConfigureFileCommand.cxx"
+#include "cmCreateTestSourceList.cxx"
+#include "cmElseCommand.cxx"
+#include "cmEnableTestingCommand.cxx"
+#include "cmEndForEachCommand.cxx"
+#include "cmEndIfCommand.cxx"
+#include "cmExecProgramCommand.cxx"
+#include "cmFileCommand.cxx"
+#include "cmFindFileCommand.cxx"
+#include "cmFindLibraryCommand.cxx"
+#include "cmFindPackageCommand.cxx"
+#include "cmFindPathCommand.cxx"
+#include "cmFindProgramCommand.cxx"
+#include "cmForEachCommand.cxx"
+#include "cmGetFilenameComponentCommand.cxx"
+#include "cmGetSourceFilePropertyCommand.cxx"
+#include "cmIfCommand.cxx"
+#include "cmIncludeCommand.cxx"
+#include "cmIncludeDirectoryCommand.cxx"
+#include "cmIncludeRegularExpressionCommand.cxx"
+#include "cmInstallFilesCommand.cxx"
+#include "cmInstallProgramsCommand.cxx"
+#include "cmInstallTargetsCommand.cxx"
+#include "cmLinkDirectoriesCommand.cxx"
+#include "cmMacroCommand.cxx"
+#include "cmMakeDirectoryCommand.cxx"
+#include "cmMarkAsAdvancedCommand.cxx"
+#include "cmMessageCommand.cxx"
+#include "cmOptionCommand.cxx"
+#include "cmProjectCommand.cxx"
+#include "cmRemoveDefinitionsCommand.cxx"
+#include "cmSeparateArgumentsCommand.cxx"
+#include "cmSetCommand.cxx"
+#include "cmSetSourceFilesPropertiesCommand.cxx"
+#include "cmSiteNameCommand.cxx"
+#include "cmStringCommand.cxx"
+#include "cmSubdirCommand.cxx"
+#include "cmSubdirDependsCommand.cxx"
+#include "cmTargetLinkLibrariesCommand.cxx"
+#include "cmTryCompileCommand.cxx"
+#include "cmTryRunCommand.cxx"
+#include "cmVariableRequiresCommand.cxx"
+#include "cmWriteFileCommand.cxx"
+
+void GetBootstrapCommands(std::list<cmCommand*>& commands)
+{
+ commands.push_back(new cmAddCustomCommandCommand);
+ commands.push_back(new cmAddCustomTargetCommand);
+ commands.push_back(new cmAddDefinitionsCommand);
+ commands.push_back(new cmAddDependenciesCommand);
+ commands.push_back(new cmAddExecutableCommand);
+ commands.push_back(new cmAddLibraryCommand);
+ commands.push_back(new cmAddTestCommand);
+ commands.push_back(new cmBuildCommand);
+ commands.push_back(new cmBuildNameCommand);
+ commands.push_back(new cmCMakeMinimumRequired);
+ commands.push_back(new cmConfigureFileCommand);
+ commands.push_back(new cmCreateTestSourceList);
+ commands.push_back(new cmElseCommand);
+ commands.push_back(new cmEnableTestingCommand);
+ commands.push_back(new cmEndForEachCommand);
+ commands.push_back(new cmEndIfCommand);
+ commands.push_back(new cmExecProgramCommand);
+ commands.push_back(new cmFileCommand);
+ commands.push_back(new cmFindFileCommand);
+ commands.push_back(new cmFindLibraryCommand);
+ commands.push_back(new cmFindPackageCommand);
+ commands.push_back(new cmFindPathCommand);
+ commands.push_back(new cmFindProgramCommand);
+ commands.push_back(new cmForEachCommand);
+ commands.push_back(new cmGetFilenameComponentCommand);
+ commands.push_back(new cmGetSourceFilePropertyCommand);
+ commands.push_back(new cmIfCommand);
+ commands.push_back(new cmIncludeCommand);
+ commands.push_back(new cmIncludeDirectoryCommand);
+ commands.push_back(new cmIncludeRegularExpressionCommand);
+ commands.push_back(new cmInstallFilesCommand);
+ commands.push_back(new cmInstallProgramsCommand);
+ commands.push_back(new cmInstallTargetsCommand);
+ commands.push_back(new cmLinkDirectoriesCommand);
+ commands.push_back(new cmMacroCommand);
+ commands.push_back(new cmMakeDirectoryCommand);
+ commands.push_back(new cmMarkAsAdvancedCommand);
+ commands.push_back(new cmMessageCommand);
+ commands.push_back(new cmOptionCommand);
+ commands.push_back(new cmProjectCommand);
+ commands.push_back(new cmRemoveDefinitionsCommand);
+ commands.push_back(new cmSeparateArgumentsCommand);
+ commands.push_back(new cmSetCommand);
+ commands.push_back(new cmSetSourceFilesPropertiesCommand);
+ commands.push_back(new cmSiteNameCommand);
+ commands.push_back(new cmStringCommand);
+ commands.push_back(new cmSubdirCommand);
+ commands.push_back(new cmSubdirDependsCommand);
+ commands.push_back(new cmTargetLinkLibrariesCommand);
+ commands.push_back(new cmTryCompileCommand);
+ commands.push_back(new cmTryRunCommand);
+ commands.push_back(new cmVariableRequiresCommand);
+ commands.push_back(new cmWriteFileCommand);
+}
diff --git a/Source/cmCommands.cxx b/Source/cmCommands.cxx
index c91021f..f9cb55c 100644
--- a/Source/cmCommands.cxx
+++ b/Source/cmCommands.cxx
@@ -14,68 +14,7 @@
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
-// This file is used to compile all the commands
-// that CMake knows about at compile time.
-// This is sort of a boot strapping approach since you would
-// like to have CMake to build CMake.
#include "cmCommands.h"
-#include "cmAddCustomCommandCommand.cxx"
-#include "cmAddCustomTargetCommand.cxx"
-#include "cmAddDefinitionsCommand.cxx"
-#include "cmAddDependenciesCommand.cxx"
-#include "cmAddExecutableCommand.cxx"
-#include "cmAddLibraryCommand.cxx"
-#include "cmAddTestCommand.cxx"
-#include "cmBuildCommand.cxx"
-#include "cmBuildNameCommand.cxx"
-#include "cmCMakeMinimumRequired.cxx"
-#include "cmConfigureFileCommand.cxx"
-#include "cmCreateTestSourceList.cxx"
-#include "cmElseCommand.cxx"
-#include "cmEnableTestingCommand.cxx"
-#include "cmEndForEachCommand.cxx"
-#include "cmEndIfCommand.cxx"
-#include "cmExecProgramCommand.cxx"
-#include "cmFileCommand.cxx"
-#include "cmFindFileCommand.cxx"
-#include "cmFindLibraryCommand.cxx"
-#include "cmFindPackageCommand.cxx"
-#include "cmFindPathCommand.cxx"
-#include "cmFindProgramCommand.cxx"
-#include "cmForEachCommand.cxx"
-#include "cmGetFilenameComponentCommand.cxx"
-#include "cmGetSourceFilePropertyCommand.cxx"
-#include "cmIfCommand.cxx"
-#include "cmIncludeCommand.cxx"
-#include "cmIncludeDirectoryCommand.cxx"
-#include "cmIncludeRegularExpressionCommand.cxx"
-#include "cmInstallFilesCommand.cxx"
-#include "cmInstallProgramsCommand.cxx"
-#include "cmInstallTargetsCommand.cxx"
-#include "cmLinkDirectoriesCommand.cxx"
-#include "cmMacroCommand.cxx"
-#include "cmMakeDirectoryCommand.cxx"
-#include "cmMarkAsAdvancedCommand.cxx"
-#include "cmMessageCommand.cxx"
-#include "cmOptionCommand.cxx"
-#include "cmProjectCommand.cxx"
-#include "cmRemoveDefinitionsCommand.cxx"
-#include "cmSeparateArgumentsCommand.cxx"
-#include "cmSetCommand.cxx"
-#include "cmSetSourceFilesPropertiesCommand.cxx"
-#include "cmSiteNameCommand.cxx"
-#include "cmStringCommand.cxx"
-#include "cmSubdirCommand.cxx"
-#include "cmSubdirDependsCommand.cxx"
-#include "cmTargetLinkLibrariesCommand.cxx"
-#include "cmTryCompileCommand.cxx"
-#include "cmTryRunCommand.cxx"
-#include "cmVariableRequiresCommand.cxx"
-#include "cmWriteFileCommand.cxx"
-
-// on regular builds add in these extra commands we do not add it in on the
-// bootstrap because they are not needed and may require dynaic loading
-// support etc, which makes the bootstrap configure file a mess
#if defined(CMAKE_BUILD_WITH_CMAKE)
#include "cmAbstractFilesCommand.cxx"
#include "cmAuxSourceDirectoryCommand.cxx"
@@ -112,65 +51,10 @@
// windows.h #defines GetCurrentDirectory which is a member
// of cmMakefile
#include "cmLoadCommandCommand.cxx"
-
#endif
void GetPredefinedCommands(std::list<cmCommand*>& commands)
{
- commands.push_back(new cmAddCustomCommandCommand);
- commands.push_back(new cmAddCustomTargetCommand);
- commands.push_back(new cmAddDefinitionsCommand);
- commands.push_back(new cmAddDependenciesCommand);
- commands.push_back(new cmAddExecutableCommand);
- commands.push_back(new cmAddLibraryCommand);
- commands.push_back(new cmAddTestCommand);
- commands.push_back(new cmBuildCommand);
- commands.push_back(new cmBuildNameCommand);
- commands.push_back(new cmCMakeMinimumRequired);
- commands.push_back(new cmConfigureFileCommand);
- commands.push_back(new cmCreateTestSourceList);
- commands.push_back(new cmElseCommand);
- commands.push_back(new cmEnableTestingCommand);
- commands.push_back(new cmEndForEachCommand);
- commands.push_back(new cmEndIfCommand);
- commands.push_back(new cmExecProgramCommand);
- commands.push_back(new cmFileCommand);
- commands.push_back(new cmFindFileCommand);
- commands.push_back(new cmFindLibraryCommand);
- commands.push_back(new cmFindPackageCommand);
- commands.push_back(new cmFindPathCommand);
- commands.push_back(new cmFindProgramCommand);
- commands.push_back(new cmForEachCommand);
- commands.push_back(new cmGetFilenameComponentCommand);
- commands.push_back(new cmGetSourceFilePropertyCommand);
- commands.push_back(new cmIfCommand);
- commands.push_back(new cmIncludeCommand);
- commands.push_back(new cmIncludeDirectoryCommand);
- commands.push_back(new cmIncludeRegularExpressionCommand);
- commands.push_back(new cmInstallFilesCommand);
- commands.push_back(new cmInstallProgramsCommand);
- commands.push_back(new cmInstallTargetsCommand);
- commands.push_back(new cmLinkDirectoriesCommand);
- commands.push_back(new cmMacroCommand);
- commands.push_back(new cmMakeDirectoryCommand);
- commands.push_back(new cmMarkAsAdvancedCommand);
- commands.push_back(new cmMessageCommand);
- commands.push_back(new cmOptionCommand);
- commands.push_back(new cmProjectCommand);
- commands.push_back(new cmRemoveDefinitionsCommand);
- commands.push_back(new cmSeparateArgumentsCommand);
- commands.push_back(new cmSetCommand);
- commands.push_back(new cmSetSourceFilesPropertiesCommand);
- commands.push_back(new cmSiteNameCommand);
- commands.push_back(new cmStringCommand);
- commands.push_back(new cmSubdirCommand);
- commands.push_back(new cmSubdirDependsCommand);
- commands.push_back(new cmTargetLinkLibrariesCommand);
- commands.push_back(new cmTryCompileCommand);
- commands.push_back(new cmTryRunCommand);
- commands.push_back(new cmVariableRequiresCommand);
- commands.push_back(new cmWriteFileCommand);
-
#if defined(CMAKE_BUILD_WITH_CMAKE)
commands.push_back(new cmAbstractFilesCommand);
commands.push_back(new cmAuxSourceDirectoryCommand);
diff --git a/Source/cmCommands.h b/Source/cmCommands.h
index 5ec0ed1..878ded3 100644
--- a/Source/cmCommands.h
+++ b/Source/cmCommands.h
@@ -21,10 +21,12 @@
class cmCommand;
/**
* Global function to return all compiled in commands.
- * To add a new command edit cmCommands.cxx and add your command.
+ * To add a new command edit cmCommands.cxx or cmBootstrapCommands.cxx
+ * and add your command.
* It is up to the caller to delete the commands created by this
* call.
*/
+void GetBootstrapCommands(std::list<cmCommand*>& commands);
void GetPredefinedCommands(std::list<cmCommand*>& commands);
diff --git a/Source/cmWhileCommand.cxx b/Source/cmWhileCommand.cxx
index 352a195..8691801 100644
--- a/Source/cmWhileCommand.cxx
+++ b/Source/cmWhileCommand.cxx
@@ -15,6 +15,7 @@
=========================================================================*/
#include "cmWhileCommand.h"
+#include "cmIfCommand.h"
bool cmWhileFunctionBlocker::
IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf)
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 9c319f1..593d337 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -1409,6 +1409,7 @@ int cmake::DumpDocumentationToFile(std::ostream& f)
void cmake::AddDefaultCommands()
{
std::list<cmCommand*> commands;
+ GetBootstrapCommands(commands);
GetPredefinedCommands(commands);
for(std::list<cmCommand*>::iterator i = commands.begin();
i != commands.end(); ++i)