diff options
132 files changed, 1283 insertions, 531 deletions
diff --git a/Modules/Platform/Android-Common.cmake b/Modules/Platform/Android-Common.cmake index 6544696..8755d4f 100644 --- a/Modules/Platform/Android-Common.cmake +++ b/Modules/Platform/Android-Common.cmake @@ -107,6 +107,7 @@ set(_ANDROID_ABI_INIT_CFLAGS "") set(_ANDROID_ABI_INIT_CFLAGS_DEBUG "") set(_ANDROID_ABI_INIT_CFLAGS_RELEASE "") set(_ANDROID_ABI_INIT_LDFLAGS "") +set(_ANDROID_ABI_INIT_EXE_LDFLAGS "") macro(__android_compiler_common lang) if(_ANDROID_ABI_INIT_CFLAGS) @@ -125,6 +126,9 @@ macro(__android_compiler_common lang) string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_LDFLAGS}") endforeach() endif() + if(_ANDROID_ABI_INIT_EXE_LDFLAGS) + string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_EXE_LDFLAGS}") + endif() if(DEFINED _ANDROID_STL_EXCEPTIONS) if(_ANDROID_STL_EXCEPTIONS) diff --git a/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake b/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake index 3ff1fe5..e56b67b 100644 --- a/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake +++ b/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake @@ -5,4 +5,7 @@ string(APPEND _ANDROID_ABI_INIT_CFLAGS " -fpic" ) +# Suppress -Wl,-z,nocopyreloc flag on arm64-v8a +set(_ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc 1) + include(Platform/Android/abi-common-Clang) diff --git a/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake b/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake index 538ec2f..0bcfc86 100644 --- a/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake +++ b/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake @@ -3,4 +3,7 @@ string(APPEND _ANDROID_ABI_INIT_CFLAGS " -fpic" ) +# Suppress -Wl,-z,nocopyreloc flag on arm64-v8a +set(_ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc 1) + include(Platform/Android/abi-common-GNU) diff --git a/Modules/Platform/Android/abi-common.cmake b/Modules/Platform/Android/abi-common.cmake index 12d8e5c..84e7dbd 100644 --- a/Modules/Platform/Android/abi-common.cmake +++ b/Modules/Platform/Android/abi-common.cmake @@ -2,3 +2,9 @@ string(APPEND _ANDROID_ABI_INIT_CFLAGS " -funwind-tables" " -no-canonical-prefixes" ) + +string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -Wl,--gc-sections") + +if(NOT _ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc) + string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -Wl,-z,nocopyreloc") +endif() diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 2b8c17c..09c0acf 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -159,14 +159,10 @@ endif() set(SRCS cmArchiveWrite.cxx cmBase32.cxx - cmBootstrapCommands1.cxx - cmBootstrapCommands2.cxx cmCacheManager.cxx cmCacheManager.h - "${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx" cmCLocaleEnvironmentScope.h cmCLocaleEnvironmentScope.cxx - cmCommands.h cmCommandArgumentLexer.cxx cmCommandArgumentParser.cxx cmCommandArgumentParserHelper.cxx @@ -390,6 +386,243 @@ set(SRCS cmake.cxx cmake.h + cmCommand.cxx + cmCommand.h + cmCommands.cxx + cmCommands.h + cmAddCompileOptionsCommand.cxx + cmAddCompileOptionsCommand.h + 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 + cmBreakCommand.cxx + cmBreakCommand.h + cmBuildCommand.cxx + cmBuildCommand.h + cmBuildNameCommand.cxx + cmBuildNameCommand.h + cmCMakeHostSystemInformationCommand.cxx + cmCMakeHostSystemInformationCommand.h + cmCMakeMinimumRequired.cxx + cmCMakeMinimumRequired.h + cmCMakePolicyCommand.cxx + cmCMakePolicyCommand.h + cmCommandArgumentsHelper.cxx + cmCommandArgumentsHelper.h + cmConditionEvaluator.cxx + cmConditionEvaluator.h + cmConfigureFileCommand.cxx + cmConfigureFileCommand.h + cmContinueCommand.cxx + cmContinueCommand.h + cmCoreTryCompile.cxx + cmCoreTryCompile.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 + cmExpandedCommandArgument.cxx + cmExpandedCommandArgument.h + cmExportCommand.cxx + cmExportCommand.h + cmExportLibraryDependenciesCommand.cxx + cmExportLibraryDependenciesCommand.h + cmFLTKWrapUICommand.cxx + cmFLTKWrapUICommand.h + cmFileCommand.cxx + cmFileCommand.h + cmFindBase.cxx + cmFindBase.h + cmFindCommon.cxx + cmFindCommon.h + cmFindFileCommand.cxx + cmFindFileCommand.h + cmFindLibraryCommand.cxx + cmFindLibraryCommand.h + cmFindPackageCommand.cxx + cmFindPackageCommand.h + cmFindPathCommand.cxx + cmFindPathCommand.h + cmFindProgramCommand.cxx + cmFindProgramCommand.h + cmForEachCommand.cxx + cmForEachCommand.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 + cmHexFileConverter.cxx + cmHexFileConverter.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 + cmInstallCommandArguments.cxx + cmInstallCommandArguments.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 + cmMarkAsAdvancedCommand.cxx + cmMarkAsAdvancedCommand.h + cmMathCommand.cxx + cmMathCommand.h + cmMessageCommand.cxx + cmMessageCommand.h + cmOptionCommand.cxx + cmOptionCommand.h + cmOutputRequiredFilesCommand.cxx + cmOutputRequiredFilesCommand.h + cmParseArgumentsCommand.cxx + cmParseArgumentsCommand.h + cmPathLabel.cxx + cmPathLabel.h + cmProjectCommand.cxx + cmProjectCommand.h + cmQTWrapCPPCommand.cxx + cmQTWrapCPPCommand.h + cmQTWrapUICommand.cxx + cmQTWrapUICommand.h + cmRemoveCommand.cxx + cmRemoveCommand.h + cmRemoveDefinitionsCommand.cxx + cmRemoveDefinitionsCommand.h + cmReturnCommand.cxx + cmReturnCommand.h + cmSearchPath.cxx + cmSearchPath.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 + cmTargetCompileDefinitionsCommand.cxx + cmTargetCompileDefinitionsCommand.h + cmTargetCompileFeaturesCommand.cxx + cmTargetCompileFeaturesCommand.h + cmTargetCompileOptionsCommand.cxx + cmTargetCompileOptionsCommand.h + cmTargetIncludeDirectoriesCommand.cxx + cmTargetIncludeDirectoriesCommand.h + cmTargetLinkLibrariesCommand.cxx + cmTargetLinkLibrariesCommand.h + cmTargetPropCommandBase.cxx + cmTargetPropCommandBase.h + cmTargetSourcesCommand.cxx + cmTargetSourcesCommand.h + cmTimestamp.cxx + cmTimestamp.h + cmTryCompileCommand.cxx + cmTryCompileCommand.h + cmTryRunCommand.cxx + cmTryRunCommand.h + cmUnsetCommand.cxx + cmUnsetCommand.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 + cm_auto_ptr.hxx cm_get_date.h cm_get_date.c @@ -401,52 +634,6 @@ set(SRCS cm_codecvt.cxx ) -set(COMMAND_INCLUDES "#include \"cmTargetPropCommandBase.cxx\"\n") -list(APPEND SRCS cmTargetPropCommandBase.cxx) -set_property(SOURCE cmTargetPropCommandBase.cxx PROPERTY HEADER_FILE_ONLY ON) -set(NEW_COMMANDS "") -foreach(command_file - cmAddCompileOptionsCommand - cmAuxSourceDirectoryCommand - cmBuildNameCommand - cmCMakeHostSystemInformationCommand - cmElseIfCommand - cmExportCommand - cmExportLibraryDependenciesCommand - cmFLTKWrapUICommand - cmIncludeExternalMSProjectCommand - cmInstallProgramsCommand - cmLinkLibrariesCommand - cmLoadCacheCommand - cmOutputRequiredFilesCommand - cmQTWrapCPPCommand - cmQTWrapUICommand - cmRemoveCommand - cmRemoveDefinitionsCommand - cmSourceGroupCommand - cmSubdirDependsCommand - cmTargetCompileDefinitionsCommand - cmTargetCompileFeaturesCommand - cmTargetCompileOptionsCommand - cmTargetIncludeDirectoriesCommand - cmTargetSourcesCommand - cmUseMangledMesaCommand - cmUtilitySourceCommand - cmVariableRequiresCommand - cmVariableWatchCommand - cmWriteFileCommand - # This one must be last because it includes windows.h and - # windows.h #defines GetCurrentDirectory which is a member - # of cmMakefile - cmLoadCommandCommand - ) - set(COMMAND_INCLUDES "${COMMAND_INCLUDES}#include \"${command_file}.cxx\"\n") - set(NEW_COMMANDS "${NEW_COMMANDS}commands.push_back(new ${command_file});\n") - list(APPEND SRCS ${command_file}.cxx) - set_property(SOURCE ${command_file}.cxx PROPERTY HEADER_FILE_ONLY ON) -endforeach() -configure_file(cmCommands.cxx.in ${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx @ONLY) - # Kdevelop only works on UNIX and not windows if(UNIX) set(SRCS ${SRCS} cmGlobalKdevelopGenerator.cxx) diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 149e14d..a2acd97 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 7) -set(CMake_VERSION_PATCH 20161021) +set(CMake_VERSION_PATCH 20161024) #set(CMake_VERSION_RC 1) diff --git a/Source/cmAddCompileOptionsCommand.cxx b/Source/cmAddCompileOptionsCommand.cxx index 9265cba..21a8012 100644 --- a/Source/cmAddCompileOptionsCommand.cxx +++ b/Source/cmAddCompileOptionsCommand.cxx @@ -2,6 +2,10 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmAddCompileOptionsCommand.h" +#include "cmMakefile.h" + +class cmExecutionStatus; + bool cmAddCompileOptionsCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) { diff --git a/Source/cmAddCompileOptionsCommand.h b/Source/cmAddCompileOptionsCommand.h index 9f2cf66..3625626 100644 --- a/Source/cmAddCompileOptionsCommand.h +++ b/Source/cmAddCompileOptionsCommand.h @@ -3,7 +3,14 @@ #ifndef cmAddCompileOptionsCommand_h #define cmAddCompileOptionsCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; class cmAddCompileOptionsCommand : public cmCommand { diff --git a/Source/cmAddExecutableCommand.cxx b/Source/cmAddExecutableCommand.cxx index a03d77d..3d0729b 100644 --- a/Source/cmAddExecutableCommand.cxx +++ b/Source/cmAddExecutableCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmAddExecutableCommand.h" +#include "cmGlobalGenerator.h" + // cmExecutableCommand bool cmAddExecutableCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmAddLibraryCommand.cxx b/Source/cmAddLibraryCommand.cxx index 0777ef0..56cf91a 100644 --- a/Source/cmAddLibraryCommand.cxx +++ b/Source/cmAddLibraryCommand.cxx @@ -2,8 +2,10 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmAddLibraryCommand.h" +#include "cmGlobalGenerator.h" #include "cmState.h" #include "cmStateTypes.h" +#include "cmSystemTools.h" #include "cmake.h" // cmLibraryCommand @@ -268,8 +270,8 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args, yet its linker language. */ if ((type == cmStateEnums::SHARED_LIBRARY || type == cmStateEnums::MODULE_LIBRARY) && - (this->Makefile->GetState()->GetGlobalPropertyAsBool( - "TARGET_SUPPORTS_SHARED_LIBS") == false)) { + !this->Makefile->GetState()->GetGlobalPropertyAsBool( + "TARGET_SUPPORTS_SHARED_LIBS")) { std::ostringstream w; w << "ADD_LIBRARY called with " << (type == cmStateEnums::SHARED_LIBRARY ? "SHARED" : "MODULE") diff --git a/Source/cmAddSubDirectoryCommand.cxx b/Source/cmAddSubDirectoryCommand.cxx index bb1e239..0ebe35d 100644 --- a/Source/cmAddSubDirectoryCommand.cxx +++ b/Source/cmAddSubDirectoryCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmAddSubDirectoryCommand.h" +#include "cmSystemTools.h" + // cmAddSubDirectoryCommand bool cmAddSubDirectoryCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmAuxSourceDirectoryCommand.cxx b/Source/cmAuxSourceDirectoryCommand.cxx index 6655911..04e1a0b 100644 --- a/Source/cmAuxSourceDirectoryCommand.cxx +++ b/Source/cmAuxSourceDirectoryCommand.cxx @@ -2,9 +2,17 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmAuxSourceDirectoryCommand.h" +#include <algorithm> +#include <cmsys/Directory.hxx> +#include <stddef.h> + +#include "cmAlgorithms.h" +#include "cmMakefile.h" #include "cmSourceFile.h" +#include "cmSystemTools.h" +#include "cmake.h" -#include <cmsys/Directory.hxx> +class cmExecutionStatus; // cmAuxSourceDirectoryCommand bool cmAuxSourceDirectoryCommand::InitialPass( diff --git a/Source/cmAuxSourceDirectoryCommand.h b/Source/cmAuxSourceDirectoryCommand.h index 9840d8e..89eba7f 100644 --- a/Source/cmAuxSourceDirectoryCommand.h +++ b/Source/cmAuxSourceDirectoryCommand.h @@ -3,7 +3,14 @@ #ifndef cmAuxSourceDirectoryCommand_h #define cmAuxSourceDirectoryCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmAuxSourceDirectoryCommand * \brief Specify auxiliary source code directories. diff --git a/Source/cmBootstrapCommands1.cxx b/Source/cmBootstrapCommands1.cxx deleted file mode 100644 index 2b3b62f..0000000 --- a/Source/cmBootstrapCommands1.cxx +++ /dev/null @@ -1,87 +0,0 @@ -/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying - file Copyright.txt or https://cmake.org/licensing for details. */ -// 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 "cmAddCustomCommandCommand.cxx" -#include "cmAddCustomTargetCommand.cxx" -#include "cmAddDefinitionsCommand.cxx" -#include "cmAddDependenciesCommand.cxx" -#include "cmAddExecutableCommand.cxx" -#include "cmAddLibraryCommand.cxx" -#include "cmAddSubDirectoryCommand.cxx" -#include "cmAddTestCommand.cxx" -#include "cmBreakCommand.cxx" -#include "cmBuildCommand.cxx" -#include "cmCMakeMinimumRequired.cxx" -#include "cmCMakePolicyCommand.cxx" -#include "cmCommandArgumentsHelper.cxx" -#include "cmCommands.h" -#include "cmConfigureFileCommand.cxx" -#include "cmContinueCommand.cxx" -#include "cmCoreTryCompile.cxx" -#include "cmCreateTestSourceList.cxx" -#include "cmDefinePropertyCommand.cxx" -#include "cmElseCommand.cxx" -#include "cmEnableLanguageCommand.cxx" -#include "cmEnableTestingCommand.cxx" -#include "cmEndForEachCommand.cxx" -#include "cmEndFunctionCommand.cxx" -#include "cmEndIfCommand.cxx" -#include "cmEndMacroCommand.cxx" -#include "cmEndWhileCommand.cxx" -#include "cmExecProgramCommand.cxx" -#include "cmExecuteProcessCommand.cxx" -#include "cmFileCommand.cxx" -#include "cmFindBase.cxx" -#include "cmFindCommon.cxx" -#include "cmFindFileCommand.cxx" -#include "cmFindLibraryCommand.cxx" -#include "cmFindPackageCommand.cxx" -#include "cmFindPathCommand.cxx" -#include "cmFindProgramCommand.cxx" -#include "cmForEachCommand.cxx" -#include "cmFunctionCommand.cxx" -#include "cmParseArgumentsCommand.cxx" -#include "cmPathLabel.cxx" -#include "cmSearchPath.cxx" - -void GetBootstrapCommands1(std::vector<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 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 cmCMakePolicyCommand); - commands.push_back(new cmConfigureFileCommand); - commands.push_back(new cmContinueCommand); - commands.push_back(new cmCreateTestSourceList); - commands.push_back(new cmDefinePropertyCommand); - commands.push_back(new cmElseCommand); - commands.push_back(new cmEnableLanguageCommand); - commands.push_back(new cmEnableTestingCommand); - commands.push_back(new cmEndForEachCommand); - commands.push_back(new cmEndFunctionCommand); - commands.push_back(new cmEndIfCommand); - commands.push_back(new cmEndMacroCommand); - commands.push_back(new cmEndWhileCommand); - commands.push_back(new cmExecProgramCommand); - commands.push_back(new cmExecuteProcessCommand); - 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 cmFunctionCommand); - commands.push_back(new cmParseArgumentsCommand); -} diff --git a/Source/cmBootstrapCommands2.cxx b/Source/cmBootstrapCommands2.cxx deleted file mode 100644 index 625c3e0..0000000 --- a/Source/cmBootstrapCommands2.cxx +++ /dev/null @@ -1,94 +0,0 @@ -/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying - file Copyright.txt or https://cmake.org/licensing for details. */ -// 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 "cmConditionEvaluator.cxx" -#include "cmExpandedCommandArgument.cxx" -#include "cmGetCMakePropertyCommand.cxx" -#include "cmGetDirectoryPropertyCommand.cxx" -#include "cmGetFilenameComponentCommand.cxx" -#include "cmGetPropertyCommand.cxx" -#include "cmGetSourceFilePropertyCommand.cxx" -#include "cmGetTargetPropertyCommand.cxx" -#include "cmGetTestPropertyCommand.cxx" -#include "cmHexFileConverter.cxx" -#include "cmIfCommand.cxx" -#include "cmIncludeCommand.cxx" -#include "cmIncludeDirectoryCommand.cxx" -#include "cmIncludeRegularExpressionCommand.cxx" -#include "cmInstallCommand.cxx" -#include "cmInstallCommandArguments.cxx" -#include "cmInstallFilesCommand.cxx" -#include "cmInstallTargetsCommand.cxx" -#include "cmLinkDirectoriesCommand.cxx" -#include "cmListCommand.cxx" -#include "cmMacroCommand.cxx" -#include "cmMakeDirectoryCommand.cxx" -#include "cmMarkAsAdvancedCommand.cxx" -#include "cmMathCommand.cxx" -#include "cmMessageCommand.cxx" -#include "cmOptionCommand.cxx" -#include "cmProjectCommand.cxx" -#include "cmReturnCommand.cxx" -#include "cmSeparateArgumentsCommand.cxx" -#include "cmSetCommand.cxx" -#include "cmSetDirectoryPropertiesCommand.cxx" -#include "cmSetPropertyCommand.cxx" -#include "cmSetSourceFilesPropertiesCommand.cxx" -#include "cmSetTargetPropertiesCommand.cxx" -#include "cmSetTestsPropertiesCommand.cxx" -#include "cmSiteNameCommand.cxx" -#include "cmStringCommand.cxx" -#include "cmSubdirCommand.cxx" -#include "cmTargetLinkLibrariesCommand.cxx" -#include "cmTimestamp.cxx" -#include "cmTryCompileCommand.cxx" -#include "cmTryRunCommand.cxx" -#include "cmUnsetCommand.cxx" -#include "cmWhileCommand.cxx" - -void GetBootstrapCommands2(std::vector<cmCommand*>& commands) -{ - commands.push_back(new cmGetCMakePropertyCommand); - commands.push_back(new cmGetDirectoryPropertyCommand); - commands.push_back(new cmGetFilenameComponentCommand); - commands.push_back(new cmGetPropertyCommand); - commands.push_back(new cmGetSourceFilePropertyCommand); - commands.push_back(new cmGetTargetPropertyCommand); - commands.push_back(new cmIfCommand); - commands.push_back(new cmIncludeCommand); - commands.push_back(new cmIncludeDirectoryCommand); - commands.push_back(new cmIncludeRegularExpressionCommand); - commands.push_back(new cmInstallCommand); - commands.push_back(new cmInstallFilesCommand); - commands.push_back(new cmInstallTargetsCommand); - commands.push_back(new cmLinkDirectoriesCommand); - commands.push_back(new cmListCommand); - commands.push_back(new cmMacroCommand); - commands.push_back(new cmMakeDirectoryCommand); - commands.push_back(new cmMarkAsAdvancedCommand); - commands.push_back(new cmMathCommand); - commands.push_back(new cmMessageCommand); - commands.push_back(new cmOptionCommand); - commands.push_back(new cmProjectCommand); - commands.push_back(new cmReturnCommand); - commands.push_back(new cmSeparateArgumentsCommand); - commands.push_back(new cmSetCommand); - commands.push_back(new cmSetDirectoryPropertiesCommand); - commands.push_back(new cmSetPropertyCommand); - commands.push_back(new cmSetSourceFilesPropertiesCommand); - commands.push_back(new cmSetTargetPropertiesCommand); - commands.push_back(new cmGetTestPropertyCommand); - commands.push_back(new cmSetTestsPropertiesCommand); - commands.push_back(new cmSiteNameCommand); - commands.push_back(new cmStringCommand); - commands.push_back(new cmSubdirCommand); - commands.push_back(new cmTargetLinkLibrariesCommand); - commands.push_back(new cmTryCompileCommand); - commands.push_back(new cmTryRunCommand); - commands.push_back(new cmUnsetCommand); - commands.push_back(new cmWhileCommand); -} diff --git a/Source/cmBuildNameCommand.cxx b/Source/cmBuildNameCommand.cxx index 816147b..3257c93 100644 --- a/Source/cmBuildNameCommand.cxx +++ b/Source/cmBuildNameCommand.cxx @@ -2,8 +2,16 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmBuildNameCommand.h" +#include <algorithm> #include <cmsys/RegularExpression.hxx> +#include "cmMakefile.h" +#include "cmPolicies.h" +#include "cmState.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; + // cmBuildNameCommand bool cmBuildNameCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmBuildNameCommand.h b/Source/cmBuildNameCommand.h index 6e8d98b..aa8669a 100644 --- a/Source/cmBuildNameCommand.h +++ b/Source/cmBuildNameCommand.h @@ -3,7 +3,14 @@ #ifndef cmBuildNameCommand_h #define cmBuildNameCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; class cmBuildNameCommand : public cmCommand { diff --git a/Source/cmCMakeHostSystemInformationCommand.cxx b/Source/cmCMakeHostSystemInformationCommand.cxx index 018010e..7da93ac 100644 --- a/Source/cmCMakeHostSystemInformationCommand.cxx +++ b/Source/cmCMakeHostSystemInformationCommand.cxx @@ -2,6 +2,13 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmCMakeHostSystemInformationCommand.h" +#include <sstream> + +#include "cmMakefile.h" +#include "cmsys/SystemInformation.hxx" + +class cmExecutionStatus; + // cmCMakeHostSystemInformation bool cmCMakeHostSystemInformationCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmCMakeHostSystemInformationCommand.h b/Source/cmCMakeHostSystemInformationCommand.h index bddd7e1..8420d08 100644 --- a/Source/cmCMakeHostSystemInformationCommand.h +++ b/Source/cmCMakeHostSystemInformationCommand.h @@ -3,9 +3,18 @@ #ifndef cmCMakeHostSystemInformationCommand_h #define cmCMakeHostSystemInformationCommand_h +#include <cmConfigure.h> +#include <stddef.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" -#include <cmsys/SystemInformation.hxx> +class cmExecutionStatus; +namespace cmsys { +class SystemInformation; +} // namespace cmsys /** \class cmCMakeHostSystemInformationCommand * \brief Query host system specific information diff --git a/Source/cmCMakeMinimumRequired.cxx b/Source/cmCMakeMinimumRequired.cxx index 80b5108..d71172c 100644 --- a/Source/cmCMakeMinimumRequired.cxx +++ b/Source/cmCMakeMinimumRequired.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmCMakeMinimumRequired.h" +#include "cmSystemTools.h" #include "cmVersion.h" // cmCMakeMinimumRequired diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index 155456a..b70074e 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -7,10 +7,12 @@ #include "cmCPluginAPI.h" +#include "cmExecutionStatus.h" +#include "cmGlobalGenerator.h" #include "cmMakefile.h" -#include "cmVersion.h" - #include "cmSourceFile.h" +#include "cmState.h" +#include "cmVersion.h" #include <stdlib.h> diff --git a/Source/cmCommand.cxx b/Source/cmCommand.cxx new file mode 100644 index 0000000..3c839de --- /dev/null +++ b/Source/cmCommand.cxx @@ -0,0 +1,48 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#include "cmCommand.h" + +bool cmCommand::InvokeInitialPass(const std::vector<cmListFileArgument>& args, + cmExecutionStatus& status) +{ + std::vector<std::string> expandedArguments; + if (!this->Makefile->ExpandArguments(args, expandedArguments)) { + // There was an error expanding arguments. It was already + // reported, so we can skip this command without error. + return true; + } + return this->InitialPass(expandedArguments, status); +} + +const char* cmCommand::GetError() +{ + if (this->Error.empty()) { + this->Error = this->GetName(); + this->Error += " unknown error."; + } + return this->Error.c_str(); +} + +void cmCommand::SetError(const std::string& e) +{ + this->Error = this->GetName(); + this->Error += " "; + this->Error += e; +} + +bool cmCommand::Disallowed(cmPolicies::PolicyID pol, const char* e) +{ + switch (this->Makefile->GetPolicyStatus(pol)) { + case cmPolicies::WARN: + this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, + cmPolicies::GetPolicyWarning(pol)); + case cmPolicies::OLD: + return false; + case cmPolicies::REQUIRED_IF_USED: + case cmPolicies::REQUIRED_ALWAYS: + case cmPolicies::NEW: + this->Makefile->IssueMessage(cmake::FATAL_ERROR, e); + break; + } + return true; +} diff --git a/Source/cmCommand.h b/Source/cmCommand.h index dcbd0dc..65bb7c5 100644 --- a/Source/cmCommand.h +++ b/Source/cmCommand.h @@ -26,9 +26,9 @@ public: * Construct the command. By default it is enabled with no makefile. */ cmCommand() + : Makefile(CM_NULLPTR) + , Enabled(true) { - this->Makefile = CM_NULLPTR; - this->Enabled = true; } /** @@ -48,16 +48,7 @@ public: * arguments and then invokes the InitialPass. */ virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args, - cmExecutionStatus& status) - { - std::vector<std::string> expandedArguments; - if (!this->Makefile->ExpandArguments(args, expandedArguments)) { - // There was an error expanding arguments. It was already - // reported, so we can skip this command without error. - return true; - } - return this->InitialPass(expandedArguments, status); - } + cmExecutionStatus& status); /** * This is called when the command is first encountered in @@ -123,42 +114,15 @@ public: /** * Return the last error string. */ - const char* GetError() - { - if (this->Error.empty()) { - this->Error = this->GetName(); - this->Error += " unknown error."; - } - return this->Error.c_str(); - } + const char* GetError(); /** * Set the error message */ - void SetError(const std::string& e) - { - this->Error = this->GetName(); - this->Error += " "; - this->Error += e; - } + void SetError(const std::string& e); /** Check if the command is disallowed by a policy. */ - bool Disallowed(cmPolicies::PolicyID pol, const char* e) - { - switch (this->Makefile->GetPolicyStatus(pol)) { - case cmPolicies::WARN: - this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, - cmPolicies::GetPolicyWarning(pol)); - case cmPolicies::OLD: - return false; - case cmPolicies::REQUIRED_IF_USED: - case cmPolicies::REQUIRED_ALWAYS: - case cmPolicies::NEW: - this->Makefile->IssueMessage(cmake::FATAL_ERROR, e); - break; - } - return true; - } + bool Disallowed(cmPolicies::PolicyID pol, const char* e); protected: cmMakefile* Makefile; diff --git a/Source/cmCommands.cxx b/Source/cmCommands.cxx new file mode 100644 index 0000000..0697d4b --- /dev/null +++ b/Source/cmCommands.cxx @@ -0,0 +1,238 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#include "cmCommands.h" + +#include "cmAddCustomCommandCommand.h" +#include "cmAddCustomTargetCommand.h" +#include "cmAddDefinitionsCommand.h" +#include "cmAddDependenciesCommand.h" +#include "cmAddExecutableCommand.h" +#include "cmAddLibraryCommand.h" +#include "cmAddSubDirectoryCommand.h" +#include "cmAddTestCommand.h" +#include "cmBreakCommand.h" +#include "cmBuildCommand.h" +#include "cmCMakeMinimumRequired.h" +#include "cmCMakePolicyCommand.h" +#include "cmCommandArgumentsHelper.h" +#include "cmConditionEvaluator.h" +#include "cmConfigureFileCommand.h" +#include "cmContinueCommand.h" +#include "cmCoreTryCompile.h" +#include "cmCreateTestSourceList.h" +#include "cmDefinePropertyCommand.h" +#include "cmElseCommand.h" +#include "cmEnableLanguageCommand.h" +#include "cmEnableTestingCommand.h" +#include "cmEndForEachCommand.h" +#include "cmEndFunctionCommand.h" +#include "cmEndIfCommand.h" +#include "cmEndMacroCommand.h" +#include "cmEndWhileCommand.h" +#include "cmExecProgramCommand.h" +#include "cmExecuteProcessCommand.h" +#include "cmExpandedCommandArgument.h" +#include "cmFileCommand.h" +#include "cmFindBase.h" +#include "cmFindCommon.h" +#include "cmFindFileCommand.h" +#include "cmFindLibraryCommand.h" +#include "cmFindPackageCommand.h" +#include "cmFindPathCommand.h" +#include "cmFindProgramCommand.h" +#include "cmForEachCommand.h" +#include "cmFunctionCommand.h" +#include "cmGetCMakePropertyCommand.h" +#include "cmGetDirectoryPropertyCommand.h" +#include "cmGetFilenameComponentCommand.h" +#include "cmGetPropertyCommand.h" +#include "cmGetSourceFilePropertyCommand.h" +#include "cmGetTargetPropertyCommand.h" +#include "cmGetTestPropertyCommand.h" +#include "cmHexFileConverter.h" +#include "cmIfCommand.h" +#include "cmIncludeCommand.h" +#include "cmIncludeDirectoryCommand.h" +#include "cmIncludeRegularExpressionCommand.h" +#include "cmInstallCommand.h" +#include "cmInstallCommandArguments.h" +#include "cmInstallFilesCommand.h" +#include "cmInstallTargetsCommand.h" +#include "cmLinkDirectoriesCommand.h" +#include "cmListCommand.h" +#include "cmMacroCommand.h" +#include "cmMakeDirectoryCommand.h" +#include "cmMarkAsAdvancedCommand.h" +#include "cmMathCommand.h" +#include "cmMessageCommand.h" +#include "cmOptionCommand.h" +#include "cmParseArgumentsCommand.h" +#include "cmPathLabel.h" +#include "cmProjectCommand.h" +#include "cmReturnCommand.h" +#include "cmSearchPath.h" +#include "cmSeparateArgumentsCommand.h" +#include "cmSetCommand.h" +#include "cmSetDirectoryPropertiesCommand.h" +#include "cmSetPropertyCommand.h" +#include "cmSetSourceFilesPropertiesCommand.h" +#include "cmSetTargetPropertiesCommand.h" +#include "cmSetTestsPropertiesCommand.h" +#include "cmSiteNameCommand.h" +#include "cmStringCommand.h" +#include "cmSubdirCommand.h" +#include "cmTargetLinkLibrariesCommand.h" +#include "cmTimestamp.h" +#include "cmTryCompileCommand.h" +#include "cmTryRunCommand.h" +#include "cmUnsetCommand.h" +#include "cmWhileCommand.h" + +#if defined(CMAKE_BUILD_WITH_CMAKE) +#include "cmAddCompileOptionsCommand.h" +#include "cmAuxSourceDirectoryCommand.h" +#include "cmBuildNameCommand.h" +#include "cmCMakeHostSystemInformationCommand.h" +#include "cmElseIfCommand.h" +#include "cmExportCommand.h" +#include "cmExportLibraryDependenciesCommand.h" +#include "cmFLTKWrapUICommand.h" +#include "cmIncludeExternalMSProjectCommand.h" +#include "cmInstallProgramsCommand.h" +#include "cmLinkLibrariesCommand.h" +#include "cmLoadCacheCommand.h" +#include "cmLoadCommandCommand.h" +#include "cmOutputRequiredFilesCommand.h" +#include "cmQTWrapCPPCommand.h" +#include "cmQTWrapUICommand.h" +#include "cmRemoveCommand.h" +#include "cmRemoveDefinitionsCommand.h" +#include "cmSourceGroupCommand.h" +#include "cmSubdirDependsCommand.h" +#include "cmTargetCompileDefinitionsCommand.h" +#include "cmTargetCompileFeaturesCommand.h" +#include "cmTargetCompileOptionsCommand.h" +#include "cmTargetIncludeDirectoriesCommand.h" +#include "cmTargetPropCommandBase.h" +#include "cmTargetSourcesCommand.h" +#include "cmUseMangledMesaCommand.h" +#include "cmUtilitySourceCommand.h" +#include "cmVariableRequiresCommand.h" +#include "cmVariableWatchCommand.h" +#include "cmWriteFileCommand.h" +#endif + +std::vector<cmCommand*> GetPredefinedCommands() +{ + std::vector<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 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 cmCMakePolicyCommand); + commands.push_back(new cmConfigureFileCommand); + commands.push_back(new cmContinueCommand); + commands.push_back(new cmCreateTestSourceList); + commands.push_back(new cmDefinePropertyCommand); + commands.push_back(new cmElseCommand); + commands.push_back(new cmEnableLanguageCommand); + commands.push_back(new cmEnableTestingCommand); + commands.push_back(new cmEndForEachCommand); + commands.push_back(new cmEndFunctionCommand); + commands.push_back(new cmEndIfCommand); + commands.push_back(new cmEndMacroCommand); + commands.push_back(new cmEndWhileCommand); + commands.push_back(new cmExecProgramCommand); + commands.push_back(new cmExecuteProcessCommand); + 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 cmFunctionCommand); + commands.push_back(new cmGetCMakePropertyCommand); + commands.push_back(new cmGetDirectoryPropertyCommand); + commands.push_back(new cmGetFilenameComponentCommand); + commands.push_back(new cmGetPropertyCommand); + commands.push_back(new cmGetSourceFilePropertyCommand); + commands.push_back(new cmGetTargetPropertyCommand); + commands.push_back(new cmGetTestPropertyCommand); + commands.push_back(new cmIfCommand); + commands.push_back(new cmIncludeCommand); + commands.push_back(new cmIncludeDirectoryCommand); + commands.push_back(new cmIncludeRegularExpressionCommand); + commands.push_back(new cmInstallCommand); + commands.push_back(new cmInstallFilesCommand); + commands.push_back(new cmInstallTargetsCommand); + commands.push_back(new cmLinkDirectoriesCommand); + commands.push_back(new cmListCommand); + commands.push_back(new cmMacroCommand); + commands.push_back(new cmMakeDirectoryCommand); + commands.push_back(new cmMarkAsAdvancedCommand); + commands.push_back(new cmMathCommand); + commands.push_back(new cmMessageCommand); + commands.push_back(new cmOptionCommand); + commands.push_back(new cmParseArgumentsCommand); + commands.push_back(new cmProjectCommand); + commands.push_back(new cmReturnCommand); + commands.push_back(new cmSeparateArgumentsCommand); + commands.push_back(new cmSetCommand); + commands.push_back(new cmSetDirectoryPropertiesCommand); + commands.push_back(new cmSetPropertyCommand); + commands.push_back(new cmSetSourceFilesPropertiesCommand); + commands.push_back(new cmSetTargetPropertiesCommand); + commands.push_back(new cmSetTestsPropertiesCommand); + commands.push_back(new cmSiteNameCommand); + commands.push_back(new cmStringCommand); + commands.push_back(new cmSubdirCommand); + commands.push_back(new cmTargetLinkLibrariesCommand); + commands.push_back(new cmTryCompileCommand); + commands.push_back(new cmTryRunCommand); + commands.push_back(new cmUnsetCommand); + commands.push_back(new cmWhileCommand); + +#if defined(CMAKE_BUILD_WITH_CMAKE) + commands.push_back(new cmAddCompileOptionsCommand); + commands.push_back(new cmAuxSourceDirectoryCommand); + commands.push_back(new cmBuildNameCommand); + commands.push_back(new cmCMakeHostSystemInformationCommand); + commands.push_back(new cmElseIfCommand); + commands.push_back(new cmExportCommand); + commands.push_back(new cmExportLibraryDependenciesCommand); + commands.push_back(new cmFLTKWrapUICommand); + commands.push_back(new cmIncludeExternalMSProjectCommand); + commands.push_back(new cmInstallProgramsCommand); + commands.push_back(new cmLinkLibrariesCommand); + commands.push_back(new cmLoadCacheCommand); + commands.push_back(new cmLoadCommandCommand); + commands.push_back(new cmOutputRequiredFilesCommand); + commands.push_back(new cmQTWrapCPPCommand); + commands.push_back(new cmQTWrapUICommand); + commands.push_back(new cmRemoveCommand); + commands.push_back(new cmRemoveDefinitionsCommand); + commands.push_back(new cmSourceGroupCommand); + commands.push_back(new cmSubdirDependsCommand); + commands.push_back(new cmTargetCompileDefinitionsCommand); + commands.push_back(new cmTargetCompileFeaturesCommand); + commands.push_back(new cmTargetCompileOptionsCommand); + commands.push_back(new cmTargetIncludeDirectoriesCommand); + commands.push_back(new cmTargetSourcesCommand); + commands.push_back(new cmUseMangledMesaCommand); + commands.push_back(new cmUtilitySourceCommand); + commands.push_back(new cmVariableRequiresCommand); + commands.push_back(new cmVariableWatchCommand); + commands.push_back(new cmWriteFileCommand); +#endif + + return commands; +} diff --git a/Source/cmCommands.cxx.in b/Source/cmCommands.cxx.in deleted file mode 100644 index 9eddf30..0000000 --- a/Source/cmCommands.cxx.in +++ /dev/null @@ -1,10 +0,0 @@ -/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying - file Copyright.txt or https://cmake.org/licensing for details. */ -#include "cmCommands.h" - -@COMMAND_INCLUDES@ - -void GetPredefinedCommands(std::vector<cmCommand*>& commands) -{ -@NEW_COMMANDS@ -} diff --git a/Source/cmCommands.h b/Source/cmCommands.h index c2a59b8..649dea6 100644 --- a/Source/cmCommands.h +++ b/Source/cmCommands.h @@ -10,13 +10,9 @@ class cmCommand; /** * Global function to return all compiled in commands. - * To add a new command edit cmCommands.cxx or cmBootstrapCommands[12].cxx - * and add your command. - * It is up to the caller to delete the commands created by this - * call. + * To add a new command edit cmCommands.cxx and add your command. + * It is up to the caller to delete the commands created by this call. */ -void GetBootstrapCommands1(std::vector<cmCommand*>& commands); -void GetBootstrapCommands2(std::vector<cmCommand*>& commands); -void GetPredefinedCommands(std::vector<cmCommand*>& commands); +std::vector<cmCommand*> GetPredefinedCommands(); #endif diff --git a/Source/cmCommandsForBootstrap.cxx b/Source/cmCommandsForBootstrap.cxx deleted file mode 100644 index 1b3bf51..0000000 --- a/Source/cmCommandsForBootstrap.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying - file Copyright.txt or https://cmake.org/licensing for details. */ -#include "cmCommands.h" - -void GetPredefinedCommands(std::vector<cmCommand*>&) -{ -} diff --git a/Source/cmConditionEvaluator.cxx b/Source/cmConditionEvaluator.cxx index 4c0b649..7d98e73 100644 --- a/Source/cmConditionEvaluator.cxx +++ b/Source/cmConditionEvaluator.cxx @@ -222,7 +222,7 @@ bool cmConditionEvaluator::GetBooleanValue( double d = strtod(arg.c_str(), &end); if (*end == '\0') { // The whole string is a number. Use C conversion to bool. - return d ? true : false; + return static_cast<bool>(d); } } @@ -444,7 +444,7 @@ bool cmConditionEvaluator::HandleLevel1(cmArgumentList& newArgs, std::string&, if (this->IsKeyword(keyCOMMAND, *arg) && argP1 != newArgs.end()) { cmCommand* command = this->Makefile.GetState()->GetCommand(argP1->c_str()); - this->HandlePredicate(command ? true : false, reducible, arg, newArgs, + this->HandlePredicate(command != CM_NULLPTR, reducible, arg, newArgs, argP1, argP2); } // does a policy exist @@ -456,7 +456,7 @@ bool cmConditionEvaluator::HandleLevel1(cmArgumentList& newArgs, std::string&, // does a target exist if (this->IsKeyword(keyTARGET, *arg) && argP1 != newArgs.end()) { this->HandlePredicate( - this->Makefile.FindTargetToUse(argP1->GetValue()) ? true : false, + this->Makefile.FindTargetToUse(argP1->GetValue()) != CM_NULLPTR, reducible, arg, newArgs, argP1, argP2); } // does a test exist @@ -464,7 +464,7 @@ bool cmConditionEvaluator::HandleLevel1(cmArgumentList& newArgs, std::string&, this->Policy64Status != cmPolicies::WARN) { if (this->IsKeyword(keyTEST, *arg) && argP1 != newArgs.end()) { const cmTest* haveTest = this->Makefile.GetTest(argP1->c_str()); - this->HandlePredicate(haveTest ? true : false, reducible, arg, + this->HandlePredicate(haveTest != CM_NULLPTR, reducible, arg, newArgs, argP1, argP2); } } else if (this->Policy64Status == cmPolicies::WARN && @@ -638,8 +638,8 @@ bool cmConditionEvaluator::HandleLevel2(cmArgumentList& newArgs, bool success = cmSystemTools::FileTimeCompare( arg->GetValue(), (argP2)->GetValue(), &fileIsNewer); this->HandleBinaryOp( - (success == false || fileIsNewer == 1 || fileIsNewer == 0), - reducible, arg, newArgs, argP1, argP2); + (!success || fileIsNewer == 1 || fileIsNewer == 0), reducible, arg, + newArgs, argP1, argP2); } if (argP1 != newArgs.end() && argP2 != newArgs.end() && diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx index 6a451f5..0755dce 100644 --- a/Source/cmConfigureFileCommand.cxx +++ b/Source/cmConfigureFileCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmConfigureFileCommand.h" +#include "cmSystemTools.h" + #include <cmsys/RegularExpression.hxx> // cmConfigureFileCommand diff --git a/Source/cmContinueCommand.cxx b/Source/cmContinueCommand.cxx index ce36463..dc3e02c 100644 --- a/Source/cmContinueCommand.cxx +++ b/Source/cmContinueCommand.cxx @@ -2,6 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmContinueCommand.h" +#include "cmExecutionStatus.h" +#include "cmSystemTools.h" + // cmContinueCommand bool cmContinueCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus& status) diff --git a/Source/cmCreateTestSourceList.cxx b/Source/cmCreateTestSourceList.cxx index ec62c5b..b062d4d 100644 --- a/Source/cmCreateTestSourceList.cxx +++ b/Source/cmCreateTestSourceList.cxx @@ -3,6 +3,7 @@ #include "cmCreateTestSourceList.h" #include "cmSourceFile.h" +#include "cmSystemTools.h" // cmCreateTestSourceList bool cmCreateTestSourceList::InitialPass(std::vector<std::string> const& args, diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h index 569b3a2..8dfb9ea 100644 --- a/Source/cmDefinitions.h +++ b/Source/cmDefinitions.h @@ -6,20 +6,11 @@ #include <cmConfigure.h> #include "cmLinkedTree.h" +#include "cm_unordered_map.hxx" #include <string> #include <vector> -#if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP -#include <unordered_map> -#else -#include "cmsys/hash_map.hxx" -#endif -#else -#include <map> -#endif - /** \class cmDefinitions * \brief Store a scope of variable definitions for CMake language. * @@ -85,15 +76,7 @@ private: }; static Def NoDef; -#if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP - typedef std::unordered_map<std::string, Def> MapType; -#else - typedef cmsys::hash_map<std::string, Def> MapType; -#endif -#else - typedef std::map<std::string, Def> MapType; -#endif + typedef CM_UNORDERED_MAP<std::string, Def> MapType; MapType Map; static Def const& GetInternal(const std::string& key, StackIter begin, diff --git a/Source/cmElseIfCommand.cxx b/Source/cmElseIfCommand.cxx index cc3624b..1c32248 100644 --- a/Source/cmElseIfCommand.cxx +++ b/Source/cmElseIfCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmElseIfCommand.h" +class cmExecutionStatus; + bool cmElseIfCommand::InitialPass(std::vector<std::string> const&, cmExecutionStatus&) { diff --git a/Source/cmElseIfCommand.h b/Source/cmElseIfCommand.h index 79484c9..c66d642 100644 --- a/Source/cmElseIfCommand.h +++ b/Source/cmElseIfCommand.h @@ -3,7 +3,14 @@ #ifndef cmElseIfCommand_h #define cmElseIfCommand_h -#include "cmIfCommand.h" +#include <cmConfigure.h> +#include <string> +#include <vector> + +#include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmElseIfCommand * \brief ends an if block diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx index 4fb5998..c9dac35 100644 --- a/Source/cmExportCommand.cxx +++ b/Source/cmExportCommand.cxx @@ -2,15 +2,22 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmExportCommand.h" -#include "cmGeneratedFileStream.h" -#include "cmGlobalGenerator.h" -#include "cmake.h" - -#include <cmsys/Encoding.hxx> #include <cmsys/RegularExpression.hxx> +#include <map> +#include <sstream> #include "cmExportBuildAndroidMKGenerator.h" #include "cmExportBuildFileGenerator.h" +#include "cmExportSetMap.h" +#include "cmGeneratedFileStream.h" +#include "cmGlobalGenerator.h" +#include "cmMakefile.h" +#include "cmState.h" +#include "cmSystemTools.h" +#include "cmTarget.h" +#include "cmake.h" + +class cmExecutionStatus; #if defined(__HAIKU__) #include <FindDirectory.h> @@ -271,6 +278,7 @@ bool cmExportCommand::HandlePackage(std::vector<std::string> const& args) #if defined(_WIN32) && !defined(__CYGWIN__) #include <windows.h> + #undef GetCurrentDirectory void cmExportCommand::ReportRegistryError(std::string const& msg, std::string const& key, long err) diff --git a/Source/cmExportCommand.h b/Source/cmExportCommand.h index 52996d0..41c3291 100644 --- a/Source/cmExportCommand.h +++ b/Source/cmExportCommand.h @@ -3,9 +3,15 @@ #ifndef cmExportCommand_h #define cmExportCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmCommandArgumentsHelper.h" +#include "cmTypeMacro.h" -class cmExportBuildFileGenerator; +class cmExecutionStatus; class cmExportSet; /** \class cmExportLibraryDependenciesCommand diff --git a/Source/cmExportLibraryDependenciesCommand.cxx b/Source/cmExportLibraryDependenciesCommand.cxx index 66b77a6..bf1ea01 100644 --- a/Source/cmExportLibraryDependenciesCommand.cxx +++ b/Source/cmExportLibraryDependenciesCommand.cxx @@ -2,12 +2,20 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmExportLibraryDependenciesCommand.h" +#include <cm_auto_ptr.hxx> +#include <cmsys/FStream.hxx> + #include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" -#include "cmVersion.h" +#include "cmMakefile.h" +#include "cmPolicies.h" +#include "cmState.h" +#include "cmSystemTools.h" +#include "cmTarget.h" +#include "cmTargetLinkLibraryType.h" #include "cmake.h" -#include <cm_auto_ptr.hxx> +class cmExecutionStatus; bool cmExportLibraryDependenciesCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmExportLibraryDependenciesCommand.h b/Source/cmExportLibraryDependenciesCommand.h index 1d8f330..2f6ad65 100644 --- a/Source/cmExportLibraryDependenciesCommand.h +++ b/Source/cmExportLibraryDependenciesCommand.h @@ -3,7 +3,14 @@ #ifndef cmExportLibraryDependenciesCommand_h #define cmExportLibraryDependenciesCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; class cmExportLibraryDependenciesCommand : public cmCommand { diff --git a/Source/cmFLTKWrapUICommand.cxx b/Source/cmFLTKWrapUICommand.cxx index 5f621f1..1f0ce8d 100644 --- a/Source/cmFLTKWrapUICommand.cxx +++ b/Source/cmFLTKWrapUICommand.cxx @@ -2,7 +2,15 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmFLTKWrapUICommand.h" +#include <stddef.h> + +#include "cmCustomCommandLines.h" +#include "cmMakefile.h" #include "cmSourceFile.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; +class cmTarget; // cmFLTKWrapUICommand bool cmFLTKWrapUICommand::InitialPass(std::vector<std::string> const& args, diff --git a/Source/cmFLTKWrapUICommand.h b/Source/cmFLTKWrapUICommand.h index 8807328..5559854 100644 --- a/Source/cmFLTKWrapUICommand.h +++ b/Source/cmFLTKWrapUICommand.h @@ -3,7 +3,15 @@ #ifndef cmFLTKWrapUICommand_h #define cmFLTKWrapUICommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; +class cmSourceFile; /** \class cmFLTKWrapUICommand * \brief Create .h and .cxx files rules for FLTK user interfaces files diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 8dd204b..6b5870b 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -2449,18 +2449,14 @@ public: { } - ~cURLEasyGuard(void) + ~cURLEasyGuard() { if (this->Easy) { ::curl_easy_cleanup(this->Easy); } } - inline void release(void) - { - this->Easy = CM_NULLPTR; - return; - } + void release() { this->Easy = CM_NULLPTR; } private: ::CURL* Easy; diff --git a/Source/cmFileTimeComparison.cxx b/Source/cmFileTimeComparison.cxx index a6c9cd0..55d8c2a 100644 --- a/Source/cmFileTimeComparison.cxx +++ b/Source/cmFileTimeComparison.cxx @@ -7,14 +7,7 @@ #include <time.h> #include <utility> -// Use a hash table to avoid duplicate file time checks from disk. -#if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP -#include <unordered_map> -#else -#include <cmsys/hash_map.hxx> -#endif -#endif +#include "cm_unordered_map.hxx" // Use a platform-specific API to get file times efficiently. #if !defined(_WIN32) || defined(__CYGWIN__) @@ -35,27 +28,9 @@ public: bool FileTimesDiffer(const char* f1, const char* f2); private: -#if defined(CMAKE_BUILD_WITH_CMAKE) - // Use a hash table to efficiently map from file name to modification time. - class HashString - { - public: - size_t operator()(const std::string& s) const { return h(s.c_str()); } -#ifdef CMake_HAVE_CXX_UNORDERED_MAP - std::hash<const char*> h; -#else - cmsys::hash<const char*> h; -#endif - }; -#ifdef CMake_HAVE_CXX_UNORDERED_MAP - typedef std::unordered_map<std::string, -#else - typedef cmsys::hash_map<std::string, -#endif - cmFileTimeComparison_Type, HashString> + typedef CM_UNORDERED_MAP<std::string, cmFileTimeComparison_Type> FileStatsMap; FileStatsMap Files; -#endif // Internal methods to lookup and compare modification times. inline bool Stat(const char* fname, cmFileTimeComparison_Type* st); @@ -68,7 +43,6 @@ private: bool cmFileTimeComparisonInternal::Stat(const char* fname, cmFileTimeComparison_Type* st) { -#if defined(CMAKE_BUILD_WITH_CMAKE) // Use the stored time if available. cmFileTimeComparisonInternal::FileStatsMap::iterator fit = this->Files.find(fname); @@ -76,7 +50,6 @@ bool cmFileTimeComparisonInternal::Stat(const char* fname, *st = fit->second; return true; } -#endif #if !defined(_WIN32) || defined(__CYGWIN__) // POSIX version. Use the stat function. @@ -97,11 +70,8 @@ bool cmFileTimeComparisonInternal::Stat(const char* fname, *st = fdata.ftLastWriteTime; #endif -#if defined(CMAKE_BUILD_WITH_CMAKE) // Store the time for future use. this->Files[fname] = *st; -#endif - return true; } diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx index ff822b8..118c581 100644 --- a/Source/cmFindBase.cxx +++ b/Source/cmFindBase.cxx @@ -5,6 +5,7 @@ #include "cmAlgorithms.h" #include "cmState.h" #include "cmStateTypes.h" +#include "cmSystemTools.h" cmFindBase::cmFindBase() { @@ -301,7 +302,7 @@ bool cmFindBase::CheckForVariableInCache() cmState* state = this->Makefile->GetState(); const char* cacheEntry = state->GetCacheEntryValue(this->VariableName); bool found = !cmSystemTools::IsNOTFOUND(cacheValue); - bool cached = cacheEntry ? true : false; + bool cached = cacheEntry != CM_NULLPTR; if (found) { // If the user specifies the entry on the command line without a // type we should add the type and docstring but keep the diff --git a/Source/cmFindCommon.cxx b/Source/cmFindCommon.cxx index bd5298d..bc175ff 100644 --- a/Source/cmFindCommon.cxx +++ b/Source/cmFindCommon.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmFindCommon.h" +#include "cmSystemTools.h" + #include <algorithm> #include <functional> diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx index 5d8aaa2..56be0cb 100644 --- a/Source/cmFindLibraryCommand.cxx +++ b/Source/cmFindLibraryCommand.cxx @@ -2,7 +2,11 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmFindLibraryCommand.h" +#include "cmGlobalGenerator.h" #include "cmState.h" +#include "cmSystemTools.h" +#include "cmVersion.h" + #include <cmsys/Directory.hxx> cmFindLibraryCommand::cmFindLibraryCommand() diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 029d422..373b728 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -4,9 +4,12 @@ #include "cmAlgorithms.h" #include "cmState.h" +#include "cmVersion.h" + #include <cmSystemTools.h> #include <cmsys/Directory.hxx> #include <cmsys/Encoding.hxx> +#include <cmsys/FStream.hxx> #include <cmsys/RegularExpression.hxx> #ifdef CMAKE_BUILD_WITH_CMAKE @@ -670,8 +673,8 @@ bool cmFindPackageCommand::HandlePackageMode() bool configFileSetFOUNDFalse = false; if (fileFound) { - if ((this->Makefile->IsDefinitionSet(foundVar)) && - (this->Makefile->IsOn(foundVar) == false)) { + if (this->Makefile->IsDefinitionSet(foundVar) && + !this->Makefile->IsOn(foundVar)) { // by removing Foo_FOUND here if it is FALSE, we don't really change // the situation for the Config file which is about to be included, // but we make it possible to detect later on whether the Config file @@ -690,8 +693,8 @@ bool cmFindPackageCommand::HandlePackageMode() found = true; // Check whether the Config file has set Foo_FOUND to FALSE: - if ((this->Makefile->IsDefinitionSet(foundVar)) && - (this->Makefile->IsOn(foundVar) == false)) { + if (this->Makefile->IsDefinitionSet(foundVar) && + !this->Makefile->IsOn(foundVar)) { // we get here if the Config file has set Foo_FOUND actively to FALSE found = false; configFileSetFOUNDFalse = true; @@ -1413,8 +1416,7 @@ bool cmFindPackageCommand::CheckVersion(std::string const& config_file) // Look for foo-config-version.cmake std::string version_file = version_file_base; version_file += "-version.cmake"; - if ((haveResult == false) && - (cmSystemTools::FileExists(version_file.c_str(), true))) { + if (!haveResult && cmSystemTools::FileExists(version_file.c_str(), true)) { result = this->CheckVersionFile(version_file, version); haveResult = true; } @@ -1422,14 +1424,13 @@ bool cmFindPackageCommand::CheckVersion(std::string const& config_file) // Look for fooConfigVersion.cmake version_file = version_file_base; version_file += "Version.cmake"; - if ((haveResult == false) && - (cmSystemTools::FileExists(version_file.c_str(), true))) { + if (!haveResult && cmSystemTools::FileExists(version_file.c_str(), true)) { result = this->CheckVersionFile(version_file, version); haveResult = true; } // If no version was requested a versionless package is acceptable. - if ((haveResult == false) && (this->Version.empty())) { + if (!haveResult && this->Version.empty()) { result = true; } diff --git a/Source/cmFindPathCommand.cxx b/Source/cmFindPathCommand.cxx index 7d37185..66dc5d7 100644 --- a/Source/cmFindPathCommand.cxx +++ b/Source/cmFindPathCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmFindPathCommand.h" +#include "cmSystemTools.h" + #include <cmsys/Glob.hxx> cmFindPathCommand::cmFindPathCommand() diff --git a/Source/cmFindProgramCommand.cxx b/Source/cmFindProgramCommand.cxx index 9886860..d258c3c 100644 --- a/Source/cmFindProgramCommand.cxx +++ b/Source/cmFindProgramCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmFindProgramCommand.h" +#include "cmSystemTools.h" + #include <stdlib.h> #if defined(__APPLE__) diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx index 987741b..6fbc93d 100644 --- a/Source/cmForEachCommand.cxx +++ b/Source/cmForEachCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmForEachCommand.h" +#include "cmSystemTools.h" + #include <cm_auto_ptr.hxx> cmForEachFunctionBlocker::cmForEachFunctionBlocker(cmMakefile* mf) diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx index 21e0c25..e9d4496 100644 --- a/Source/cmFunctionCommand.cxx +++ b/Source/cmFunctionCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmFunctionCommand.h" +#include "cmState.h" +#include "cmSystemTools.h" #include "cmake.h" // define the class for function commands diff --git a/Source/cmGetCMakePropertyCommand.cxx b/Source/cmGetCMakePropertyCommand.cxx index e5949f0..01b41e8 100644 --- a/Source/cmGetCMakePropertyCommand.cxx +++ b/Source/cmGetCMakePropertyCommand.cxx @@ -4,6 +4,7 @@ #include "cmAlgorithms.h" #include "cmGlobalGenerator.h" +#include "cmState.h" #include "cmStateTypes.h" #include "cmake.h" diff --git a/Source/cmGetDirectoryPropertyCommand.cxx b/Source/cmGetDirectoryPropertyCommand.cxx index 8ebad4e..0670d31 100644 --- a/Source/cmGetDirectoryPropertyCommand.cxx +++ b/Source/cmGetDirectoryPropertyCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmGetDirectoryPropertyCommand.h" +#include "cmGlobalGenerator.h" +#include "cmSystemTools.h" #include "cmake.h" // cmGetDirectoryPropertyCommand diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index d8d47a1..4bf4bd1 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -12,6 +12,7 @@ #include "cmTarget.h" #include "cmTargetDepend.h" #include "cm_codecvt.hxx" +#include "cm_unordered_map.hxx" #include <iosfwd> #include <map> @@ -22,11 +23,6 @@ #if defined(CMAKE_BUILD_WITH_CMAKE) #include "cmFileLockPool.h" -#ifdef CMake_HAVE_CXX_UNORDERED_MAP -#include <unordered_map> -#else -#include <cmsys/hash_map.hxx> -#endif #endif class cmCustomCommandLines; @@ -468,22 +464,9 @@ protected: const char* GetPredefinedTargetsFolder(); private: -#if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP - typedef std::unordered_map<std::string, cmTarget*> TargetMap; - typedef std::unordered_map<std::string, cmGeneratorTarget*> - GeneratorTargetMap; - typedef std::unordered_map<std::string, cmMakefile*> MakefileMap; -#else - typedef cmsys::hash_map<std::string, cmTarget*> TargetMap; - typedef cmsys::hash_map<std::string, cmGeneratorTarget*> GeneratorTargetMap; - typedef cmsys::hash_map<std::string, cmMakefile*> MakefileMap; -#endif -#else - typedef std::map<std::string, cmTarget*> TargetMap; - typedef std::map<std::string, cmGeneratorTarget*> GeneratorTargetMap; - typedef std::map<std::string, cmMakefile*> MakefileMap; -#endif + typedef CM_UNORDERED_MAP<std::string, cmTarget*> TargetMap; + typedef CM_UNORDERED_MAP<std::string, cmGeneratorTarget*> GeneratorTargetMap; + typedef CM_UNORDERED_MAP<std::string, cmMakefile*> MakefileMap; // Map efficiently from target name to cmTarget instance. // Do not use this structure for looping over all targets. // It contains both normal and globally visible imported targets. diff --git a/Source/cmHexFileConverter.cxx b/Source/cmHexFileConverter.cxx index e121ece..db855d2 100644 --- a/Source/cmHexFileConverter.cxx +++ b/Source/cmHexFileConverter.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmHexFileConverter.h" +#include "cmSystemTools.h" + #include <stdio.h> #include <string.h> @@ -204,7 +206,7 @@ bool cmHexFileConverter::TryConvert(const char* inFileName, } else if (type == IntelHex) { success = ConvertIntelHexLine(buf, outFile); } - if (success == false) { + if (!success) { break; } } diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index a2dec55..eb85b16 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -4,6 +4,7 @@ #include "cmOutputConverter.h" #include "cmStringCommand.h" +#include "cmSystemTools.h" #include "cmConditionEvaluator.h" diff --git a/Source/cmIncludeCommand.cxx b/Source/cmIncludeCommand.cxx index acf51a7..e89641f 100644 --- a/Source/cmIncludeCommand.cxx +++ b/Source/cmIncludeCommand.cxx @@ -2,6 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmIncludeCommand.h" +#include "cmGlobalGenerator.h" +#include "cmSystemTools.h" + // cmIncludeCommand bool cmIncludeCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmIncludeDirectoryCommand.cxx b/Source/cmIncludeDirectoryCommand.cxx index f37f1ca..2260366 100644 --- a/Source/cmIncludeDirectoryCommand.cxx +++ b/Source/cmIncludeDirectoryCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmIncludeDirectoryCommand.h" +#include "cmSystemTools.h" + // cmIncludeDirectoryCommand bool cmIncludeDirectoryCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmIncludeExternalMSProjectCommand.cxx b/Source/cmIncludeExternalMSProjectCommand.cxx index d598722..e7e9402 100644 --- a/Source/cmIncludeExternalMSProjectCommand.cxx +++ b/Source/cmIncludeExternalMSProjectCommand.cxx @@ -2,6 +2,12 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmIncludeExternalMSProjectCommand.h" +#ifdef _WIN32 +#include "cmSystemTools.h" +#endif + +class cmExecutionStatus; + // cmIncludeExternalMSProjectCommand bool cmIncludeExternalMSProjectCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmIncludeExternalMSProjectCommand.h b/Source/cmIncludeExternalMSProjectCommand.h index 4f8ec81..2f95589 100644 --- a/Source/cmIncludeExternalMSProjectCommand.h +++ b/Source/cmIncludeExternalMSProjectCommand.h @@ -3,7 +3,14 @@ #ifndef cmIncludeExternalMSProjectCommand_h #define cmIncludeExternalMSProjectCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmIncludeExternalMSProjectCommand * \brief Specify an external MS project file for inclusion in the workspace. diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index d85748e..476755a 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -3,12 +3,14 @@ #include "cmInstallCommand.h" #include "cmExportSet.h" +#include "cmGlobalGenerator.h" #include "cmInstallCommandArguments.h" #include "cmInstallDirectoryGenerator.h" #include "cmInstallExportGenerator.h" #include "cmInstallFilesGenerator.h" #include "cmInstallScriptGenerator.h" #include "cmInstallTargetGenerator.h" +#include "cmSystemTools.h" #include "cmTargetExport.h" #include <cmsys/Glob.hxx> diff --git a/Source/cmInstallFilesCommand.cxx b/Source/cmInstallFilesCommand.cxx index f072ff5..50f97e9 100644 --- a/Source/cmInstallFilesCommand.cxx +++ b/Source/cmInstallFilesCommand.cxx @@ -2,7 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmInstallFilesCommand.h" +#include "cmGlobalGenerator.h" #include "cmInstallFilesGenerator.h" +#include "cmSystemTools.h" // cmExecutableCommand bool cmInstallFilesCommand::InitialPass(std::vector<std::string> const& args, diff --git a/Source/cmInstallProgramsCommand.cxx b/Source/cmInstallProgramsCommand.cxx index bb2b61f..5ee81fb 100644 --- a/Source/cmInstallProgramsCommand.cxx +++ b/Source/cmInstallProgramsCommand.cxx @@ -2,7 +2,15 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmInstallProgramsCommand.h" +#include "cmGeneratorExpression.h" +#include "cmGlobalGenerator.h" #include "cmInstallFilesGenerator.h" +#include "cmInstallGenerator.h" +#include "cmMakefile.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; + // cmExecutableCommand bool cmInstallProgramsCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmInstallProgramsCommand.h b/Source/cmInstallProgramsCommand.h index 1fb7d91..235ff1a 100644 --- a/Source/cmInstallProgramsCommand.h +++ b/Source/cmInstallProgramsCommand.h @@ -3,7 +3,14 @@ #ifndef cmInstallProgramsCommand_h #define cmInstallProgramsCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmInstallProgramsCommand * \brief Specifies where to install some programs diff --git a/Source/cmInstallTargetsCommand.cxx b/Source/cmInstallTargetsCommand.cxx index fca0bf1..07f990d 100644 --- a/Source/cmInstallTargetsCommand.cxx +++ b/Source/cmInstallTargetsCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmInstallTargetsCommand.h" +#include "cmGlobalGenerator.h" + // cmExecutableCommand bool cmInstallTargetsCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmLinkDirectoriesCommand.cxx b/Source/cmLinkDirectoriesCommand.cxx index fc6bf29..3a18a43 100644 --- a/Source/cmLinkDirectoriesCommand.cxx +++ b/Source/cmLinkDirectoriesCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmLinkDirectoriesCommand.h" +#include "cmSystemTools.h" + // cmLinkDirectoriesCommand bool cmLinkDirectoriesCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmLinkLibrariesCommand.cxx b/Source/cmLinkLibrariesCommand.cxx index 4202cf5..708ec8c 100644 --- a/Source/cmLinkLibrariesCommand.cxx +++ b/Source/cmLinkLibrariesCommand.cxx @@ -2,6 +2,10 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmLinkLibrariesCommand.h" +#include "cmMakefile.h" + +class cmExecutionStatus; + // cmLinkLibrariesCommand bool cmLinkLibrariesCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmLinkLibrariesCommand.h b/Source/cmLinkLibrariesCommand.h index 75a31c8..71053f5 100644 --- a/Source/cmLinkLibrariesCommand.h +++ b/Source/cmLinkLibrariesCommand.h @@ -3,7 +3,14 @@ #ifndef cmLinkLibrariesCommand_h #define cmLinkLibrariesCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmLinkLibrariesCommand * \brief Specify a list of libraries to link into executables. diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index 98f3aa3..6cc9590 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -3,6 +3,7 @@ #include "cmListCommand.h" #include "cmAlgorithms.h" +#include "cmSystemTools.h" #include <cmsys/RegularExpression.hxx> #include <cmsys/SystemTools.hxx> diff --git a/Source/cmLoadCacheCommand.cxx b/Source/cmLoadCacheCommand.cxx index 49db5b0..2a06cb4 100644 --- a/Source/cmLoadCacheCommand.cxx +++ b/Source/cmLoadCacheCommand.cxx @@ -3,7 +3,13 @@ #include "cmLoadCacheCommand.h" #include <cmsys/FStream.hxx> -#include <cmsys/RegularExpression.hxx> + +#include "cmMakefile.h" +#include "cmState.h" +#include "cmSystemTools.h" +#include "cmake.h" + +class cmExecutionStatus; // cmLoadCacheCommand bool cmLoadCacheCommand::InitialPass(std::vector<std::string> const& args, diff --git a/Source/cmLoadCacheCommand.h b/Source/cmLoadCacheCommand.h index 0b57a61..432ba36 100644 --- a/Source/cmLoadCacheCommand.h +++ b/Source/cmLoadCacheCommand.h @@ -3,7 +3,15 @@ #ifndef cmLoadCacheCommand_h #define cmLoadCacheCommand_h +#include <cmConfigure.h> +#include <set> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmLoadCacheCommand * \brief load a cache file diff --git a/Source/cmLoadCommandCommand.cxx b/Source/cmLoadCommandCommand.cxx index ed4e009..e042b07 100644 --- a/Source/cmLoadCommandCommand.cxx +++ b/Source/cmLoadCommandCommand.cxx @@ -5,16 +5,23 @@ #include "cmCPluginAPI.cxx" #include "cmCPluginAPI.h" #include "cmDynamicLoader.h" +#include "cmMakefile.h" +#include "cmPolicies.h" +#include "cmState.h" +#include "cmSystemTools.h" -#include <cmsys/DynamicLoader.hxx> +class cmExecutionStatus; +#include <signal.h> +#include <sstream> +#include <stdio.h> #include <stdlib.h> +#include <string.h> #ifdef __QNX__ #include <malloc.h> /* for malloc/free on QNX */ #endif -#include <signal.h> extern "C" void TrapsForSignalsCFunction(int sig); // a class for loadabple commands @@ -57,7 +64,7 @@ public: void FinalPass() CM_OVERRIDE; bool HasFinalPass() const CM_OVERRIDE { - return this->info.FinalPass ? true : false; + return this->info.FinalPass != CM_NULLPTR; } /** diff --git a/Source/cmLoadCommandCommand.h b/Source/cmLoadCommandCommand.h index 9628464..6c893fc 100644 --- a/Source/cmLoadCommandCommand.h +++ b/Source/cmLoadCommandCommand.h @@ -3,7 +3,14 @@ #ifndef cmLoadCommandCommand_h #define cmLoadCommandCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; class cmLoadCommandCommand : public cmCommand { diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index a8446d9..9bfc70b 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -3,6 +3,8 @@ #include "cmMacroCommand.h" #include "cmAlgorithms.h" +#include "cmState.h" +#include "cmSystemTools.h" #include "cmake.h" // define the class for macro commands diff --git a/Source/cmMakeDirectoryCommand.cxx b/Source/cmMakeDirectoryCommand.cxx index e0011bd..fda9eea 100644 --- a/Source/cmMakeDirectoryCommand.cxx +++ b/Source/cmMakeDirectoryCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmMakeDirectoryCommand.h" +#include "cmSystemTools.h" + // cmMakeDirectoryCommand bool cmMakeDirectoryCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index b61e81b..3067f2c 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -12,6 +12,7 @@ #include "cmStateSnapshot.h" #include "cmTarget.h" #include "cmTargetLinkLibraryType.h" +#include "cm_unordered_map.hxx" #include "cmake.h" #if defined(CMAKE_BUILD_WITH_CMAKE) @@ -27,14 +28,6 @@ #include <string> #include <vector> -#if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP -#include <unordered_map> -#else -#include <cmsys/hash_map.hxx> -#endif -#endif - class cmCommand; class cmCompiledGeneratorExpression; class cmCustomCommandLines; @@ -783,15 +776,6 @@ protected: // libraries, classes, and executables mutable cmTargets Targets; -#if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP - typedef std::unordered_map<std::string, cmTarget*> TargetMap; -#else - typedef cmsys::hash_map<std::string, cmTarget*> TargetMap; -#endif -#else - typedef std::map<std::string, cmTarget*> TargetMap; -#endif std::map<std::string, std::string> AliasTargets; std::vector<cmSourceFile*> SourceFiles; @@ -863,6 +847,7 @@ private: friend class cmParseFileScope; std::vector<cmTarget*> ImportedTargetsOwned; + typedef CM_UNORDERED_MAP<std::string, cmTarget*> TargetMap; TargetMap ImportedTargets; // Internal policy stack management. @@ -899,16 +884,8 @@ private: */ cmSourceFile* LinearGetSourceFileWithOutput(const std::string& cname) const; -// A map for fast output to input look up. -#if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP - typedef std::unordered_map<std::string, cmSourceFile*> OutputToSourceMap; -#else - typedef cmsys::hash_map<std::string, cmSourceFile*> OutputToSourceMap; -#endif -#else - typedef std::map<std::string, cmSourceFile*> OutputToSourceMap; -#endif + // A map for fast output to input look up. + typedef CM_UNORDERED_MAP<std::string, cmSourceFile*> OutputToSourceMap; OutputToSourceMap OutputToSource; void UpdateOutputToSourceMap(std::vector<std::string> const& outputs, diff --git a/Source/cmMarkAsAdvancedCommand.cxx b/Source/cmMarkAsAdvancedCommand.cxx index 8f9e288..7297193 100644 --- a/Source/cmMarkAsAdvancedCommand.cxx +++ b/Source/cmMarkAsAdvancedCommand.cxx @@ -2,6 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmMarkAsAdvancedCommand.h" +#include "cmState.h" +#include "cmSystemTools.h" + // cmMarkAsAdvancedCommand bool cmMarkAsAdvancedCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmMessageCommand.cxx b/Source/cmMessageCommand.cxx index 9a83cd9..83d847a 100644 --- a/Source/cmMessageCommand.cxx +++ b/Source/cmMessageCommand.cxx @@ -3,6 +3,7 @@ #include "cmMessageCommand.h" #include "cmMessenger.h" +#include "cmSystemTools.h" // cmLibraryCommand bool cmMessageCommand::InitialPass(std::vector<std::string> const& args, diff --git a/Source/cmOptionCommand.cxx b/Source/cmOptionCommand.cxx index 0186ef2..d6efa2c 100644 --- a/Source/cmOptionCommand.cxx +++ b/Source/cmOptionCommand.cxx @@ -2,6 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmOptionCommand.h" +#include "cmState.h" +#include "cmSystemTools.h" + // cmOptionCommand bool cmOptionCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx index 8b629fe..6ecd942 100644 --- a/Source/cmOutputRequiredFilesCommand.cxx +++ b/Source/cmOutputRequiredFilesCommand.cxx @@ -2,8 +2,18 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmOutputRequiredFilesCommand.h" -#include "cmAlgorithms.h" #include <cmsys/FStream.hxx> +#include <cmsys/RegularExpression.hxx> + +#include "cmAlgorithms.h" +#include "cmGeneratorExpression.h" +#include "cmMakefile.h" +#include "cmPolicies.h" +#include "cmSourceFile.h" +#include "cmSystemTools.h" +#include "cmTarget.h" + +class cmExecutionStatus; /** \class cmDependInformation * \brief Store dependency information for a single source file. diff --git a/Source/cmOutputRequiredFilesCommand.h b/Source/cmOutputRequiredFilesCommand.h index 8b7104b..cb48568 100644 --- a/Source/cmOutputRequiredFilesCommand.h +++ b/Source/cmOutputRequiredFilesCommand.h @@ -3,9 +3,17 @@ #ifndef cmOutputRequiredFilesCommand_h #define cmOutputRequiredFilesCommand_h +#include <cmConfigure.h> +#include <set> +#include <stdio.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" class cmDependInformation; +class cmExecutionStatus; class cmOutputRequiredFilesCommand : public cmCommand { diff --git a/Source/cmParseArgumentsCommand.cxx b/Source/cmParseArgumentsCommand.cxx index 55d71ea..e45e3a5 100644 --- a/Source/cmParseArgumentsCommand.cxx +++ b/Source/cmParseArgumentsCommand.cxx @@ -3,6 +3,7 @@ #include "cmParseArgumentsCommand.h" #include "cmAlgorithms.h" +#include "cmSystemTools.h" static std::string escape_arg(const std::string& arg) { diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index c27da8e..4188661 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmProjectCommand.h" +#include "cmSystemTools.h" + // cmProjectCommand bool cmProjectCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmQTWrapCPPCommand.cxx b/Source/cmQTWrapCPPCommand.cxx index 3a721da..b0ff68d 100644 --- a/Source/cmQTWrapCPPCommand.cxx +++ b/Source/cmQTWrapCPPCommand.cxx @@ -2,6 +2,13 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmQTWrapCPPCommand.h" +#include "cmCustomCommandLines.h" +#include "cmMakefile.h" +#include "cmSourceFile.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; + // cmQTWrapCPPCommand bool cmQTWrapCPPCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmQTWrapCPPCommand.h b/Source/cmQTWrapCPPCommand.h index afcaf69..d07eba0 100644 --- a/Source/cmQTWrapCPPCommand.h +++ b/Source/cmQTWrapCPPCommand.h @@ -3,9 +3,14 @@ #ifndef cmQTWrapCPPCommand_h #define cmQTWrapCPPCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" -#include "cmSourceFile.h" +class cmExecutionStatus; /** \class cmQTWrapCPPCommand * \brief Create moc file rules for Qt classes diff --git a/Source/cmQTWrapUICommand.cxx b/Source/cmQTWrapUICommand.cxx index 3b0f083..052e633 100644 --- a/Source/cmQTWrapUICommand.cxx +++ b/Source/cmQTWrapUICommand.cxx @@ -2,6 +2,13 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmQTWrapUICommand.h" +#include "cmCustomCommandLines.h" +#include "cmMakefile.h" +#include "cmSourceFile.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; + // cmQTWrapUICommand bool cmQTWrapUICommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmQTWrapUICommand.h b/Source/cmQTWrapUICommand.h index 8efa747..9b8c5a0 100644 --- a/Source/cmQTWrapUICommand.h +++ b/Source/cmQTWrapUICommand.h @@ -3,9 +3,14 @@ #ifndef cmQTWrapUICommand_h #define cmQTWrapUICommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" -#include "cmSourceFile.h" +class cmExecutionStatus; /** \class cmQTWrapUICommand * \brief Create .h and .cxx files rules for Qt user interfaces files diff --git a/Source/cmRemoveCommand.cxx b/Source/cmRemoveCommand.cxx index 540f37f..5a52927 100644 --- a/Source/cmRemoveCommand.cxx +++ b/Source/cmRemoveCommand.cxx @@ -2,6 +2,11 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmRemoveCommand.h" +#include "cmMakefile.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; + // cmRemoveCommand bool cmRemoveCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmRemoveCommand.h b/Source/cmRemoveCommand.h index d7b2a65..8d82d6f 100644 --- a/Source/cmRemoveCommand.h +++ b/Source/cmRemoveCommand.h @@ -3,7 +3,14 @@ #ifndef cmRemoveCommand_h #define cmRemoveCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmRemoveCommand * \brief remove command diff --git a/Source/cmRemoveDefinitionsCommand.cxx b/Source/cmRemoveDefinitionsCommand.cxx index cae5072..f5fe2df 100644 --- a/Source/cmRemoveDefinitionsCommand.cxx +++ b/Source/cmRemoveDefinitionsCommand.cxx @@ -2,6 +2,10 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmRemoveDefinitionsCommand.h" +#include "cmMakefile.h" + +class cmExecutionStatus; + // cmRemoveDefinitionsCommand bool cmRemoveDefinitionsCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmRemoveDefinitionsCommand.h b/Source/cmRemoveDefinitionsCommand.h index 67dcfee..6aed8fc 100644 --- a/Source/cmRemoveDefinitionsCommand.h +++ b/Source/cmRemoveDefinitionsCommand.h @@ -3,7 +3,14 @@ #ifndef cmRemoveDefinitionsCommand_h #define cmRemoveDefinitionsCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmRemoveDefinitionsCommand * \brief Specify a list of compiler defines diff --git a/Source/cmReturnCommand.cxx b/Source/cmReturnCommand.cxx index aa056c3..f8b3129 100644 --- a/Source/cmReturnCommand.cxx +++ b/Source/cmReturnCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmReturnCommand.h" +#include "cmExecutionStatus.h" + // cmReturnCommand bool cmReturnCommand::InitialPass(std::vector<std::string> const&, cmExecutionStatus& status) diff --git a/Source/cmSearchPath.cxx b/Source/cmSearchPath.cxx index c34028e..fd3d482 100644 --- a/Source/cmSearchPath.cxx +++ b/Source/cmSearchPath.cxx @@ -4,6 +4,7 @@ #include "cmAlgorithms.h" #include "cmFindCommon.h" +#include "cmSystemTools.h" cmSearchPath::cmSearchPath(cmFindCommon* findCmd) : FC(findCmd) diff --git a/Source/cmSeparateArgumentsCommand.cxx b/Source/cmSeparateArgumentsCommand.cxx index b5c3186..77546a3 100644 --- a/Source/cmSeparateArgumentsCommand.cxx +++ b/Source/cmSeparateArgumentsCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmSeparateArgumentsCommand.h" +#include "cmSystemTools.h" + // cmSeparateArgumentsCommand bool cmSeparateArgumentsCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmSetCommand.cxx b/Source/cmSetCommand.cxx index 65b0e9c..9f59db4 100644 --- a/Source/cmSetCommand.cxx +++ b/Source/cmSetCommand.cxx @@ -2,6 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmSetCommand.h" +#include "cmState.h" +#include "cmSystemTools.h" + // cmSetCommand bool cmSetCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmSetPropertyCommand.cxx b/Source/cmSetPropertyCommand.cxx index 2a4101f..552f918 100644 --- a/Source/cmSetPropertyCommand.cxx +++ b/Source/cmSetPropertyCommand.cxx @@ -2,9 +2,13 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmSetPropertyCommand.h" +#include "cmGlobalGenerator.h" #include "cmSetSourceFilesPropertiesCommand.h" #include "cmSetTargetPropertiesCommand.h" #include "cmSetTestsPropertiesCommand.h" +#include "cmSourceFile.h" +#include "cmState.h" +#include "cmTest.h" cmSetPropertyCommand::cmSetPropertyCommand() { diff --git a/Source/cmSetSourceFilesPropertiesCommand.cxx b/Source/cmSetSourceFilesPropertiesCommand.cxx index 0021589..6a87d6d 100644 --- a/Source/cmSetSourceFilesPropertiesCommand.cxx +++ b/Source/cmSetSourceFilesPropertiesCommand.cxx @@ -3,6 +3,7 @@ #include "cmSetSourceFilesPropertiesCommand.h" #include "cmSourceFile.h" +#include "cmSystemTools.h" // cmSetSourceFilesPropertiesCommand bool cmSetSourceFilesPropertiesCommand::InitialPass( diff --git a/Source/cmSiteNameCommand.cxx b/Source/cmSiteNameCommand.cxx index 7664eca..18c2a3e 100644 --- a/Source/cmSiteNameCommand.cxx +++ b/Source/cmSiteNameCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmSiteNameCommand.h" +#include "cmSystemTools.h" + #include <cmsys/RegularExpression.hxx> // cmSiteNameCommand diff --git a/Source/cmSourceGroupCommand.cxx b/Source/cmSourceGroupCommand.cxx index 2b176b5..ff3ec7f 100644 --- a/Source/cmSourceGroupCommand.cxx +++ b/Source/cmSourceGroupCommand.cxx @@ -2,6 +2,14 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmSourceGroupCommand.h" +#include <sstream> + +#include "cmMakefile.h" +#include "cmSourceGroup.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; + // cmSourceGroupCommand bool cmSourceGroupCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmSourceGroupCommand.h b/Source/cmSourceGroupCommand.h index deee740..86bd61e 100644 --- a/Source/cmSourceGroupCommand.h +++ b/Source/cmSourceGroupCommand.h @@ -3,7 +3,14 @@ #ifndef cmSourceGroupCommand_h #define cmSourceGroupCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmSourceGroupCommand * \brief Adds a cmSourceGroup to the cmMakefile. diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index c73025a..33d22e4 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -3,6 +3,7 @@ #include "cmStringCommand.h" #include "cmCryptoHash.h" +#include "cmSystemTools.h" #include <cmsys/RegularExpression.hxx> #include <cmsys/SystemTools.hxx> diff --git a/Source/cmSubdirCommand.cxx b/Source/cmSubdirCommand.cxx index fe7f659..d502c5f 100644 --- a/Source/cmSubdirCommand.cxx +++ b/Source/cmSubdirCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmSubdirCommand.h" +#include "cmSystemTools.h" + // cmSubdirCommand bool cmSubdirCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmSubdirDependsCommand.cxx b/Source/cmSubdirDependsCommand.cxx index b5b4148..9259836 100644 --- a/Source/cmSubdirDependsCommand.cxx +++ b/Source/cmSubdirDependsCommand.cxx @@ -2,6 +2,10 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmSubdirDependsCommand.h" +#include "cmPolicies.h" + +class cmExecutionStatus; + bool cmSubdirDependsCommand::InitialPass(std::vector<std::string> const&, cmExecutionStatus&) { diff --git a/Source/cmSubdirDependsCommand.h b/Source/cmSubdirDependsCommand.h index 097244d..aa3d2b3 100644 --- a/Source/cmSubdirDependsCommand.h +++ b/Source/cmSubdirDependsCommand.h @@ -3,7 +3,14 @@ #ifndef cmSubdirDependsCommand_h #define cmSubdirDependsCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; class cmSubdirDependsCommand : public cmCommand { diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 929e204..1f035a1 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -12,6 +12,7 @@ #include "cmPropertyMap.h" #include "cmStateTypes.h" #include "cmTargetLinkLibraryType.h" +#include "cm_unordered_map.hxx" #include <iosfwd> #include <map> @@ -20,14 +21,6 @@ #include <utility> #include <vector> -#if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP -#include <unordered_map> -#else -#include <cmsys/hash_map.hxx> -#endif -#endif - class cmMakefile; class cmSourceFile; class cmGlobalGenerator; @@ -324,15 +317,7 @@ private: cmListFileBacktrace Backtrace; }; -#ifdef CMAKE_BUILD_WITH_CMAKE -#ifdef CMake_HAVE_CXX_UNORDERED_MAP -typedef std::unordered_map<std::string, cmTarget> cmTargets; -#else -typedef cmsys::hash_map<std::string, cmTarget> cmTargets; -#endif -#else -typedef std::map<std::string, cmTarget> cmTargets; -#endif +typedef CM_UNORDERED_MAP<std::string, cmTarget> cmTargets; class cmTargetSet : public std::set<std::string> { diff --git a/Source/cmTargetCompileDefinitionsCommand.cxx b/Source/cmTargetCompileDefinitionsCommand.cxx index 9f08ba7..008d1a2 100644 --- a/Source/cmTargetCompileDefinitionsCommand.cxx +++ b/Source/cmTargetCompileDefinitionsCommand.cxx @@ -2,7 +2,14 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmTargetCompileDefinitionsCommand.h" +#include <sstream> + #include "cmAlgorithms.h" +#include "cmMakefile.h" +#include "cmTarget.h" +#include "cmake.h" + +class cmExecutionStatus; bool cmTargetCompileDefinitionsCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmTargetCompileDefinitionsCommand.h b/Source/cmTargetCompileDefinitionsCommand.h index 0aaad4e..766a9c3 100644 --- a/Source/cmTargetCompileDefinitionsCommand.h +++ b/Source/cmTargetCompileDefinitionsCommand.h @@ -3,7 +3,16 @@ #ifndef cmTargetCompileDefinitionsCommand_h #define cmTargetCompileDefinitionsCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmTargetPropCommandBase.h" +#include "cmTypeMacro.h" + +class cmCommand; +class cmExecutionStatus; +class cmTarget; class cmTargetCompileDefinitionsCommand : public cmTargetPropCommandBase { diff --git a/Source/cmTargetCompileFeaturesCommand.cxx b/Source/cmTargetCompileFeaturesCommand.cxx index 7636347..a1c9b82 100644 --- a/Source/cmTargetCompileFeaturesCommand.cxx +++ b/Source/cmTargetCompileFeaturesCommand.cxx @@ -2,7 +2,15 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmTargetCompileFeaturesCommand.h" +#include <algorithm> +#include <sstream> + #include "cmAlgorithms.h" +#include "cmMakefile.h" +#include "cmake.h" + +class cmExecutionStatus; +class cmTarget; bool cmTargetCompileFeaturesCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmTargetCompileFeaturesCommand.h b/Source/cmTargetCompileFeaturesCommand.h index 00c84d7..c599a37 100644 --- a/Source/cmTargetCompileFeaturesCommand.h +++ b/Source/cmTargetCompileFeaturesCommand.h @@ -3,7 +3,16 @@ #ifndef cmTargetCompileFeaturesCommand_h #define cmTargetCompileFeaturesCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmTargetPropCommandBase.h" +#include "cmTypeMacro.h" + +class cmCommand; +class cmExecutionStatus; +class cmTarget; class cmTargetCompileFeaturesCommand : public cmTargetPropCommandBase { diff --git a/Source/cmTargetCompileOptionsCommand.cxx b/Source/cmTargetCompileOptionsCommand.cxx index eb66dd3..a4db55b 100644 --- a/Source/cmTargetCompileOptionsCommand.cxx +++ b/Source/cmTargetCompileOptionsCommand.cxx @@ -2,7 +2,16 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmTargetCompileOptionsCommand.h" +#include <algorithm> +#include <sstream> + #include "cmAlgorithms.h" +#include "cmListFileCache.h" +#include "cmMakefile.h" +#include "cmTarget.h" +#include "cmake.h" + +class cmExecutionStatus; bool cmTargetCompileOptionsCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmTargetCompileOptionsCommand.h b/Source/cmTargetCompileOptionsCommand.h index 06b05a2..7b41352 100644 --- a/Source/cmTargetCompileOptionsCommand.h +++ b/Source/cmTargetCompileOptionsCommand.h @@ -3,7 +3,16 @@ #ifndef cmTargetCompileOptionsCommand_h #define cmTargetCompileOptionsCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmTargetPropCommandBase.h" +#include "cmTypeMacro.h" + +class cmCommand; +class cmExecutionStatus; +class cmTarget; class cmTargetCompileOptionsCommand : public cmTargetPropCommandBase { diff --git a/Source/cmTargetIncludeDirectoriesCommand.cxx b/Source/cmTargetIncludeDirectoriesCommand.cxx index 37b9598..65a3149 100644 --- a/Source/cmTargetIncludeDirectoriesCommand.cxx +++ b/Source/cmTargetIncludeDirectoriesCommand.cxx @@ -2,7 +2,17 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmTargetIncludeDirectoriesCommand.h" +#include <set> +#include <sstream> + #include "cmGeneratorExpression.h" +#include "cmListFileCache.h" +#include "cmMakefile.h" +#include "cmSystemTools.h" +#include "cmTarget.h" +#include "cmake.h" + +class cmExecutionStatus; bool cmTargetIncludeDirectoriesCommand::InitialPass( std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmTargetIncludeDirectoriesCommand.h b/Source/cmTargetIncludeDirectoriesCommand.h index d96b28a..81c0b11 100644 --- a/Source/cmTargetIncludeDirectoriesCommand.h +++ b/Source/cmTargetIncludeDirectoriesCommand.h @@ -3,7 +3,16 @@ #ifndef cmTargetIncludeDirectoriesCommand_h #define cmTargetIncludeDirectoriesCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmTargetPropCommandBase.h" +#include "cmTypeMacro.h" + +class cmCommand; +class cmExecutionStatus; +class cmTarget; class cmTargetIncludeDirectoriesCommand : public cmTargetPropCommandBase { diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx index 804dc5a..9626992 100644 --- a/Source/cmTargetLinkLibrariesCommand.cxx +++ b/Source/cmTargetLinkLibrariesCommand.cxx @@ -3,6 +3,9 @@ #include "cmTargetLinkLibrariesCommand.h" #include "cmGeneratorExpression.h" +#include "cmGlobalGenerator.h" +#include "cmState.h" +#include "cmSystemTools.h" const char* cmTargetLinkLibrariesCommand::LinkLibraryTypeNames[3] = { "general", "debug", "optimized" diff --git a/Source/cmTargetSourcesCommand.cxx b/Source/cmTargetSourcesCommand.cxx index 2170247..13c9a8f 100644 --- a/Source/cmTargetSourcesCommand.cxx +++ b/Source/cmTargetSourcesCommand.cxx @@ -2,7 +2,15 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmTargetSourcesCommand.h" -#include "cmGeneratorExpression.h" +#include <algorithm> +#include <sstream> + +#include "cmAlgorithms.h" +#include "cmMakefile.h" +#include "cmTarget.h" +#include "cmake.h" + +class cmExecutionStatus; bool cmTargetSourcesCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmTargetSourcesCommand.h b/Source/cmTargetSourcesCommand.h index 839f07c..6f4b49f 100644 --- a/Source/cmTargetSourcesCommand.h +++ b/Source/cmTargetSourcesCommand.h @@ -3,7 +3,16 @@ #ifndef cmTargetSourcesCommand_h #define cmTargetSourcesCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmTargetPropCommandBase.h" +#include "cmTypeMacro.h" + +class cmCommand; +class cmExecutionStatus; +class cmTarget; class cmTargetSourcesCommand : public cmTargetPropCommandBase { diff --git a/Source/cmTimestamp.cxx b/Source/cmTimestamp.cxx index 6a8c9c6..9597e09 100644 --- a/Source/cmTimestamp.cxx +++ b/Source/cmTimestamp.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmTimestamp.h" +#include "cmSystemTools.h" + #include <cstdlib> #include <cstring> #include <sstream> diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx index b248489..6787c8e 100644 --- a/Source/cmTryRunCommand.cxx +++ b/Source/cmTryRunCommand.cxx @@ -2,7 +2,10 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmTryRunCommand.h" +#include "cmState.h" +#include "cmSystemTools.h" #include "cmTryCompileCommand.h" + #include <cmsys/FStream.hxx> // cmTryRunCommand diff --git a/Source/cmUnsetCommand.cxx b/Source/cmUnsetCommand.cxx index 746c435..2fea6192 100644 --- a/Source/cmUnsetCommand.cxx +++ b/Source/cmUnsetCommand.cxx @@ -2,6 +2,8 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmUnsetCommand.h" +#include "cmSystemTools.h" + // cmUnsetCommand bool cmUnsetCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmUseMangledMesaCommand.cxx b/Source/cmUseMangledMesaCommand.cxx index e2b6b1a..ffeaa51 100644 --- a/Source/cmUseMangledMesaCommand.cxx +++ b/Source/cmUseMangledMesaCommand.cxx @@ -2,11 +2,14 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmUseMangledMesaCommand.h" -#include "cmSystemTools.h" - #include <cmsys/FStream.hxx> #include <cmsys/RegularExpression.hxx> +#include "cmPolicies.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; + bool cmUseMangledMesaCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) { diff --git a/Source/cmUseMangledMesaCommand.h b/Source/cmUseMangledMesaCommand.h index 3200327..68e77a1 100644 --- a/Source/cmUseMangledMesaCommand.h +++ b/Source/cmUseMangledMesaCommand.h @@ -3,7 +3,14 @@ #ifndef cmUseMangledMesaCommand_h #define cmUseMangledMesaCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; class cmUseMangledMesaCommand : public cmCommand { diff --git a/Source/cmUtilitySourceCommand.cxx b/Source/cmUtilitySourceCommand.cxx index c816114..f98d512 100644 --- a/Source/cmUtilitySourceCommand.cxx +++ b/Source/cmUtilitySourceCommand.cxx @@ -2,7 +2,15 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmUtilitySourceCommand.h" +#include <string.h> + +#include "cmMakefile.h" +#include "cmPolicies.h" +#include "cmState.h" #include "cmState.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; // cmUtilitySourceCommand bool cmUtilitySourceCommand::InitialPass(std::vector<std::string> const& args, diff --git a/Source/cmUtilitySourceCommand.h b/Source/cmUtilitySourceCommand.h index 3c28e11..a8549d1 100644 --- a/Source/cmUtilitySourceCommand.h +++ b/Source/cmUtilitySourceCommand.h @@ -3,7 +3,14 @@ #ifndef cmUtilitySourceCommand_h #define cmUtilitySourceCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; class cmUtilitySourceCommand : public cmCommand { diff --git a/Source/cmVariableRequiresCommand.cxx b/Source/cmVariableRequiresCommand.cxx index 7599551..1eb1f20 100644 --- a/Source/cmVariableRequiresCommand.cxx +++ b/Source/cmVariableRequiresCommand.cxx @@ -2,7 +2,12 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmVariableRequiresCommand.h" +#include "cmMakefile.h" +#include "cmPolicies.h" #include "cmState.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; // cmLibraryCommand bool cmVariableRequiresCommand::InitialPass( diff --git a/Source/cmVariableRequiresCommand.h b/Source/cmVariableRequiresCommand.h index 92878ba..0b6be3b 100644 --- a/Source/cmVariableRequiresCommand.h +++ b/Source/cmVariableRequiresCommand.h @@ -3,7 +3,14 @@ #ifndef cmVariableRequiresCommand_h #define cmVariableRequiresCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; class cmVariableRequiresCommand : public cmCommand { diff --git a/Source/cmVariableWatchCommand.cxx b/Source/cmVariableWatchCommand.cxx index 5c1e00a..90b0b28 100644 --- a/Source/cmVariableWatchCommand.cxx +++ b/Source/cmVariableWatchCommand.cxx @@ -2,7 +2,14 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmVariableWatchCommand.h" +#include <sstream> + +#include "cmExecutionStatus.h" +#include "cmListFileCache.h" +#include "cmMakefile.h" +#include "cmSystemTools.h" #include "cmVariableWatch.h" +#include "cmake.h" struct cmVariableWatchCallbackData { diff --git a/Source/cmVariableWatchCommand.h b/Source/cmVariableWatchCommand.h index 8518fd2..2541ca8 100644 --- a/Source/cmVariableWatchCommand.h +++ b/Source/cmVariableWatchCommand.h @@ -3,7 +3,15 @@ #ifndef cmVariableWatchCommand_h #define cmVariableWatchCommand_h +#include <cmConfigure.h> +#include <set> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmVariableWatchCommand * \brief Watch when the variable changes and invoke command diff --git a/Source/cmWhileCommand.cxx b/Source/cmWhileCommand.cxx index c52ea40..beb59bf 100644 --- a/Source/cmWhileCommand.cxx +++ b/Source/cmWhileCommand.cxx @@ -3,6 +3,7 @@ #include "cmWhileCommand.h" #include "cmConditionEvaluator.h" +#include "cmSystemTools.h" cmWhileFunctionBlocker::cmWhileFunctionBlocker(cmMakefile* mf) : Makefile(mf) diff --git a/Source/cmWriteFileCommand.cxx b/Source/cmWriteFileCommand.cxx index 0bdef0f..b3ac31c 100644 --- a/Source/cmWriteFileCommand.cxx +++ b/Source/cmWriteFileCommand.cxx @@ -8,6 +8,11 @@ // include sys/stat.h after sys/types.h #include <sys/stat.h> +#include "cmMakefile.h" +#include "cmSystemTools.h" + +class cmExecutionStatus; + // cmLibraryCommand bool cmWriteFileCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus&) diff --git a/Source/cmWriteFileCommand.h b/Source/cmWriteFileCommand.h index 76a0536..df7ccc3 100644 --- a/Source/cmWriteFileCommand.h +++ b/Source/cmWriteFileCommand.h @@ -3,7 +3,14 @@ #ifndef cmWriteFileCommand_h #define cmWriteFileCommand_h +#include <cmConfigure.h> +#include <string> +#include <vector> + #include "cmCommand.h" +#include "cmTypeMacro.h" + +class cmExecutionStatus; /** \class cmWriteFileCommand * \brief Writes a message to a file diff --git a/Source/cm_unordered_map.hxx b/Source/cm_unordered_map.hxx new file mode 100644 index 0000000..dc8ca35 --- /dev/null +++ b/Source/cm_unordered_map.hxx @@ -0,0 +1,25 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef CM_UNORDERED_MAP_HXX +#define CM_UNORDERED_MAP_HXX + +#include <cmConfigure.h> + +#if defined(CMake_HAVE_CXX_UNORDERED_MAP) + +#include <unordered_map> +#define CM_UNORDERED_MAP std::unordered_map + +#elif defined(CMAKE_BUILD_WITH_CMAKE) + +#include <cmsys/hash_map.hxx> +#define CM_UNORDERED_MAP cmsys::hash_map + +#else + +#include <map> +#define CM_UNORDERED_MAP std::map + +#endif + +#endif diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 388984f..eb76ca0 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -27,6 +27,7 @@ #if defined(CMAKE_BUILD_WITH_CMAKE) #include "cmGraphVizWriter.h" #include "cmVariableWatch.h" +#include "cm_unordered_map.hxx" #include <cm_jsoncpp_writer.h> #endif @@ -122,11 +123,7 @@ class cmCommand; namespace { #if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP -typedef std::unordered_map<std::string, Json::Value> JsonValueMapType; -#else -typedef cmsys::hash_map<std::string, Json::Value> JsonValueMapType; -#endif +typedef CM_UNORDERED_MAP<std::string, Json::Value> JsonValueMapType; #endif } // namespace @@ -1652,11 +1649,8 @@ const char* cmake::GetCacheDefinition(const std::string& name) const void cmake::AddDefaultCommands() { - std::vector<cmCommand*> commands; - GetBootstrapCommands1(commands); - GetBootstrapCommands2(commands); - GetPredefinedCommands(commands); - for (std::vector<cmCommand*>::iterator i = commands.begin(); + std::vector<cmCommand*> const commands = GetPredefinedCommands(); + for (std::vector<cmCommand*>::const_iterator i = commands.begin(); i != commands.end(); ++i) { this->State->AddCommand(*i); } @@ -240,93 +240,177 @@ CMAKE_UNUSED_SOURCES="\ " CMAKE_CXX_SOURCES="\ - cmake \ - cmakemain \ - cmcmd \ + cmAddCustomCommandCommand \ + cmAddCustomTargetCommand \ + cmAddDefinitionsCommand \ + cmAddDependenciesCommand \ + cmAddExecutableCommand \ + cmAddLibraryCommand \ + cmAddSubDirectoryCommand \ + cmAddTestCommand \ + cmBreakCommand \ + cmBuildCommand \ + cmCMakeMinimumRequired \ + cmCMakePolicyCommand \ + cmCPackPropertiesGenerator \ + cmCacheManager \ + cmCommand \ cmCommandArgumentLexer \ cmCommandArgumentParser \ cmCommandArgumentParserHelper \ + cmCommandArgumentsHelper \ + cmCommands \ cmCommonTargetGenerator \ - cmCPackPropertiesGenerator \ + cmComputeComponentGraph \ + cmComputeLinkDepends \ + cmComputeLinkInformation \ + cmComputeTargetDepends \ + cmConditionEvaluator \ + cmConfigureFileCommand \ + cmContinueCommand \ + cmCoreTryCompile \ + cmCreateTestSourceList \ + cmCustomCommand \ + cmCustomCommandGenerator \ + cmDefinePropertyCommand \ cmDefinitions \ cmDepends \ cmDependsC \ cmDocumentationFormatter \ - cmPolicies \ - cmProperty \ - cmPropertyMap \ - cmPropertyDefinition \ - cmPropertyDefinitionMap \ - cmMakefile \ - cmMessenger \ + cmElseCommand \ + cmEnableLanguageCommand \ + cmEnableTestingCommand \ + cmEndForEachCommand \ + cmEndFunctionCommand \ + cmEndIfCommand \ + cmEndMacroCommand \ + cmEndWhileCommand \ + cmExecProgramCommand \ + cmExecuteProcessCommand \ + cmExpandedCommandArgument \ cmExportBuildFileGenerator \ cmExportFileGenerator \ cmExportInstallFileGenerator \ - cmExportTryCompileFileGenerator \ cmExportSet \ cmExportSetMap \ + cmExportTryCompileFileGenerator \ + cmExprLexer \ + cmExprParser \ + cmExprParserHelper \ cmExternalMakefileProjectGenerator \ - cmGeneratorExpressionEvaluationFile \ + cmFileCommand \ + cmFileTimeComparison \ + cmFindBase \ + cmFindCommon \ + cmFindFileCommand \ + cmFindLibraryCommand \ + cmFindPackageCommand \ + cmFindPathCommand \ + cmFindProgramCommand \ + cmForEachCommand \ + cmFunctionCommand \ cmGeneratedFileStream \ - cmGeneratorTarget \ + cmGeneratorExpression \ cmGeneratorExpressionContext \ cmGeneratorExpressionDAGChecker \ + cmGeneratorExpressionEvaluationFile \ cmGeneratorExpressionEvaluator \ cmGeneratorExpressionLexer \ cmGeneratorExpressionNode \ cmGeneratorExpressionParser \ - cmGeneratorExpression \ + cmGeneratorTarget \ + cmGetCMakePropertyCommand \ + cmGetDirectoryPropertyCommand \ + cmGetFilenameComponentCommand \ + cmGetPropertyCommand \ + cmGetSourceFilePropertyCommand \ + cmGetTargetPropertyCommand \ + cmGetTestPropertyCommand \ cmGlobalCommonGenerator \ cmGlobalGenerator \ + cmGlobalUnixMakefileGenerator3 \ + cmHexFileConverter \ + cmIfCommand \ + cmIncludeCommand \ + cmIncludeDirectoryCommand \ + cmIncludeRegularExpressionCommand \ + cmInstallCommand \ + cmInstallCommandArguments \ cmInstallDirectoryGenerator \ - cmLocalCommonGenerator \ - cmLocalGenerator \ - cmRulePlaceholderExpander \ - cmInstalledFile \ - cmInstallGenerator \ cmInstallExportGenerator \ + cmInstallFilesCommand \ cmInstallFilesGenerator \ + cmInstallGenerator \ cmInstallScriptGenerator \ cmInstallTargetGenerator \ - cmScriptGenerator \ - cmSourceFile \ - cmSourceFileLocation \ - cmState \ - cmStateDirectory \ - cmStateSnapshot \ - cmSystemTools \ - cmTestGenerator \ - cmVersion \ - cmFileTimeComparison \ - cmGlobalUnixMakefileGenerator3 \ - cmLocalUnixMakefileGenerator3 \ + cmInstallTargetsCommand \ + cmInstalledFile \ + cmLinkDirectoriesCommand \ cmLinkLineComputer \ + cmListCommand \ + cmListFileCache \ + cmLocalCommonGenerator \ + cmLocalGenerator \ + cmLocalUnixMakefileGenerator3 \ cmMSVC60LinkLineComputer \ + cmMacroCommand \ + cmMakeDirectoryCommand \ + cmMakefile \ cmMakefileExecutableTargetGenerator \ cmMakefileLibraryTargetGenerator \ cmMakefileTargetGenerator \ cmMakefileUtilityTargetGenerator \ - cmOutputConverter \ - cmOSXBundleGenerator \ + cmMarkAsAdvancedCommand \ + cmMathCommand \ + cmMessageCommand \ + cmMessenger \ cmNewLineStyle \ - cmBootstrapCommands1 \ - cmBootstrapCommands2 \ - cmCommandsForBootstrap \ + cmOSXBundleGenerator \ + cmOptionCommand \ + cmOrderDirectories \ + cmOutputConverter \ + cmParseArgumentsCommand \ + cmPathLabel \ + cmPolicies \ + cmProjectCommand \ + cmProperty \ + cmPropertyDefinition \ + cmPropertyDefinitionMap \ + cmPropertyMap \ + cmReturnCommand \ + cmRulePlaceholderExpander \ + cmScriptGenerator \ + cmSearchPath \ + cmSeparateArgumentsCommand \ + cmSetCommand \ + cmSetDirectoryPropertiesCommand \ + cmSetPropertyCommand \ + cmSetSourceFilesPropertiesCommand \ + cmSetTargetPropertiesCommand \ + cmSetTestsPropertiesCommand \ + cmSiteNameCommand \ + cmSourceFile \ + cmSourceFileLocation \ + cmState \ + cmStateDirectory \ + cmStateSnapshot \ + cmStringCommand \ + cmSubdirCommand \ + cmSystemTools \ cmTarget \ + cmTargetLinkLibrariesCommand \ cmTargetPropertyComputer \ cmTest \ - cmCustomCommand \ - cmCustomCommandGenerator \ - cmCacheManager \ - cmListFileCache \ - cmComputeLinkDepends \ - cmComputeLinkInformation \ - cmOrderDirectories \ - cmComputeTargetDepends \ - cmComputeComponentGraph \ - cmExprLexer \ - cmExprParser \ - cmExprParserHelper \ + cmTestGenerator \ + cmTimestamp \ + cmTryCompileCommand \ + cmTryRunCommand \ + cmUnsetCommand \ + cmVersion \ + cmWhileCommand \ + cmake \ + cmakemain \ + cmcmd \ " if ${cmake_system_mingw}; then @@ -1322,16 +1406,6 @@ for a in ${CMAKE_CXX_SOURCES} ${CMAKE_C_SOURCES} ${KWSYS_CXX_SOURCES} ${KWSYS_C_ objs="${objs} ${a}.o" done -# Generate dependencies for cmBootstrapCommands1.cxx -for file in `grep "#include.*cm[^.]*.cxx" "${cmake_source_dir}/Source/cmBootstrapCommands1.cxx" | sed "s/.* \"\(.*\)\"/\1/"`; do - cmBootstrapCommands1Deps="${cmBootstrapCommands1Deps} `cmake_escape "${cmake_source_dir}/Source/$file"`" -done -cmBootstrapCommands1Deps=`echo $cmBootstrapCommands1Deps` -for file in `grep "#include.*cm[^.]*.cxx" "${cmake_source_dir}/Source/cmBootstrapCommands2.cxx" | sed "s/.* \"\(.*\)\"/\1/"`; do - cmBootstrapCommands2Deps="${cmBootstrapCommands2Deps} `cmake_escape "${cmake_source_dir}/Source/$file"`" -done -cmBootstrapCommands2Deps=`echo $cmBootstrapCommands2Deps` - if [ "x${cmake_ansi_cxx_flags}" != "x" ]; then cmake_cxx_flags="${cmake_ansi_cxx_flags} ${cmake_cxx_flags}" fi |