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.
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.
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.
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
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.
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.
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
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
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.
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
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
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.