Commit Graph
222 Commits
Author SHA1 Message Date
Aiden Woodruff bd9af4b15a bash-completion: Improve compatibility with old bash
It is not uncommon for packages to install cmake's bash-completion
without depending on common bash-completion helper scripts. This commit
improves compatibility in those scenarios.
2026-08-22 12:18:41 -04:00
Daksh Mamodiya 0862819756 bash-completion: Fix spurious 'following' target completion candidate
The '--target' completion parsed 'cmake --build --target help'
with a sed pattern whose leading '...' matched any three
characters, so the header line yielded a bogus 'following'
candidate.  Anchor the pattern to literal dots.

Also note in the user-interaction guide that 'make' target
tab-completion is provided by the external bash-completion
package, which may hide the plain '<target>' name when a
'<target>/fast' variant exists, and recommend
'cmake --build --target' completion instead.

Fixes: #27873
2026-08-05 05:51:19 +02:00
Evan Wilde 94faee3099 Swift: Add option to pass package name to swiftc invocation
Add a `Swift_PACKAGE_NAME` target property to specify the package name.

Fixes: #26886
2026-04-28 15:24:05 -04:00
Roman Lavrov b6367f723b Swift/Ninja: Emit modules separately from compilation
Add policy CMP0215 to emit `.swiftmodule` from a dedicated `-emit-module`
build edge for importable Swift targets in the Ninja generator.
Downstream targets can begin compiling as soon as the module interface
is ready, overlapping with upstream object compilation and linking.

When CMP0215 is NEW and CMP0157 is NEW, separate module emission is
enabled by default.  The `Swift_SEPARATE_MODULE_EMISSION` target
property (initialized by the `CMAKE_Swift_SEPARATE_MODULE_EMISSION`
variable) can override this per target.

The compile edge still passes `-emit-module` so that swiftc continues
to produce `.swiftdoc`; only the `.swiftmodule` output moves to the new
edge.

Also fix swiftmodule dependency edges in cmNinjaNormalTargetGenerator
to use IsLanguageUsed instead of GetLinkerLanguage, so C/C++ targets
whose linker language propagated to Swift do not produce spurious
implicit dependencies.

Closes: #27748
2026-04-24 15:58:18 -04:00
ClausKlein 56780517be bash-completion: Add support for cmake --build --target
With `ninja` and `make` we can ask for a list of target names.

Fixes: #27695
2026-03-17 10:18:10 -04:00
Matthew Woehlke f5c515cbf2 CPS: Remove experimental gate (mostly)
Remove basic CPS import and export from 'experimental' status. Update
documentation and tests accordingly.

Note that mapped exports (CMAKE_EXPERIMENTAL_MAPPED_PACKAGE_INFO) are
still experimental.
2026-02-11 16:10:29 -05:00
Brad King 7ebad5d201 cmake-gui: Refactor installation into CMake.app/Contents on macOS
Instead of mutating `CMAKE_INSTALL_PREFIX`, add a `CMake.app/Contents/`
prefix to install destinations besides the `cmake-gui` target itself.
2025-10-31 09:33:52 -04:00
Brad King 032b091c3e Merge topic 'unity-filename-prefix'
5723e65215 Unity: Add a target property to control generated filenames

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11068
2025-09-05 09:18:26 -04:00
Stephen Kennedy 5723e65215 Unity: Add a target property to control generated filenames
If not set default to `unity_` as before.

Closes: #26927
2025-09-04 09:31:01 -04:00
Eduard Voronkin a8e64742aa FASTBuild: allow disabling of caching / distribution
Compilation is complicated. Caching / distribution is even more
complicated. Sometimes there are bugs (in compilers as well as in
FASTBuild), so export the option to disable those features for CMake
targets.
2025-09-03 12:42:55 -04:00
Peter Kokot 15ffe27752 FindDoxygen: Add Doxygen_VERSION
This deprecates the DOXYGEN_VERSION result variable.

Issue: #27088
2025-08-04 20:54:32 +02:00
Brad King 1cf6005af7 Merge branch 'upstream-vim-cmake-syntax' into update-vim-syntax
* upstream-vim-cmake-syntax:
  vim-cmake-syntax 2025-07-28 (3c8cd401)
