Coverage Report

Created: 2026-04-29 07:01

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/CMake/Source/cmCommands.cxx
Line
Count
Source
1
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2
   file LICENSE.rst or https://cmake.org/licensing for details.  */
3
4
#include "cmCommands.h"
5
6
#include <string>
7
8
#include "cmAddCompileDefinitionsCommand.h"
9
#include "cmAddCustomCommandCommand.h"
10
#include "cmAddCustomTargetCommand.h"
11
#include "cmAddDefinitionsCommand.h"
12
#include "cmAddDependenciesCommand.h"
13
#include "cmAddExecutableCommand.h"
14
#include "cmAddLibraryCommand.h"
15
#include "cmAddSubDirectoryCommand.h"
16
#include "cmAddTestCommand.h"
17
#include "cmBlockCommand.h"
18
#include "cmBreakCommand.h"
19
#include "cmBuildCommand.h"
20
#include "cmCMakeDiagnosticCommand.h"
21
#include "cmCMakeLanguageCommand.h"
22
#include "cmCMakeMinimumRequired.h"
23
#include "cmCMakePathCommand.h"
24
#include "cmCMakePolicyCommand.h"
25
#include "cmConfigureFileCommand.h"
26
#include "cmContinueCommand.h"
27
#include "cmCreateTestSourceList.h"
28
#include "cmDefinePropertyCommand.h"
29
#include "cmDiscoverTestsCommand.h"
30
#include "cmEnableLanguageCommand.h"
31
#include "cmEnableTestingCommand.h"
32
#include "cmExecProgramCommand.h"
33
#include "cmExecuteProcessCommand.h"
34
#include "cmFileCommand.h"
35
#include "cmFindFileCommand.h"
36
#include "cmFindLibraryCommand.h"
37
#include "cmFindPackageCommand.h"
38
#include "cmFindPathCommand.h"
39
#include "cmFindProgramCommand.h"
40
#include "cmForEachCommand.h"
41
#include "cmFunctionCommand.h"
42
#include "cmGetCMakePropertyCommand.h"
43
#include "cmGetDirectoryPropertyCommand.h"
44
#include "cmGetFilenameComponentCommand.h"
45
#include "cmGetPropertyCommand.h"
46
#include "cmGetSourceFilePropertyCommand.h"
47
#include "cmGetTargetPropertyCommand.h"
48
#include "cmGetTestPropertyCommand.h"
49
#include "cmIfCommand.h"
50
#include "cmIncludeCommand.h"
51
#include "cmIncludeDirectoryCommand.h"
52
#include "cmIncludeGuardCommand.h"
53
#include "cmIncludeRegularExpressionCommand.h"
54
#include "cmInstallCommand.h"
55
#include "cmInstallFilesCommand.h"
56
#include "cmInstallTargetsCommand.h"
57
#include "cmInstrumentationCommand.h"
58
#include "cmLinkDirectoriesCommand.h"
59
#include "cmListCommand.h"
60
#include "cmMacroCommand.h"
61
#include "cmMakeDirectoryCommand.h"
62
#include "cmMarkAsAdvancedCommand.h"
63
#include "cmMathCommand.h"
64
#include "cmMessageCommand.h"
65
#include "cmOptionCommand.h"
66
#include "cmParseArgumentsCommand.h"
67
#include "cmPolicies.h"
68
#include "cmProjectCommand.h"
69
#include "cmReturnCommand.h"
70
#include "cmSeparateArgumentsCommand.h"
71
#include "cmSetCommand.h"
72
#include "cmSetDirectoryPropertiesCommand.h"
73
#include "cmSetPropertyCommand.h"
74
#include "cmSetSourceFilesPropertiesCommand.h"
75
#include "cmSetTargetPropertiesCommand.h"
76
#include "cmSetTestsPropertiesCommand.h"
77
#include "cmSiteNameCommand.h"
78
#include "cmState.h"
79
#include "cmStringCommand.h"
80
#include "cmSubdirCommand.h"
81
#include "cmTargetCompileDefinitionsCommand.h"
82
#include "cmTargetCompileFeaturesCommand.h"
83
#include "cmTargetCompileOptionsCommand.h"
84
#include "cmTargetIncludeDirectoriesCommand.h"
85
#include "cmTargetLinkLibrariesCommand.h"
86
#include "cmTargetLinkOptionsCommand.h"
87
#include "cmTargetPrecompileHeadersCommand.h"
88
#include "cmTargetSourcesCommand.h"
89
#include "cmTryCompileCommand.h"
90
#include "cmTryRunCommand.h"
91
#include "cmUnsetCommand.h"
92
#include "cmWhileCommand.h"
93
94
#if !defined(CMAKE_BOOTSTRAP)
95
#  include "cmAddCompileOptionsCommand.h"
96
#  include "cmAddLinkOptionsCommand.h"
97
#  include "cmAuxSourceDirectoryCommand.h"
98
#  include "cmCMakeHostSystemInformationCommand.h"
99
#  include "cmCMakePkgConfigCommand.h"
100
#  include "cmExportCommand.h"
101
#  include "cmFLTKWrapUICommand.h"
102
#  include "cmFileAPICommand.h"
103
#  include "cmIncludeExternalMSProjectCommand.h"
104
#  include "cmInstallProgramsCommand.h"
105
#  include "cmLinkLibrariesCommand.h"
106
#  include "cmLoadCacheCommand.h"
107
#  include "cmQTWrapCPPCommand.h"
108
#  include "cmQTWrapUICommand.h"
109
#  include "cmRemoveCommand.h"
110
#  include "cmRemoveDefinitionsCommand.h"
111
#  include "cmSourceGroupCommand.h"
112
#  include "cmTargetLinkDirectoriesCommand.h"
113
#  include "cmVariableWatchCommand.h"
114
#  include "cmWriteFileCommand.h"
115
#endif
116
117
void GetScriptingCommands(cmState* state)
118
35
{
119
35
  state->AddFlowControlCommand("break", cmBreakCommand);
120
35
  state->AddFlowControlCommand("continue", cmContinueCommand);
121
35
  state->AddFlowControlCommand("foreach", cmForEachCommand);
122
35
  state->AddFlowControlCommand("function", cmFunctionCommand);
123
35
  state->AddFlowControlCommand("if", cmIfCommand);
124
35
  state->AddFlowControlCommand("macro", cmMacroCommand);
125
35
  state->AddFlowControlCommand("return", cmReturnCommand);
126
35
  state->AddFlowControlCommand("while", cmWhileCommand);
127
35
  state->AddFlowControlCommand("block", cmBlockCommand);
128
129
35
  state->AddBuiltinCommand("cmake_diagnostic", cmCMakeDiagnosticCommand);
130
35
  state->AddBuiltinCommand("cmake_language", cmCMakeLanguageCommand);
131
35
  state->AddBuiltinCommand("cmake_minimum_required", cmCMakeMinimumRequired);
132
35
  state->AddBuiltinCommand("cmake_path", cmCMakePathCommand);
133
35
  state->AddBuiltinCommand("cmake_policy", cmCMakePolicyCommand);
134
35
  state->AddBuiltinCommand("configure_file", cmConfigureFileCommand);
135
35
  state->AddBuiltinCommand("execute_process", cmExecuteProcessCommand);
136
35
  state->AddBuiltinCommand("file", cmFileCommand);
137
35
  state->AddBuiltinCommand("find_file", cmFindFile);
138
35
  state->AddBuiltinCommand("find_library", cmFindLibrary);
139
35
  state->AddBuiltinCommand("find_package", cmFindPackage);
140
35
  state->AddBuiltinCommand("find_path", cmFindPath);
141
35
  state->AddBuiltinCommand("find_program", cmFindProgram);
142
35
  state->AddBuiltinCommand("get_cmake_property", cmGetCMakePropertyCommand);
143
35
  state->AddBuiltinCommand("get_directory_property",
144
35
                           cmGetDirectoryPropertyCommand);
145
35
  state->AddBuiltinCommand("get_filename_component",
146
35
                           cmGetFilenameComponentCommand);
147
35
  state->AddBuiltinCommand("get_property", cmGetPropertyCommand);
148
35
  state->AddBuiltinCommand("include", cmIncludeCommand);
149
35
  state->AddBuiltinCommand("include_guard", cmIncludeGuardCommand);
150
35
  state->AddBuiltinCommand("list", cmListCommand);
151
35
  state->AddBuiltinCommand("make_directory", cmMakeDirectoryCommand);
152
35
  state->AddBuiltinCommand("mark_as_advanced", cmMarkAsAdvancedCommand);
153
35
  state->AddBuiltinCommand("math", cmMathCommand);
154
35
  state->AddBuiltinCommand("message", cmMessageCommand);
155
35
  state->AddBuiltinCommand("option", cmOptionCommand);
156
35
  state->AddBuiltinCommand("cmake_parse_arguments", cmParseArgumentsCommand);
157
35
  state->AddBuiltinCommand("separate_arguments", cmSeparateArgumentsCommand);
158
35
  state->AddBuiltinCommand("set", cmSetCommand);
159
35
  state->AddBuiltinCommand("set_directory_properties",
160
35
                           cmSetDirectoryPropertiesCommand);
161
35
  state->AddBuiltinCommand("set_property", cmSetPropertyCommand);
162
35
  state->AddBuiltinCommand("site_name", cmSiteNameCommand);
163
35
  state->AddBuiltinCommand("string", cmStringCommand);
164
35
  state->AddBuiltinCommand("unset", cmUnsetCommand);
165
166
35
  state->AddUnexpectedFlowControlCommand(
167
35
    "else",
168
35
    "An ELSE command was found outside of a proper "
169
35
    "IF ENDIF structure. Or its arguments did not match "
170
35
    "the opening IF command.");
171
35
  state->AddUnexpectedFlowControlCommand(
172
35
    "elseif",
173
35
    "An ELSEIF command was found outside of a proper "
174
35
    "IF ENDIF structure.");
175
35
  state->AddUnexpectedFlowControlCommand(
176
35
    "endforeach",
177
35
    "An ENDFOREACH command was found outside of a proper "
178
35
    "FOREACH ENDFOREACH structure. Or its arguments did "
179
35
    "not match the opening FOREACH command.");
180
35
  state->AddUnexpectedFlowControlCommand(
181
35
    "endfunction",
182
35
    "An ENDFUNCTION command was found outside of a proper "
183
35
    "FUNCTION ENDFUNCTION structure. Or its arguments did not "
184
35
    "match the opening FUNCTION command.");
185
35
  state->AddUnexpectedFlowControlCommand(
186
35
    "endif",
187
35
    "An ENDIF command was found outside of a proper "
188
35
    "IF ENDIF structure. Or its arguments did not match "
189
35
    "the opening IF command.");
190
35
  state->AddUnexpectedFlowControlCommand(
191
35
    "endmacro",
192
35
    "An ENDMACRO command was found outside of a proper "
193
35
    "MACRO ENDMACRO structure. Or its arguments did not "
194
35
    "match the opening MACRO command.");
195
35
  state->AddUnexpectedFlowControlCommand(
196
35
    "endwhile",
197
35
    "An ENDWHILE command was found outside of a proper "
198
35
    "WHILE ENDWHILE structure. Or its arguments did not "
199
35
    "match the opening WHILE command.");
200
35
  state->AddUnexpectedFlowControlCommand(
201
35
    "endblock",
202
35
    "An ENDBLOCK command was found outside of a proper "
203
35
    "BLOCK ENDBLOCK structure.");
204
205
35
#if !defined(CMAKE_BOOTSTRAP)
206
35
  state->AddBuiltinCommand("cmake_host_system_information",
207
35
                           cmCMakeHostSystemInformationCommand);
208
35
  state->AddBuiltinCommand("cmake_pkg_config", cmCMakePkgConfigCommand);
209
35
  state->AddBuiltinCommand("load_cache", cmLoadCacheCommand);
210
35
  state->AddBuiltinCommand("remove", cmRemoveCommand);
211
35
  state->AddBuiltinCommand("variable_watch", cmVariableWatchCommand);
212
35
  state->AddBuiltinCommand("write_file", cmWriteFileCommand);
213
214
35
  state->AddRemovedCommand(
215
35
    "build_name", "The build_name command has been removed; see CMP0036.");
216
35
  state->AddRemovedCommand(
217
35
    "use_mangled_mesa",
218
35
    "The use_mangled_mesa command has been removed; see CMP0030.");
219
35
  state->AddDisallowedCommand("exec_program", cmExecProgramCommand,
220
35
                              cmPolicies::CMP0153,
221
35
                              "The exec_program command should not be called; "
222
35
                              "see CMP0153. Use execute_process() instead.",
223
35
                              "Use execute_process() instead.");
224
225
35
#endif
226
35
}
227
228
void GetProjectCommands(cmState* state)
229
0
{
230
0
  state->AddBuiltinCommand("add_compile_definitions",
231
0
                           cmAddCompileDefinitionsCommand);
232
0
  state->AddBuiltinCommand("add_custom_command", cmAddCustomCommandCommand);
233
0
  state->AddBuiltinCommand("add_custom_target", cmAddCustomTargetCommand);
234
0
  state->AddBuiltinCommand("add_definitions", cmAddDefinitionsCommand);
235
0
  state->AddBuiltinCommand("add_dependencies", cmAddDependenciesCommand);
236
0
  state->AddBuiltinCommand("add_executable", cmAddExecutableCommand);
237
0
  state->AddBuiltinCommand("add_library", cmAddLibraryCommand);
238
0
  state->AddBuiltinCommand("add_subdirectory", cmAddSubDirectoryCommand);
239
0
  state->AddBuiltinCommand("add_test", cmAddTestCommand);
240
0
  state->AddBuiltinCommand("build_command", cmBuildCommand);
241
0
  state->AddBuiltinCommand("create_test_sourcelist", cmCreateTestSourceList);
242
0
  state->AddBuiltinCommand("define_property", cmDefinePropertyCommand);
243
0
  state->AddBuiltinCommand("discover_tests", cmDiscoverTestsCommand);
244
0
  state->AddBuiltinCommand("enable_language", cmEnableLanguageCommand);
245
0
  state->AddBuiltinCommand("enable_testing", cmEnableTestingCommand);
246
0
  state->AddBuiltinCommand("get_source_file_property",
247
0
                           cmGetSourceFilePropertyCommand);
248
0
  state->AddBuiltinCommand("get_target_property", cmGetTargetPropertyCommand);
249
0
  state->AddBuiltinCommand("get_test_property", cmGetTestPropertyCommand);
250
0
  state->AddBuiltinCommand("include_directories", cmIncludeDirectoryCommand);
251
0
  state->AddBuiltinCommand("include_regular_expression",
252
0
                           cmIncludeRegularExpressionCommand);
253
0
  state->AddBuiltinCommand("install", cmInstallCommand);
254
0
  state->AddBuiltinCommand("install_files", cmInstallFilesCommand);
255
0
  state->AddBuiltinCommand("install_targets", cmInstallTargetsCommand);
256
0
  state->AddBuiltinCommand("link_directories", cmLinkDirectoriesCommand);
257
0
  state->AddBuiltinCommand("project", cmProjectCommand);
258
0
  state->AddBuiltinCommand("set_source_files_properties",
259
0
                           cmSetSourceFilesPropertiesCommand);
260
0
  state->AddBuiltinCommand("set_target_properties",
261
0
                           cmSetTargetPropertiesCommand);
262
0
  state->AddBuiltinCommand("set_tests_properties",
263
0
                           cmSetTestsPropertiesCommand);
264
0
  state->AddBuiltinCommand("subdirs", cmSubdirCommand);
265
0
  state->AddBuiltinCommand("target_compile_definitions",
266
0
                           cmTargetCompileDefinitionsCommand);
267
0
  state->AddBuiltinCommand("target_compile_features",
268
0
                           cmTargetCompileFeaturesCommand);
269
0
  state->AddBuiltinCommand("target_compile_options",
270
0
                           cmTargetCompileOptionsCommand);
271
0
  state->AddBuiltinCommand("target_include_directories",
272
0
                           cmTargetIncludeDirectoriesCommand);
273
0
  state->AddBuiltinCommand("target_link_libraries",
274
0
                           cmTargetLinkLibrariesCommand);
275
0
  state->AddBuiltinCommand("target_link_options", cmTargetLinkOptionsCommand);
276
0
  state->AddBuiltinCommand("target_sources", cmTargetSourcesCommand);
277
0
  state->AddBuiltinCommand("try_compile", cmTryCompileCommand);
278
0
  state->AddBuiltinCommand("try_run", cmTryRunCommand);
279
0
  state->AddBuiltinCommand("target_precompile_headers",
280
0
                           cmTargetPrecompileHeadersCommand);
281
282
0
#if !defined(CMAKE_BOOTSTRAP)
283
0
  state->AddBuiltinCommand("add_compile_options", cmAddCompileOptionsCommand);
284
0
  state->AddBuiltinCommand("aux_source_directory",
285
0
                           cmAuxSourceDirectoryCommand);
286
0
  state->AddBuiltinCommand("export", cmExportCommand);
287
0
  state->AddBuiltinCommand("fltk_wrap_ui", cmFLTKWrapUICommand);
288
0
  state->AddBuiltinCommand("include_external_msproject",
289
0
                           cmIncludeExternalMSProjectCommand);
290
0
  state->AddBuiltinCommand("install_programs", cmInstallProgramsCommand);
291
0
  state->AddBuiltinCommand("add_link_options", cmAddLinkOptionsCommand);
292
0
  state->AddBuiltinCommand("link_libraries", cmLinkLibrariesCommand);
293
0
  state->AddBuiltinCommand("target_link_directories",
294
0
                           cmTargetLinkDirectoriesCommand);
295
0
  state->AddBuiltinCommand("qt_wrap_cpp", cmQTWrapCPPCommand);
296
0
  state->AddBuiltinCommand("qt_wrap_ui", cmQTWrapUICommand);
297
0
  state->AddBuiltinCommand("remove_definitions", cmRemoveDefinitionsCommand);
298
0
  state->AddBuiltinCommand("source_group", cmSourceGroupCommand);
299
0
  state->AddBuiltinCommand("cmake_file_api", cmFileAPICommand);
300
0
  state->AddBuiltinCommand("cmake_instrumentation", cmInstrumentationCommand);
301
302
0
  state->AddRemovedCommand(
303
0
    "export_library_dependencies",
304
0
    "The export_library_dependencies command has been removed; see CMP0033.");
305
0
  state->AddRemovedCommand(
306
0
    "load_command", "The load_command command has been removed; see CMP0031.");
307
0
  state->AddRemovedCommand(
308
0
    "output_required_files",
309
0
    "The output_required_files command has been removed; see CMP0032.");
310
0
  state->AddRemovedCommand(
311
0
    "subdir_depends",
312
0
    "The subdir_depends command has been removed; see CMP0029.");
313
0
  state->AddRemovedCommand(
314
0
    "utility_source",
315
0
    "The utility_source command has been removed; see CMP0034.");
316
0
  state->AddRemovedCommand(
317
0
    "variable_requires",
318
0
    "The variable_requires command has been removed; see CMP0035.");
319
0
#endif
320
0
}
321
322
void GetProjectCommandsInScriptMode(cmState* state)
323
1
{
324
1
#define CM_UNEXPECTED_PROJECT_COMMAND(NAME)                                   \
325
49
  state->AddUnexpectedCommand(NAME, "command is not scriptable")
326
327
1
  CM_UNEXPECTED_PROJECT_COMMAND("add_compile_options");
328
1
  CM_UNEXPECTED_PROJECT_COMMAND("add_custom_command");
329
1
  CM_UNEXPECTED_PROJECT_COMMAND("add_custom_target");
330
1
  CM_UNEXPECTED_PROJECT_COMMAND("add_definitions");
331
1
  CM_UNEXPECTED_PROJECT_COMMAND("add_dependencies");
332
1
  CM_UNEXPECTED_PROJECT_COMMAND("add_executable");
333
1
  CM_UNEXPECTED_PROJECT_COMMAND("add_library");
334
1
  CM_UNEXPECTED_PROJECT_COMMAND("add_subdirectory");
335
1
  CM_UNEXPECTED_PROJECT_COMMAND("add_test");
336
1
  CM_UNEXPECTED_PROJECT_COMMAND("aux_source_directory");
337
1
  CM_UNEXPECTED_PROJECT_COMMAND("build_command");
338
1
  CM_UNEXPECTED_PROJECT_COMMAND("cmake_file_api");
339
1
  CM_UNEXPECTED_PROJECT_COMMAND("create_test_sourcelist");
340
1
  CM_UNEXPECTED_PROJECT_COMMAND("define_property");
341
1
  CM_UNEXPECTED_PROJECT_COMMAND("enable_language");
342
1
  CM_UNEXPECTED_PROJECT_COMMAND("enable_testing");
343
1
  CM_UNEXPECTED_PROJECT_COMMAND("export");
344
1
  CM_UNEXPECTED_PROJECT_COMMAND("fltk_wrap_ui");
345
1
  CM_UNEXPECTED_PROJECT_COMMAND("get_source_file_property");
346
1
  CM_UNEXPECTED_PROJECT_COMMAND("get_target_property");
347
1
  CM_UNEXPECTED_PROJECT_COMMAND("get_test_property");
348
1
  CM_UNEXPECTED_PROJECT_COMMAND("include_directories");
349
1
  CM_UNEXPECTED_PROJECT_COMMAND("include_external_msproject");
350
1
  CM_UNEXPECTED_PROJECT_COMMAND("include_regular_expression");
351
1
  CM_UNEXPECTED_PROJECT_COMMAND("install");
352
1
  CM_UNEXPECTED_PROJECT_COMMAND("link_directories");
353
1
  CM_UNEXPECTED_PROJECT_COMMAND("link_libraries");
354
1
  CM_UNEXPECTED_PROJECT_COMMAND("project");
355
1
  CM_UNEXPECTED_PROJECT_COMMAND("qt_wrap_cpp");
356
1
  CM_UNEXPECTED_PROJECT_COMMAND("qt_wrap_ui");
357
1
  CM_UNEXPECTED_PROJECT_COMMAND("remove_definitions");
358
1
  CM_UNEXPECTED_PROJECT_COMMAND("set_source_files_properties");
359
1
  CM_UNEXPECTED_PROJECT_COMMAND("set_target_properties");
360
1
  CM_UNEXPECTED_PROJECT_COMMAND("set_tests_properties");
361
1
  CM_UNEXPECTED_PROJECT_COMMAND("source_group");
362
1
  CM_UNEXPECTED_PROJECT_COMMAND("target_compile_definitions");
363
1
  CM_UNEXPECTED_PROJECT_COMMAND("target_compile_features");
364
1
  CM_UNEXPECTED_PROJECT_COMMAND("target_compile_options");
365
1
  CM_UNEXPECTED_PROJECT_COMMAND("target_include_directories");
366
1
  CM_UNEXPECTED_PROJECT_COMMAND("target_link_libraries");
367
1
  CM_UNEXPECTED_PROJECT_COMMAND("target_sources");
368
1
  CM_UNEXPECTED_PROJECT_COMMAND("try_compile");
369
1
  CM_UNEXPECTED_PROJECT_COMMAND("try_run");
370
371
  // deprecated commands
372
1
  CM_UNEXPECTED_PROJECT_COMMAND("export_library_dependencies");
373
1
  CM_UNEXPECTED_PROJECT_COMMAND("load_command");
374
1
  CM_UNEXPECTED_PROJECT_COMMAND("output_required_files");
375
1
  CM_UNEXPECTED_PROJECT_COMMAND("subdir_depends");
376
1
  CM_UNEXPECTED_PROJECT_COMMAND("utility_source");
377
1
  CM_UNEXPECTED_PROJECT_COMMAND("variable_requires");
378
379
1
#undef CM_UNEXPECTED_PROJECT_COMMAND
380
1
}