Commit Graph

38108 Commits

Author SHA1 Message Date
Brad King
4697f7122b GenEx: Rename cmGeneratorExpressionContext to cm::GenEx::Evaluation
It has grown to hold information about the evaluation itself,
not just the context in which the evaluation occurs.
2025-09-21 20:21:32 -04:00
Brad King
d1c780886e Merge branch 'backport-genex-refactor' into genex-refactor 2025-09-21 20:20:39 -04:00
Brad King
905cfcfa12 cmGeneratorExpressionNode: Simplify EvaluateDependentExpression signature
The local generator is available in the evaluation context.
2025-09-21 18:58:55 -04:00
Brad King
fe8e82090b cmGeneratorExpressionEvaluationFile: Constify some local generator usage 2025-09-21 18:58:55 -04:00
Brad King
8321178a23 cmFileSet: Constify local generator usage 2025-09-21 18:58:55 -04:00
Brad King
596383a4fe Merge topic 'sequential-bom'
54161c70d5 cmListFileLexer: Do not require files to be seekable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !11162
2025-09-21 18:49:18 -04:00
Brad King
952300ed4e Merge topic 'fbuild_dont_write_empty_deps'
64296789d3 FASTBuild: don't write empty dependencies

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11208
2025-09-21 18:42:57 -04:00
Brad King
f2013e8479 Merge topic 'fbuild_reduce_duplicates'
08d68af5e6 FASTBuild: remove more duplicates from custom commands

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11213
2025-09-21 18:38:43 -04:00
Brad King
c96ec11b5e Merge topic 'fbuild_dont_set_work_dir'
9d54b639d3 FASTBuild: don't set ExecWorkingDir for custom command

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11210
2025-09-21 18:37:08 -04:00
Brad King
4dc0fcabae Merge topic 'fbuild_fix_hash_collision'
4b74d6c5b7 FASTBuild: fix possible collision in exec's name

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11212
2025-09-21 18:35:37 -04:00
Kitware Robot
4357280518 CMake Nightly Date Stamp 2025-09-21 00:05:08 -04:00
Kitware Robot
27557e2e3d CMake Nightly Date Stamp 2025-09-20 00:05:28 -04:00
Eduard Voronkin
64296789d3 FASTBuild: don't write empty dependencies
We were writing "-deps" alias in the generated file
even if we didn't have any dependencies, which is excessive
and makes FASTBuild do more work then necessary.
2025-09-19 09:34:47 -07:00
Sergiu Deitsch
54161c70d5 cmListFileLexer: Do not require files to be seekable
Read the BOM sequentially and store the read bytes for later use if
these do not correspond to a BOM. This allows FIFO to be used as input,
e.g., for piping input or Bash process substitution.
2025-09-19 18:02:06 +02:00
Eduard Voronkin
9d54b639d3 FASTBuild: don't set ExecWorkingDir for custom command
We don't need set ExecWorkingDir since we add
a "cd" command to the script file anyway
(so the custom command will be executed in the correct directory).

Moreover, in 1.16 FASTBuild started using posix_spawn* API
instead of fork() (which is much more efficient),
but it only does so if `ExecWorkingDir` is not set.
2025-09-19 08:16:29 -07:00
Eduard Voronkin
4b74d6c5b7 FASTBuild: fix possible collision in exec's name
I was lucky enough to hit a hash collision
in the first 7 hex digits (28 bits) of SHA256 :)
2025-09-19 08:13:50 -07:00
Eduard Voronkin
08d68af5e6 FASTBuild: remove more duplicates from custom commands
Before there were a lot of duplicated shared across
"ExecInput" and "PreBuildDependencies".
2025-09-19 08:11:58 -07:00
Brad King
616ca13b6a Merge topic 'string-regex-quote'
798cc7010c Tests: Fix regex matching to handle paths with special characters
d94d79a909 string: Add REGEX QUOTE sub-command

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11203
2025-09-19 09:32:03 -04:00
Brad King
7722ce1130 Merge topic 'vs-slnx'
e6aa7742b0 VS: Generate .slnx files for VS 2026
95c2034b32 Tests/RunCMake: Factor out sln-format check scripts
d32b78f139 cmGlobalVisualStudio7Generator: Factor out computation of path to .sln
0a17f4e996 cmVisualStudioSlnParser: Fix storage of some `.sln` parse results
54769660e1 cmake --build: Simplify MSBuild Configuration and Platform arguments
2edc497261 cmake --build: Remove unused code for VS .NET SDK style projects

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11205
2025-09-19 09:29:22 -04:00
Brad King
57a3a09616 Merge topic 'fbuild_unity'
23fd5703ad FASTBuild: add support for Unity builds

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11202
2025-09-19 09:27:11 -04:00
Kitware Robot
4da54e01ae CMake Nightly Date Stamp 2025-09-19 00:05:08 -04:00
Timo Röhling
d94d79a909 string: Add REGEX QUOTE sub-command
Add a command to generate a regular expression that matches an
input string literally by escaping special characters.