2025-07-29 10:43:36 -04:00
Evan Wilde e301cbffcc ExternalProject: Set environment variables
Add the ability to modify the environment of the various steps running
as part of an external project build. This specifically adds the ability
to set them on the configure , build , install, and test steps, as well
as exposing the `ENVIRONMENT_MODIFICATION` keyword arguments to
`ExternalProject_Add_Step`, allowing customization of the environment of
custom steps.

The values of the environment variable respect the `LIST_SEPARATOR`.

Fixes: #26963
2025-07-22 13:13:23 -04:00
Peter Kokot d5793a6e57 cmake.m4: Update Autoconf macros documentation
This updates the documentation for the CMAKE_FIND_BINARY and
CMAKE_FIND_PACKAGE Autoconf macros to imitate other Autoconf macros
internal documentation style with some stylistic adjustments for
readability of the arguments.

- CMAKE_FIND_PACKAGE: Links to docs are added instead of listing
  compiler IDs. The 5th ($5) and 6th ($6) arguments descriptions are
  updated to be action-if-found and action-if-not-found according to the
  current code.
2025-03-23 16:09:02 +01:00
Kitware Robot 1772622772 LICENSE: Replace references to Copyright.txt with LICENSE.rst
```
git grep -lz 'Copyright.txt or https://cmake.org/licensing ' |
  while IFS= read -r -d $'\0' f ; do
    sed -i '/Copyright.txt or https:\/\/cmake.org\/licensing / {
              s/Copyright.txt/LICENSE.rst/
            }' "$f" ; done
```
2025-03-03 10:43:35 -05:00
Brad King 3e64c6a56e Merge topic 'msvc-runtime-checks'
2b2344b412 MSVC: Add abstraction for runtime checks
49dcd1ce5d Help: Fix MSVC_DEBUG_INFORMATION_FORMAT description of example
2f8e643d9d CMP0141: Fix documentation copied from CMP0091

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Alex <leha-bot@yandex.ru>
Merge-request: !10214
2025-01-30 08:48:01 -05:00
AJIOB 2b2344b412 MSVC: Add abstraction for runtime checks
Replace our hard-coded default for `/RTC1` with a first-class
abstraction to select runtime checks from an enumeration of logical
names.  Add a `MSVC_RUNTIME_CHECKS` target property and corresponding
`CMAKE_MSVC_RUNTIME_CHECKS` variable.

Removing the old default flag requires a policy because existing
projects may rely on string processing to edit them and choose
runtime checks under the old behavior.  Add policy CMP0184 to
provide compatibility.

Fixes: #26614
2025-01-29 13:07:41 -05:00
Daniel Tierney abbe41578d cmake: Add SARIF diagnostics output support
Closes: #26587
2025-01-29 08:43:19 -05:00
Brad King 72e27a4856 Merge topic 'fix-typos-found-by-pre-commit-hooks'
d620d77d26 FindDoxygen: Rename `_Doxygen_dne_header` -> `_Doxygen_do_not_edit_header`
e7ff3cccea PushToAndroidDevice.cmake: Rename `cmake_parse_arguments` prefix
bc8621d999 Fix: A lot of typos in code found by `typos`
b33beb7af5 Help: Fix some typos found by `sphinx-lint`
78e45c2db6 Style: Replace TABs with spaces for indentation in some files
74e0173f66 Tests(NuGet): Fix the test to ignore empty and space-only lines

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10151
2025-01-14 09:44:34 -05:00
Brad King 74c462b4f8 Merge topic 'xcode-scheme-test-config'
7d28005244 Xcode: Support for test action 'Build Configuration' scheme property
1f4e1ccbc8 Help: Move launch config scheme property to the correct section
8aaae0f643 vim: Remove duplicated keywords from cmake.vim

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10154
2025-01-13 11:37:31 -05:00
Alex Turbov bc8621d999 Fix: A lot of typos in code found by typos
Yet another great code spellchecker: https://github.com/crate-ci/typos/

(Will be added later as a `pre-commit` hook)
2025-01-12 18:49:34 +04:00
Alex Turbov 78e45c2db6 Style: Replace TABs with spaces for indentation in some files
Mark files that must use TABs to indent in the `.gitattributes`.
Use space instead of TABs in sources and some data/test files.
2025-01-12 18:49:25 +04:00
Alex Turbov b65930a7a7 Fortran: Add Fortran_BUILDING_INTRINSIC_MODULES for building intrinsics
In commit fe3f846e1b (Makefiles: Add support for building Fortran
intrinsics, 2020-11-19, v3.22.0-rc1~565^2) the property was added with
incorrect spelling `Fortran_BUILDING_INSTRINSIC_MODULES`.  Add a new
property with the correct spelling.  Keep the old one for compatibility.

