| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 | /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying   file Copyright.txt or https://cmake.org/licensing for details.  */#include "cm_memory.hxx"#include "cmCommands.h"#include "cmPolicies.h"#include "cmState.h"#include "cmAddCompileDefinitionsCommand.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 "cmCommand.h"#include "cmConfigureFileCommand.h"#include "cmContinueCommand.h"#include "cmCreateTestSourceList.h"#include "cmDefinePropertyCommand.h"#include "cmEnableLanguageCommand.h"#include "cmEnableTestingCommand.h"#include "cmExecProgramCommand.h"#include "cmExecuteProcessCommand.h"#include "cmFileCommand.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 "cmIfCommand.h"#include "cmIncludeCommand.h"#include "cmIncludeDirectoryCommand.h"#include "cmIncludeGuardCommand.h"#include "cmIncludeRegularExpressionCommand.h"#include "cmInstallCommand.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 "cmProjectCommand.h"#include "cmReturnCommand.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 "cmTargetCompileDefinitionsCommand.h"#include "cmTargetCompileFeaturesCommand.h"#include "cmTargetCompileOptionsCommand.h"#include "cmTargetIncludeDirectoriesCommand.h"#include "cmTargetLinkLibrariesCommand.h"#include "cmTargetSourcesCommand.h"#include "cmTryCompileCommand.h"#include "cmTryRunCommand.h"#include "cmUnsetCommand.h"#include "cmWhileCommand.h"#if !defined(CMAKE_BOOTSTRAP)#  include "cmAddCompileOptionsCommand.h"#  include "cmAddLinkOptionsCommand.h"#  include "cmAuxSourceDirectoryCommand.h"#  include "cmBuildNameCommand.h"#  include "cmCMakeHostSystemInformationCommand.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 "cmTargetLinkDirectoriesCommand.h"#  include "cmTargetLinkOptionsCommand.h"#  include "cmUseMangledMesaCommand.h"#  include "cmUtilitySourceCommand.h"#  include "cmVariableRequiresCommand.h"#  include "cmVariableWatchCommand.h"#  include "cmWriteFileCommand.h"#endifvoid GetScriptingCommands(cmState* state){  state->AddBuiltinCommand("break", cmBreakCommand);  state->AddBuiltinCommand("cmake_minimum_required", cmCMakeMinimumRequired);  state->AddBuiltinCommand("cmake_policy",                           cm::make_unique<cmCMakePolicyCommand>());  state->AddBuiltinCommand("configure_file", cmConfigureFileCommand);  state->AddBuiltinCommand("continue", cmContinueCommand);  state->AddBuiltinCommand("exec_program", cmExecProgramCommand);  state->AddBuiltinCommand("execute_process", cmExecuteProcessCommand);  state->AddBuiltinCommand("file", cmFileCommand);  state->AddBuiltinCommand("find_file", cm::make_unique<cmFindFileCommand>());  state->AddBuiltinCommand("find_library",                           cm::make_unique<cmFindLibraryCommand>());  state->AddBuiltinCommand("find_package",                           cm::make_unique<cmFindPackageCommand>());  state->AddBuiltinCommand("find_path", cm::make_unique<cmFindPathCommand>());  state->AddBuiltinCommand("find_program",                           cm::make_unique<cmFindProgramCommand>());  state->AddBuiltinCommand("foreach", cmForEachCommand);  state->AddBuiltinCommand("function", cmFunctionCommand);  state->AddBuiltinCommand("get_cmake_property", cmGetCMakePropertyCommand);  state->AddBuiltinCommand("get_directory_property",                           cmGetDirectoryPropertyCommand);  state->AddBuiltinCommand("get_filename_component",                           cmGetFilenameComponentCommand);  state->AddBuiltinCommand("get_property", cmGetPropertyCommand);  state->AddBuiltinCommand("if", cmIfCommand);  state->AddBuiltinCommand("include", cmIncludeCommand);  state->AddBuiltinCommand("include_guard", cmIncludeGuardCommand);  state->AddBuiltinCommand("list", cm::make_unique<cmListCommand>());  state->AddBuiltinCommand("macro", cmMacroCommand);  state->AddBuiltinCommand("make_directory",                           cm::make_unique<cmMakeDirectoryCommand>());  state->AddBuiltinCommand("mark_as_advanced",                           cm::make_unique<cmMarkAsAdvancedCommand>());  state->AddBuiltinCommand("math", cm::make_unique<cmMathCommand>());  state->AddBuiltinCommand("message", cm::make_unique<cmMessageCommand>());  state->AddBuiltinCommand("option", cm::make_unique<cmOptionCommand>());  state->AddBuiltinCommand("cmake_parse_arguments",                           cm::make_unique<cmParseArgumentsCommand>());  state->AddBuiltinCommand("return", cmReturnCommand);  state->AddBuiltinCommand("separate_arguments",                           cm::make_unique<cmSeparateArgumentsCommand>());  state->AddBuiltinCommand("set", cm::make_unique<cmSetCommand>());  state->AddBuiltinCommand("set_directory_properties",                           cm::make_unique<cmSetDirectoryPropertiesCommand>());  state->AddBuiltinCommand("set_property",                           cm::make_unique<cmSetPropertyCommand>());  state->AddBuiltinCommand("site_name", cm::make_unique<cmSiteNameCommand>());  state->AddBuiltinCommand("string", cm::make_unique<cmStringCommand>());  state->AddBuiltinCommand("unset", cm::make_unique<cmUnsetCommand>());  state->AddBuiltinCommand("while", cmWhileCommand);  state->AddUnexpectedCommand(    "else",    "An ELSE command was found outside of a proper "    "IF ENDIF structure. Or its arguments did not match "    "the opening IF command.");  state->AddUnexpectedCommand(    "elseif",    "An ELSEIF command was found outside of a proper "    "IF ENDIF structure.");  state->AddUnexpectedCommand(    "endforeach",    "An ENDFOREACH command was found outside of a proper "    "FOREACH ENDFOREACH structure. Or its arguments did "    "not match the opening FOREACH command.");  state->AddUnexpectedCommand(    "endfunction",    "An ENDFUNCTION command was found outside of a proper "    "FUNCTION ENDFUNCTION structure. Or its arguments did not "    "match the opening FUNCTION command.");  state->AddUnexpectedCommand(    "endif",    "An ENDIF command was found outside of a proper "    "IF ENDIF structure. Or its arguments did not match "    "the opening IF command.");  state->AddUnexpectedCommand(    "endmacro",    "An ENDMACRO command was found outside of a proper "    "MACRO ENDMACRO structure. Or its arguments did not "    "match the opening MACRO command.");  state->AddUnexpectedCommand(    "endwhile",    "An ENDWHILE command was found outside of a proper "    "WHILE ENDWHILE structure. Or its arguments did not "    "match the opening WHILE command.");#if !defined(CMAKE_BOOTSTRAP)  state->AddBuiltinCommand(    "cmake_host_system_information",    cm::make_unique<cmCMakeHostSystemInformationCommand>());  state->AddBuiltinCommand("remove", cm::make_unique<cmRemoveCommand>());  state->AddBuiltinCommand("variable_watch",                           cm::make_unique<cmVariableWatchCommand>());  state->AddBuiltinCommand("write_file",                           cm::make_unique<cmWriteFileCommand>());  state->AddDisallowedCommand(    "build_name", cm::make_unique<cmBuildNameCommand>(), cmPolicies::CMP0036,    "The build_name command should not be called; see CMP0036.");  state->AddDisallowedCommand(    "use_mangled_mesa", cm::make_unique<cmUseMangledMesaCommand>(),    cmPolicies::CMP0030,    "The use_mangled_mesa command should not be called; see CMP0030.");#endif}void GetProjectCommands(cmState* state){  state->AddBuiltinCommand("add_custom_command", cmAddCustomCommandCommand);  state->AddBuiltinCommand("add_custom_target", cmAddCustomTargetCommand);  state->AddBuiltinCommand("add_definitions", cmAddDefinitionsCommand);  state->AddBuiltinCommand("add_dependencies", cmAddDependenciesCommand);  state->AddBuiltinCommand("add_executable", cmAddExecutableCommand);  state->AddBuiltinCommand("add_library", cmAddLibraryCommand);  state->AddBuiltinCommand("add_subdirectory", cmAddSubDirectoryCommand);  state->AddBuiltinCommand("add_test", cmAddTestCommand);  state->AddBuiltinCommand("build_command", cm::make_unique<cmBuildCommand>());  state->AddBuiltinCommand("create_test_sourcelist",                           cm::make_unique<cmCreateTestSourceList>());  state->AddBuiltinCommand("define_property",                           cm::make_unique<cmDefinePropertyCommand>());  state->AddBuiltinCommand("enable_language",                           cm::make_unique<cmEnableLanguageCommand>());  state->AddBuiltinCommand("enable_testing", cmEnableTestingCommand);  state->AddBuiltinCommand("get_source_file_property",                           cm::make_unique<cmGetSourceFilePropertyCommand>());  state->AddBuiltinCommand("get_target_property",                           cm::make_unique<cmGetTargetPropertyCommand>());  state->AddBuiltinCommand("get_test_property",                           cm::make_unique<cmGetTestPropertyCommand>());  state->AddBuiltinCommand("include_directories",                           cm::make_unique<cmIncludeDirectoryCommand>());  state->AddBuiltinCommand(    "include_regular_expression",    cm::make_unique<cmIncludeRegularExpressionCommand>());  state->AddBuiltinCommand("install", cm::make_unique<cmInstallCommand>());  state->AddBuiltinCommand("install_files",                           cm::make_unique<cmInstallFilesCommand>());  state->AddBuiltinCommand("install_targets",                           cm::make_unique<cmInstallTargetsCommand>());  state->AddBuiltinCommand("link_directories",                           cm::make_unique<cmLinkDirectoriesCommand>());  state->AddBuiltinCommand("project", cm::make_unique<cmProjectCommand>());  state->AddBuiltinCommand(    "set_source_files_properties",    cm::make_unique<cmSetSourceFilesPropertiesCommand>());  state->AddBuiltinCommand("set_target_properties",                           cm::make_unique<cmSetTargetPropertiesCommand>());  state->AddBuiltinCommand("set_tests_properties",                           cm::make_unique<cmSetTestsPropertiesCommand>());  state->AddBuiltinCommand("subdirs", cm::make_unique<cmSubdirCommand>());  state->AddBuiltinCommand(    "target_compile_definitions",    cm::make_unique<cmTargetCompileDefinitionsCommand>());  state->AddBuiltinCommand("target_compile_features",                           cm::make_unique<cmTargetCompileFeaturesCommand>());  state->AddBuiltinCommand("target_compile_options",                           cm::make_unique<cmTargetCompileOptionsCommand>());  state->AddBuiltinCommand(    "target_include_directories",    cm::make_unique<cmTargetIncludeDirectoriesCommand>());  state->AddBuiltinCommand("target_link_libraries",                           cm::make_unique<cmTargetLinkLibrariesCommand>());  state->AddBuiltinCommand("target_sources",                           cm::make_unique<cmTargetSourcesCommand>());  state->AddBuiltinCommand("try_compile",                           cm::make_unique<cmTryCompileCommand>());  state->AddBuiltinCommand("try_run", cm::make_unique<cmTryRunCommand>());#if !defined(CMAKE_BOOTSTRAP)  state->AddBuiltinCommand("add_compile_definitions",                           cmAddCompileDefinitionsCommand);  state->AddBuiltinCommand("add_compile_options", cmAddCompileOptionsCommand);  state->AddBuiltinCommand("aux_source_directory",                           cmAuxSourceDirectoryCommand);  state->AddBuiltinCommand("export", cm::make_unique<cmExportCommand>());  state->AddBuiltinCommand("fltk_wrap_ui",                           cm::make_unique<cmFLTKWrapUICommand>());  state->AddBuiltinCommand(    "include_external_msproject",    cm::make_unique<cmIncludeExternalMSProjectCommand>());  state->AddBuiltinCommand("install_programs",                           cm::make_unique<cmInstallProgramsCommand>());  state->AddBuiltinCommand("add_link_options", cmAddLinkOptionsCommand);  state->AddBuiltinCommand("link_libraries",                           cm::make_unique<cmLinkLibrariesCommand>());  state->AddBuiltinCommand("target_link_options",                           cm::make_unique<cmTargetLinkOptionsCommand>());  state->AddBuiltinCommand("target_link_directories",                           cm::make_unique<cmTargetLinkDirectoriesCommand>());  state->AddBuiltinCommand("load_cache",                           cm::make_unique<cmLoadCacheCommand>());  state->AddBuiltinCommand("qt_wrap_cpp",                           cm::make_unique<cmQTWrapCPPCommand>());  state->AddBuiltinCommand("qt_wrap_ui", cm::make_unique<cmQTWrapUICommand>());  state->AddBuiltinCommand("remove_definitions",                           cm::make_unique<cmRemoveDefinitionsCommand>());  state->AddBuiltinCommand("source_group",                           cm::make_unique<cmSourceGroupCommand>());  state->AddDisallowedCommand(    "export_library_dependencies",    cm::make_unique<cmExportLibraryDependenciesCommand>(), cmPolicies::CMP0033,    "The export_library_dependencies command should not be called; "    "see CMP0033.");  state->AddDisallowedCommand(    "load_command", cm::make_unique<cmLoadCommandCommand>(),    cmPolicies::CMP0031,    "The load_command command should not be called; see CMP0031.");  state->AddDisallowedCommand(    "output_required_files", cm::make_unique<cmOutputRequiredFilesCommand>(),    cmPolicies::CMP0032,    "The output_required_files command should not be called; see CMP0032.");  state->AddDisallowedCommand(    "subdir_depends", cm::make_unique<cmSubdirDependsCommand>(),    cmPolicies::CMP0029,    "The subdir_depends command should not be called; see CMP0029.");  state->AddDisallowedCommand(    "utility_source", cm::make_unique<cmUtilitySourceCommand>(),    cmPolicies::CMP0034,    "The utility_source command should not be called; see CMP0034.");  state->AddDisallowedCommand(    "variable_requires", cm::make_unique<cmVariableRequiresCommand>(),    cmPolicies::CMP0035,    "The variable_requires command should not be called; see CMP0035.");#endif}void GetProjectCommandsInScriptMode(cmState* state){#define CM_UNEXPECTED_PROJECT_COMMAND(NAME)                                   \  state->AddUnexpectedCommand(NAME, "command is not scriptable")  CM_UNEXPECTED_PROJECT_COMMAND("add_compile_options");  CM_UNEXPECTED_PROJECT_COMMAND("add_custom_command");  CM_UNEXPECTED_PROJECT_COMMAND("add_custom_target");  CM_UNEXPECTED_PROJECT_COMMAND("add_definitions");  CM_UNEXPECTED_PROJECT_COMMAND("add_dependencies");  CM_UNEXPECTED_PROJECT_COMMAND("add_executable");  CM_UNEXPECTED_PROJECT_COMMAND("add_library");  CM_UNEXPECTED_PROJECT_COMMAND("add_subdirectory");  CM_UNEXPECTED_PROJECT_COMMAND("add_test");  CM_UNEXPECTED_PROJECT_COMMAND("aux_source_directory");  CM_UNEXPECTED_PROJECT_COMMAND("build_command");  CM_UNEXPECTED_PROJECT_COMMAND("create_test_sourcelist");  CM_UNEXPECTED_PROJECT_COMMAND("define_property");  CM_UNEXPECTED_PROJECT_COMMAND("enable_language");  CM_UNEXPECTED_PROJECT_COMMAND("enable_testing");  CM_UNEXPECTED_PROJECT_COMMAND("export");  CM_UNEXPECTED_PROJECT_COMMAND("fltk_wrap_ui");  CM_UNEXPECTED_PROJECT_COMMAND("get_source_file_property");  CM_UNEXPECTED_PROJECT_COMMAND("get_target_property");  CM_UNEXPECTED_PROJECT_COMMAND("get_test_property");  CM_UNEXPECTED_PROJECT_COMMAND("include_directories");  CM_UNEXPECTED_PROJECT_COMMAND("include_external_msproject");  CM_UNEXPECTED_PROJECT_COMMAND("include_regular_expression");  CM_UNEXPECTED_PROJECT_COMMAND("install");  CM_UNEXPECTED_PROJECT_COMMAND("link_directories");  CM_UNEXPECTED_PROJECT_COMMAND("link_libraries");  CM_UNEXPECTED_PROJECT_COMMAND("load_cache");  CM_UNEXPECTED_PROJECT_COMMAND("project");  CM_UNEXPECTED_PROJECT_COMMAND("qt_wrap_cpp");  CM_UNEXPECTED_PROJECT_COMMAND("qt_wrap_ui");  CM_UNEXPECTED_PROJECT_COMMAND("remove_definitions");  CM_UNEXPECTED_PROJECT_COMMAND("set_source_files_properties");  CM_UNEXPECTED_PROJECT_COMMAND("set_target_properties");  CM_UNEXPECTED_PROJECT_COMMAND("set_tests_properties");  CM_UNEXPECTED_PROJECT_COMMAND("source_group");  CM_UNEXPECTED_PROJECT_COMMAND("target_compile_definitions");  CM_UNEXPECTED_PROJECT_COMMAND("target_compile_features");  CM_UNEXPECTED_PROJECT_COMMAND("target_compile_options");  CM_UNEXPECTED_PROJECT_COMMAND("target_include_directories");  CM_UNEXPECTED_PROJECT_COMMAND("target_link_libraries");  CM_UNEXPECTED_PROJECT_COMMAND("target_sources");  CM_UNEXPECTED_PROJECT_COMMAND("try_compile");  CM_UNEXPECTED_PROJECT_COMMAND("try_run");  // deprecated commands  CM_UNEXPECTED_PROJECT_COMMAND("export_library_dependencies");  CM_UNEXPECTED_PROJECT_COMMAND("load_command");  CM_UNEXPECTED_PROJECT_COMMAND("output_required_files");  CM_UNEXPECTED_PROJECT_COMMAND("subdir_depends");  CM_UNEXPECTED_PROJECT_COMMAND("utility_source");  CM_UNEXPECTED_PROJECT_COMMAND("variable_requires");#undef CM_UNEXPECTED_PROJECT_COMMAND}
 |