Fixes: #18580
2025-09-18 13:25:20 -04:00
Eduard Voronkin
23fd5703ad FASTBuild: add support for Unity builds 2025-09-18 09:40:55 -07:00
Brad King
e6aa7742b0 VS: Generate .slnx files for VS 2026
Since the `Visual Studio 18 2026` generator is new, we can switch
to the `.slnx` file format without changing behavior for users of
VS 2022 and older.

Fixes: #25887
2025-09-18 12:00:01 -04:00
Brad King
d32b78f139 cmGlobalVisualStudio7Generator: Factor out computation of path to .sln 2025-09-18 11:56:37 -04:00
Brad King
0a17f4e996 cmVisualStudioSlnParser: Fix storage of some .sln parse results
In commit 5cdd774d51 (VS: Handle build target correct for .NET SDK style
projects with Any CPU, 2022-02-02, v3.23.0-rc1~3^2), some parse results
were stored in temporary copies of `cmSlnProjectEntry` and thrown away.
2025-09-18 09:10:34 -04:00
Brad King
54769660e1 cmake --build: Simplify MSBuild Configuration and Platform arguments 2025-09-18 09:10:33 -04:00
Brad King
2edc497261 cmake --build: Remove unused code for VS .NET SDK style projects
In commit 5cdd774d51 (VS: Handle build target correct for .NET SDK style
projects with Any CPU, 2022-02-02, v3.23.0-rc1~3^2), some `.sln` parse
results were stored in temporaries and never used by `cmake --build`.
Fixing that locally breaks `--target SomeDotNetSdkProject` in `x64`:

    $ cmake --build . --config Debug --target SomeDotNetSdkProject --verbose
    ".../MSBuild.exe" SomeDotNetSdkProject.csproj ... "/p:Platform=Any CPU"
    error MSB8013: This project doesn't contain ... Debug|Win32

Pending further investigation, remove the partial implementation that
amounts to a no-op.
2025-09-18 09:10:33 -04:00
Brad King
503ab73ee4 Merge topic 'vs-sln'
6a77c80834 cmGlobalVisualStudioGenerator: Consolidate solution generation methods
6b1c101410 cmGlobalVisualStudioGenerator: Adopt more solution generation methods
772cf917c1 cmGlobalVisualStudio71Generator: Remove this now-unnecessary class
3882718872 VS: Decouple solution generation from `.sln` file format
d67e7d2726 VS: Factor out Visual Studio `Version` enumeration
76266f9df6 cmGlobalVisualStudioGenerator: Adopt some solution generation methods
d52eb1d083 cmGlobalVisualStudioGenerator: Remove unused folder support rules
50f87b4bf2 cmGlobalGenerator: Simplify collection of targets under a project()
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11196
2025-09-18 09:06:29 -04:00
Brad King
2d8e464d2f Merge topic 'fbuild_optimize_db'
914a9eea94 FASTBuild: optimize generated file size

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11182
2025-09-18 09:05:04 -04:00
Brad King
917f8b217e Merge topic 'fbuild_more_opts'
99839d1158 FASTBuild: expose more options

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11180
2025-09-18 09:03:07 -04:00
Brad King
457eaa831d Merge topic 'fbuild_improve_ide_proj'
9441f6cfb2 FASTBuild: improve IDE project structure

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11179
2025-09-18 08:59:56 -04:00
Brad King
7ddd67bd41 Merge topic 'cmp0200-warning'
763aa084b0 CMP0200: Fix crash in configuration selection policy warning

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11164
2025-09-18 08:52:00 -04:00
Brad King
baf695bfb0 Merge topic 'install-object-names-build-short'
b2ebfd7709 shortobj: properly force long names when computing long names
1980e47192 Tests/IntermediateDirStrategy: test install paths when using SHORT

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11201
2025-09-18 08:36:12 -04:00
Kitware Robot
aec8b7bad8 CMake Nightly Date Stamp 2025-09-18 00:05:09 -04:00
Ben Boeckel
b2ebfd7709 shortobj: properly force long names when computing long names
The arguments need to be able to force a long name computation so that
install paths can use the intended long paths. Use this computed state
rather than asking the generator for its base state.