Issue: #21463
2025-01-09 15:30:00 -05:00
Cristiano Carvalheiro 7d28005244 Xcode: Support for test action 'Build Configuration' scheme property
Also allow scoped property checking on Xcode scheme tests to
 be able to distinguish between launch and test actions build config.
2025-01-09 16:36:33 +00:00
Cristiano Carvalheiro 8aaae0f643 vim: Remove duplicated keywords from cmake.vim 2025-01-09 14:43:06 +00:00
Cristiano Carvalheiro 419cfe30d0 Xcode: Support for 'LLDB Init File' scheme property
Fixes: #24002
2024-12-13 08:31:11 -05:00
Cristiano Carvalheiro 65ad1bbd4c vim: Remove duplicated keywords from cmake.vim 2024-12-13 08:31:11 -05:00
Garrett Campbell 9ed178f9d8 Add generator-agnostic DEBUGGER_WORKING_DIRECTORY target property
Generalize the `VS_DEBUGGER_WORKING_DIRECTORY` property.

Issue: #16478
2024-12-09 10:47:10 -05:00
Alex Turbov 3ae031992a bash-completion: Complete a workflow name after the --workflow option
Update bash completion for commit b80aa1d3a3 (preset: Easier command
line interface for Workflow Presets, 2024-09-30, v3.31.0-rc1~17^2).

Issue: #26270
2024-10-27 21:08:12 +04:00
Pierre Rouleau 8eb8e27fb2 cmake-mode.el: Use line-beginning-position instead of obsolete point-at-bol
That fixes Emacs 29 warning:

    cmake-mode.el:186:48: Warning: ‘point-at-bol’ is an obsolete function
      (as of 29.1); use ‘line-beginning-position’ or ‘pos-bol’ instead.
2024-08-13 15:50:51 -04:00
Brad King b0ba99f152 Merge topic 'doc-add_test-typo'
ca39258a66 Help: Fix typo in add_test documentation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9687
2024-07-29 10:59:00 -04:00
Brad King ca39258a66 Help: Fix typo in add_test documentation 2024-07-26 10:37:35 -04:00
Alex Turbov 549fb86168 bash-completion: Handle cmake --workflow
Issue: #21000
Issue: #26100
2024-07-02 09:29:33 -04:00
Calum Robinson 0721f9bf0f VS: Add VS_FRAMEWORK_REFERENCES
Fixes: #26082
2024-06-26 16:44:51 +01:00
eutro 3ecf6bd1b1 cmake-mode.el: fix bracket string/comment syntax-propertize
With `lexical-binding: t`, the `end` variable is undefined in
`cmake--syntax-propertize-until-bracket-close`, causing syntax
highlighting errors. This fixes that by passing `end` from the caller.
2024-06-24 09:51:05 -04:00
Craig Scott 3889640e8b Auxiliary: Modernize bash completion for ctest and cpack
This applies a similar modernization as was done in 1ff41ba26e
(Auxiliary: bash-completion: use _comp_initialize, 2024-06-02)
for the cmake executable. The _init_completion function was
deprecated upstream in bash-completion 2.12.
2024-06-07 18:48:46 +10:00
Ahmad Samir 1ff41ba26e Auxiliary: bash-completion: use _comp_initialize
_init_completion has been deprecated upstream since 2.12.

https://github.com/scop/bash-completion/blob/main/bash_completion.d/000_bash_completion_compat.bash#L237
2024-06-02 20:07:23 +03:00
Ahmad Samir d03b4acaa9 Auxiliary: Bash-comp: use _init_completion instead of _split_longopt
Using `_init_completion -s` will handle the option splitting and set the
`split` var [1].

Keep setting `split` manually for the older manual bash completion
initialization.

[1] https://github.com/scop/bash-completion/blob/main/bash_completion.d/000_bash_completion_compat.bash#L227
2024-06-02 18:25:00 +03:00
halx99 56a96d1f1f VS: Add option to import .props in .vcxproj.filters files
Adds new target property VS_FILTER_PROPS

Fixes: #25948
2024-05-02 00:30:00 +08:00
Konstantin Kharlamov f0bfcc125d cmake-mode.el: fix "docstring wider than 80 characters" warning
Fixes:
    In cmake-help:
    cmake-mode.el:492:2: Warning: docstring wider than 80 characters
