| /* 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 "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 "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_BUILD_WITH_CMAKE) |
| # 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" |
| #endif |
| |
| void GetScriptingCommands(cmState* state) |
| { |
| state->AddBuiltinCommand("break", new cmBreakCommand); |
| state->AddBuiltinCommand("cmake_minimum_required", |
| new cmCMakeMinimumRequired); |
| state->AddBuiltinCommand("cmake_policy", new cmCMakePolicyCommand); |
| state->AddBuiltinCommand("configure_file", new cmConfigureFileCommand); |
| state->AddBuiltinCommand("continue", new cmContinueCommand); |
| state->AddBuiltinCommand("exec_program", new cmExecProgramCommand); |
| state->AddBuiltinCommand("execute_process", new cmExecuteProcessCommand); |
| state->AddBuiltinCommand("file", new cmFileCommand); |
| state->AddBuiltinCommand("find_file", new cmFindFileCommand); |
| state->AddBuiltinCommand("find_library", new cmFindLibraryCommand); |
| state->AddBuiltinCommand("find_package", new cmFindPackageCommand); |
| state->AddBuiltinCommand("find_path", new cmFindPathCommand); |
| state->AddBuiltinCommand("find_program", new cmFindProgramCommand); |
| state->AddBuiltinCommand("foreach", new cmForEachCommand); |
| state->AddBuiltinCommand("function", new cmFunctionCommand); |
| state->AddBuiltinCommand("get_cmake_property", |
| new cmGetCMakePropertyCommand); |
| state->AddBuiltinCommand("get_directory_property", |
| new cmGetDirectoryPropertyCommand); |
| state->AddBuiltinCommand("get_filename_component", |
| new cmGetFilenameComponentCommand); |
| state->AddBuiltinCommand("get_property", new cmGetPropertyCommand); |
| state->AddBuiltinCommand("if", new cmIfCommand); |
| state->AddBuiltinCommand("include", new cmIncludeCommand); |
| state->AddBuiltinCommand("include_guard", new cmIncludeGuardCommand); |
| state->AddBuiltinCommand("list", new cmListCommand); |
| state->AddBuiltinCommand("macro", new cmMacroCommand); |
| state->AddBuiltinCommand("make_directory", new cmMakeDirectoryCommand); |
| state->AddBuiltinCommand("mark_as_advanced", new cmMarkAsAdvancedCommand); |
| state->AddBuiltinCommand("math", new cmMathCommand); |
| state->AddBuiltinCommand("message", new cmMessageCommand); |
| state->AddBuiltinCommand("option", new cmOptionCommand); |
| state->AddBuiltinCommand("cmake_parse_arguments", |
| new cmParseArgumentsCommand); |
| state->AddBuiltinCommand("return", new cmReturnCommand); |
| state->AddBuiltinCommand("separate_arguments", |
| new cmSeparateArgumentsCommand); |
| state->AddBuiltinCommand("set", new cmSetCommand); |
| state->AddBuiltinCommand("set_directory_properties", |
| new cmSetDirectoryPropertiesCommand); |
| state->AddBuiltinCommand("set_property", new cmSetPropertyCommand); |
| state->AddBuiltinCommand("site_name", new cmSiteNameCommand); |
| state->AddBuiltinCommand("string", new cmStringCommand); |
| state->AddBuiltinCommand("unset", new cmUnsetCommand); |
| state->AddBuiltinCommand("while", new 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_BUILD_WITH_CMAKE) |
| state->AddBuiltinCommand("cmake_host_system_information", |
| new cmCMakeHostSystemInformationCommand); |
| state->AddBuiltinCommand("remove", new cmRemoveCommand); |
| state->AddBuiltinCommand("variable_watch", new cmVariableWatchCommand); |
| state->AddBuiltinCommand("write_file", new cmWriteFileCommand); |
| |
| state->AddDisallowedCommand( |
| "build_name", new cmBuildNameCommand, cmPolicies::CMP0036, |
| "The build_name command should not be called; see CMP0036."); |
| state->AddDisallowedCommand( |
| "use_mangled_mesa", new cmUseMangledMesaCommand, cmPolicies::CMP0030, |
| "The use_mangled_mesa command should not be called; see CMP0030."); |
| |
| #endif |
| } |
| |
| void GetProjectCommands(cmState* state) |
| { |
| state->AddBuiltinCommand("add_custom_command", |
| new cmAddCustomCommandCommand); |
| state->AddBuiltinCommand("add_custom_target", new cmAddCustomTargetCommand); |
| state->AddBuiltinCommand("add_definitions", new cmAddDefinitionsCommand); |
| state->AddBuiltinCommand("add_dependencies", new cmAddDependenciesCommand); |
| state->AddBuiltinCommand("add_executable", new cmAddExecutableCommand); |
| state->AddBuiltinCommand("add_library", new cmAddLibraryCommand); |
| state->AddBuiltinCommand("add_subdirectory", new cmAddSubDirectoryCommand); |
| state->AddBuiltinCommand("add_test", new cmAddTestCommand); |
| state->AddBuiltinCommand("build_command", new cmBuildCommand); |
| state->AddBuiltinCommand("create_test_sourcelist", |
| new cmCreateTestSourceList); |
| state->AddBuiltinCommand("define_property", new cmDefinePropertyCommand); |
| state->AddBuiltinCommand("enable_language", new cmEnableLanguageCommand); |
| state->AddBuiltinCommand("enable_testing", new cmEnableTestingCommand); |
| state->AddBuiltinCommand("get_source_file_property", |
| new cmGetSourceFilePropertyCommand); |
| state->AddBuiltinCommand("get_target_property", |
| new cmGetTargetPropertyCommand); |
| state->AddBuiltinCommand("get_test_property", new cmGetTestPropertyCommand); |
| state->AddBuiltinCommand("include_directories", |
| new cmIncludeDirectoryCommand); |
| state->AddBuiltinCommand("include_regular_expression", |
| new cmIncludeRegularExpressionCommand); |
| state->AddBuiltinCommand("install", new cmInstallCommand); |
| state->AddBuiltinCommand("install_files", new cmInstallFilesCommand); |
| state->AddBuiltinCommand("install_targets", new cmInstallTargetsCommand); |
| state->AddBuiltinCommand("link_directories", new cmLinkDirectoriesCommand); |
| state->AddBuiltinCommand("project", new cmProjectCommand); |
| state->AddBuiltinCommand("set_source_files_properties", |
| new cmSetSourceFilesPropertiesCommand); |
| state->AddBuiltinCommand("set_target_properties", |
| new cmSetTargetPropertiesCommand); |
| state->AddBuiltinCommand("set_tests_properties", |
| new cmSetTestsPropertiesCommand); |
| state->AddBuiltinCommand("subdirs", new cmSubdirCommand); |
| state->AddBuiltinCommand("target_compile_definitions", |
| new cmTargetCompileDefinitionsCommand); |
| state->AddBuiltinCommand("target_compile_features", |
| new cmTargetCompileFeaturesCommand); |
| state->AddBuiltinCommand("target_compile_options", |
| new cmTargetCompileOptionsCommand); |
| state->AddBuiltinCommand("target_include_directories", |
| new cmTargetIncludeDirectoriesCommand); |
| state->AddBuiltinCommand("target_link_libraries", |
| new cmTargetLinkLibrariesCommand); |
| state->AddBuiltinCommand("target_sources", new cmTargetSourcesCommand); |
| state->AddBuiltinCommand("try_compile", new cmTryCompileCommand); |
| state->AddBuiltinCommand("try_run", new cmTryRunCommand); |
| |
| #if defined(CMAKE_BUILD_WITH_CMAKE) |
| state->AddBuiltinCommand("add_compile_definitions", |
| new cmAddCompileDefinitionsCommand); |
| state->AddBuiltinCommand("add_compile_options", |
| new cmAddCompileOptionsCommand); |
| state->AddBuiltinCommand("aux_source_directory", |
| new cmAuxSourceDirectoryCommand); |
| state->AddBuiltinCommand("export", new cmExportCommand); |
| state->AddBuiltinCommand("fltk_wrap_ui", new cmFLTKWrapUICommand); |
| state->AddBuiltinCommand("include_external_msproject", |
| new cmIncludeExternalMSProjectCommand); |
| state->AddBuiltinCommand("install_programs", new cmInstallProgramsCommand); |
| state->AddBuiltinCommand("add_link_options", new cmAddLinkOptionsCommand); |
| state->AddBuiltinCommand("link_libraries", new cmLinkLibrariesCommand); |
| state->AddBuiltinCommand("target_link_options", |
| new cmTargetLinkOptionsCommand); |
| state->AddBuiltinCommand("target_link_directories", |
| new cmTargetLinkDirectoriesCommand); |
| state->AddBuiltinCommand("load_cache", new cmLoadCacheCommand); |
| state->AddBuiltinCommand("qt_wrap_cpp", new cmQTWrapCPPCommand); |
| state->AddBuiltinCommand("qt_wrap_ui", new cmQTWrapUICommand); |
| state->AddBuiltinCommand("remove_definitions", |
| new cmRemoveDefinitionsCommand); |
| state->AddBuiltinCommand("source_group", new cmSourceGroupCommand); |
| |
| state->AddDisallowedCommand( |
| "export_library_dependencies", new cmExportLibraryDependenciesCommand, |
| cmPolicies::CMP0033, |
| "The export_library_dependencies command should not be called; " |
| "see CMP0033."); |
| state->AddDisallowedCommand( |
| "load_command", new cmLoadCommandCommand, cmPolicies::CMP0031, |
| "The load_command command should not be called; see CMP0031."); |
| state->AddDisallowedCommand( |
| "output_required_files", new cmOutputRequiredFilesCommand, |
| cmPolicies::CMP0032, |
| "The output_required_files command should not be called; see CMP0032."); |
| state->AddDisallowedCommand( |
| "subdir_depends", new cmSubdirDependsCommand, cmPolicies::CMP0029, |
| "The subdir_depends command should not be called; see CMP0029."); |
| state->AddDisallowedCommand( |
| "utility_source", new cmUtilitySourceCommand, cmPolicies::CMP0034, |
| "The utility_source command should not be called; see CMP0034."); |
| state->AddDisallowedCommand( |
| "variable_requires", new 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 |
| } |