From a641ad3bba58932279b55bae9e05fb9d5277a0bf Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Fri, 21 Jan 2005 10:27:51 -0500 Subject: ENH: split up cmCommands into two files --- Source/CMakeLists.txt | 1 + Source/cmBootstrapCommands.cxx | 131 +++++++++++++++++++++++++++++++++++++++++ Source/cmCommands.cxx | 116 ------------------------------------ Source/cmCommands.h | 4 +- Source/cmWhileCommand.cxx | 1 + Source/cmake.cxx | 1 + bootstrap | 1 + 7 files changed, 138 insertions(+), 117 deletions(-) create mode 100644 Source/cmBootstrapCommands.cxx 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& 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& 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& commands); void GetPredefinedCommands(std::list& 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 commands; + GetBootstrapCommands(commands); GetPredefinedCommands(commands); for(std::list::iterator i = commands.begin(); i != commands.end(); ++i) diff --git a/bootstrap b/bootstrap index acb64d6..03a7734 100755 --- a/bootstrap +++ b/bootstrap @@ -45,6 +45,7 @@ CMAKE_CXX_SOURCES="\ cmSystemTools \ cmGlobalUnixMakefileGenerator \ cmLocalUnixMakefileGenerator \ + cmBootstrapCommands \ cmCommands \ cmTarget \ cmCustomCommand \ -- cgit v0.12