Also force long paths for Visual Studio generators when computing it.

Fixes: #27233
2025-09-17 14:36:29 -04:00
Eduard Voronkin
99839d1158 FASTBuild: expose more options
Expose more options for compiler configuration as well as adding unit test
2025-09-17 10:49:27 -07:00
Eduard Voronkin
9441f6cfb2 FASTBuild: improve IDE project structure
Right now, all IDE projects are located at the top level which makes it pretty messy  when there are a lot of them.

With this change the generated IDE project will more closely mimic existing folder structure in the project.
2025-09-17 10:03:26 -07:00
Joerg Bornemann
763aa084b0 CMP0200: Fix crash in configuration selection policy warning
The recently introduced CMP0200 warnings could lead to a crash when
encountering targets with empty configuration values. Avoid calling
substr on an empty `string_view`.

Fixes: #27204
2025-09-17 10:30:12 -04:00
Brad King
a3ccb05430 Merge topic 'vs-ifx'
eae0a053f5 VS: Default Intel Fortran projects to ifx in VS 18 and above

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11197
2025-09-17 10:11:38 -04:00
Brad King
508cabc812 Merge topic 'cps-import-interface'
e23f0748d8 CPS: Import per-configuration attributes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11140
2025-09-17 10:09:06 -04:00
Brad King
6a77c80834 cmGlobalVisualStudioGenerator: Consolidate solution generation methods 2025-09-17 09:40:23 -04:00
Brad King
6b1c101410 cmGlobalVisualStudioGenerator: Adopt more solution generation methods 2025-09-17 09:40:22 -04:00
Brad King
772cf917c1 cmGlobalVisualStudio71Generator: Remove this now-unnecessary class
It no longer contains anything not in `cmGlobalVisualStudio7Generator`.
2025-09-17 09:40:22 -04:00
Brad King
3882718872 VS: Decouple solution generation from .sln file format
Rewrite `.sln` generation using a structured intermediate representation.

Issue: #25887
2025-09-17 09:40:07 -04:00
Kitware Robot
5536171cf3 CMake Nightly Date Stamp 2025-09-17 00:05:18 -04:00
Brad King
eae0a053f5 VS: Default Intel Fortran projects to ifx in VS 18 and above
Intel oneAPI distributions no longer include the `ifort` compiler, but
its Visual Studio Integration defaults to `ifort` if `ifx` is not
explicitly specified in the `.vfproj` file.  We cannot change the
default Fortran compiler in VS 17 and older, but since the VS 18
generator is new, we can establish `ifx` as its default.  This
establishes working defaults on new versions of VS and oneAPI while
retaining existing behavior on older versions.

Issue: #26415
2025-09-16 14:35:33 -04:00
Eduard Voronkin
914a9eea94 FASTBuild: optimize generated file size
Two optimizations here:
1. Remove non-mandatory aliases (I only used them for debugging).
2. Make objects lists' name shorter

Both of those improvements contribute to the decrease of the FASTBuild DB file, since they are getting serialized.
2025-09-16 09:33:54 -07:00
Brad King
d67e7d2726 VS: Factor out Visual Studio Version enumeration 2025-09-16 11:33:35 -04:00
Brad King
76266f9df6 cmGlobalVisualStudioGenerator: Adopt some solution generation methods
All versions of VS we still support use the Solution model.
2025-09-16 11:33:13 -04:00