93c718791e VS: Use 64-bit MSBuild in VS 2022
c46b265839 VS: Add Visual Studio 17 2022 generator
b610b7a35c VS: Update v142 CL flag table for VS 17.0 Preview 1
43375c6418 Help: Remove unnecessary Sphinx versionadded markup in VS toolset selection
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6268
Visual Studio 17 2022 is now a 64-bit native application. It places the
64-bit `MSBuild.exe` in the `PATH` of VS command prompts, so prefer it
for this version and above.
This was previously attempted for older VS versions, but reverted by
commit f3cedf381e (VS: Revert "Use MSBuild matching toolset host
architecture", 2019-03-12, v3.14.0~1^2). For now, do not use the 64-bit
MSBuild for VS 16 and below.
Fixes: #18219
Run the command
python3 Source/cmConvertMSBuildXMLToJSON.py -t v142 \
'c:/.../MSBuild/Microsoft/VC/v160/1033/cl.xml'
To generate `v142_CL.json` locally. Manually move new and updated
settings over to `Templates/MSBuild/FlagTables/v142_CL.json`.
In 3aec26660a (Merge topic 'nasm_add_deps', 2021-03-03) the
ASM_NASM language enabled the generation of GCC compatible
depfiles for NASM. Unfortunatly, those are not supported by YASM.
Fixes: #22341
Use ELF headers vendored in `Utilities/cmelf` to get the ELF constants
and types. Using the same ELF definition header for all compilation
targets allows removing some #ifdefs depending on the host OS since we
know all required ELF constants will always be present. To reduce the
size of this commit, the CMake_USE_ELF_PARSER definite will be removed
in a separate commit.
This allows me to use CMAKE_BUILD_WITH_INSTALL_RPATH=False and the Ninja
generator on macOS, whereas before it would always give me the following
error message (despite cross-compiling for an ELF-based platform):
```
The install of the <name> target requires changing an RPATH from
the build tree, but this is not supported with the Ninja generator unless
on an ELF-based platform. The CMAKE_BUILD_WITH_INSTALL_RPATH variable may
be set to avoid this relinking step.
```
DT_MIPS_RLD_MAP_REL is a machine-speicific dynamic tag, so other
architectures could re-use the value of 0x70000035 to mean something
else. Before using DT_MIPS_RLD_MAP_REL, we have to check that the ELF
file is actually has a e_machine of EM_MIPS.
These headers will be used to provide the ELF parsing code on all host
operating systems (including those that don't have an ELF header, e.g.
macOS). This will also allow removing various OS-dependent #ifdefs from
the cmELF code. Add a script that was used to automate this import.
Co-authored-by: Alex Richardson <Alexander.Richardson@cl.cam.ac.uk>
To avoid problems accessing filesystem, explicitly use 64-bit file
offsets in case the compilation model is 32-bit. This change was made
for the main CMake build by commit 5b10f96793 (Linux: Compile with
_FILE_OFFSET_BITS=64 on 32-bit Linux, 2020-09-23, v3.19.0-rc1~112^2),
but conditionally on 32-bit Linux. For bootstrap, just always add the
definition instead of trying to detect the architecture.
Fixes: #22328