2024-04-11 18:24:18 +03:00
Konstantin Kharlamov c1e5c9f162 cmake-mode.el: fix "no lexical-binding directive" warning
Fixes:
    In toplevel form:
    cmake-mode.el:1:1: Warning: file has no ‘lexical-binding’ directive on its first line
2024-04-11 18:23:48 +03:00
Joerg Bornemann 91336c7469 cmake-mode.el: Simplify jumping to begin/end of functions/macros
This change was spawned by the desire to use `narrow-to-defun` in CMake
files. However, there was no "CMake version" of that function, and it
turns out that we don't need one if we make `beginning-of-defun` and
`end-of-defun` work in `cmake-mode`.

In the setup code of `cmake-mode` we now set the local variables
`beginning-of-defun-function` and `end-of-defun-function`. This makes
`beginning-of-defun` and `end-of-defun` work as expected.

Functions that use this facility also work now: `mark-defun` and
`narrow-to-defun` and possibly others.

We remove `cmake-mark-defun` since it's superfluous now.

We remove the defun-related key bindings since the standard functions
that are bound globally work fine with this patch.
2024-01-25 11:51:17 -05:00
Orkun Tokdemir 7c39dabdbc Autogen: AUTO*_EXECUTABLE: add support for per-config values
* Per-config values were added to `AUTO*_EXECUTABLE`.
* Dependency order was refactored for `cmake_autogen` and `cmake_autorcc` to avoid unnecessary rebuilds.
* A new parameter was added for `cmake_autogen` and `cmake_autorcc` to specify the config name of the `auto*_executable` to be used.
* Add `AUTOGEN_BETTER_GRAPH_MULTI_CONFIG` target property to change the behavior of the dependency graph.
* The timestamp target is split into three targets for per-config to avoid redundant `mocs_compilation` builds when `AUTOGEN_BETTER_GRAPH_MULTI_CONFIG`	 is ON
* Per-config `DEP_FILE_RULE_NAME` values were added to `AutogenInfo.json` for `Multi-Config` usage.
* Some functions were refactored to avoid code duplication.

This commit reimplements fddd0f0443

Fixes: #20074
2024-01-17 16:02:58 +01:00
Craig Scott d0ab70d57d Help: Fix typo in dependency provider method keyword
The cmake.vim file is generated by scanning for keyword-like
strings in the docs. Update the corresponding wrong entry
there too directly for now, which will fix the wrong entry until
the next full regeneration of the file.

Fixes: #25503
2023-12-16 10:27:39 +11:00
Brad King 46c9feaec7 Merge topic 'vim-syntax'
56fb01a176 vim: Fix syntax highlighting for bracket arguments and comments

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9061
2023-12-12 08:40:56 -05:00
namniav 56fb01a176 vim: Fix syntax highlighting for bracket arguments and comments
Fix VIM syntax highlighting for `cmakeBracketArgument`, `cmakeComment`
and `cmakeBracketComment`.

Fixes: #25488
2023-12-11 10:10:44 -05:00
Eisuke Kawashima 27bfbbc2c0 vim: add undo_indent to match upstream vim indentation scripts
This resets `inde` (`indentexpr`) and `indk` (`indentkeys`) to the
global values when closing.  Upstream `vim` updated their indentation
scripts in April 2022 to add this.
2023-12-11 10:07:33 -05:00
Brad King 1f7a653e90 Merge topic 'swift-compilation-mode'
0f80101b73 Tests: Update Swift tests to use CMP0157 NEW behavior
c1d787e473 Swift: Add abstraction for compilation mode
c39384f540 Tests: Simplify RunCMake.Swift conditions to enable use of Swift

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8918
2023-11-19 11:47:37 -05:00
Evan Wilde c1d787e473 Swift: Add abstraction for compilation mode
Add a `CMAKE_Swift_COMPILATION_MODE` variable and corresponding
`Swift_COMPILATION_MODE` target property to control the compilation
mode.  Select among `wholemodule`, `singlefile`, and `incremental`.

Add policy CMP0157 to remove the default `-wmo` flags in favor of the
abstract setting.

Issue: #25366
2023-11-17 08:43:21 -05:00
tophoo 7a07887055 Autogen: Add support for response files for moc predef targets
Add support for response files for moc predef targets and make the limit when
to use response files for autogen targets configurable.
2023-11-16 16:29:02 +01:00