They are stored in a slightly different place with oneAPI than they
used to be in PSXE.
A similar change was made for Windows by commit 956160bb9a (IRSL: Fix
search for Windows redist files with Intel Classic compiler, 2021-09-23,
v3.22.0-rc1~88^2), which left a comment about the locations relative to
the Classic and oneAPI compilers.
Fixes: #23310
VS 2022 Preview 5 renamed the redist directories from `Microsoft.VC142.*`
to `Microsoft.VC143.*` in order to match the `v143` toolset name.
Fixes: #22586
The oneAPI icx/ifx compilers are under `.../windows/bin`.
The classic icl/ifort compilers are under `.../windows/bin/intel64`.
Add paths to the redist directory relative to both locations.
Fixes: #22673
Fix a cut-n-paste error from commit fd4406f33e (IRSL: Add Intel compiler
support, 2017-08-16, v3.10.0-rc1~187^2). Make the checked and used
paths match.
The path to the 32 bit libraries in the Intel windows/redist folder use
ia32. I don't remember if this has changed at some point, but ia32 has
been used at least since Intel Fortran XE 2018.
Since VS 2019, the v141 toolset redistributables can be found in
either the VS 2019 or VS 2017 install directory. Update the logic
to search multiple versions of VS.
Fixes: #19488
Fix the toolset v143 check from commit 33ee779330 (IRSL: Fix discovery
of VS 2019 v142 toolset redistributables, 2019-04-03, v3.14.2~6^2) to
check the correct variable.
VS 2019 Update 1 will fix its redist directories to be named `VC142`
instead of `VC141`. It will also use cl `19.21` instead of `19.20`
so we can use that to distinguish the versions.
Fixes: #19131
Since VS 2017's v141 toolset there is no longer a simple equation to
calculate the redist name, dll version, and VS IDE version from just the
MSVC toolset version. Refactor the logic to use hard-coded values and
warn when a new version is not supported.
Fixes: #19125
Found via `codespell -q 3 -I ../cmake-whitelist.txt --skip="./Utilities"`
where the whitelist consists of
```
aci
ans
behaviour
buil
convertor
dum
earch
ect
emmited
emmitted
helpfull
iff
isnt
ith
lowercased
mose
nd
nknown
nto
objext
ot
pathes
pevents
splitted
substract
superceded
supercedes
te
tim
todays
uint
upto
whitespaces
```
Previously, only existence of `mfc${v}.dll` and `mfc${v}d.dll` variants
was checked and it was assumed that the managed variants `mfcm*.dll`
also existed. This assumption doesn't hold with Visual Studio 2017.
Check each file separately.
Fixes: #17913
`libgfxoffload` is only used and installed by the Intel C/C++ compilers
and will be unavailable if only Intel Fortran has been installed.
Fixes: #17550
The presence of the `1041` seems to solely depend on whether a given
Intel compiler release was available in Japanese or not. Install it if
it is present and silently ignore it otherwise.
Example: The Intel 2018.0 release did not ship it, but the 2018.1
compilers have it.
At the moment, the Visual C++ OpenMP libraries will be installed for all
compilers simulating MSVC. They should however only be provided if we're
dealing with actual MSVC.
Store the `VC###` component of the `Microsoft.VC###.CRT` directory name
in a variable set based on the toolchain version. Its naming convention
is changed by VS 15.3.
Define a `CMAKE_WINDOWS_KITS_10_DIR` environment variable to allow
users to tell CMake about a custom Windows 10 SDK directory. We
choose to make this an environment variable rather than a CMake
variable or cache entry because:
* Using a custom directory also requires custom external MSBuild
configuration. Therefore users are already configuring a
custom environment.
* The custom directory must be set consistently in all parts of
a build including nested projects. An environment variable
avoids requiring users to thread the setting into nested builds.
Fixes: #16743
Use our undocumented `cmake_host_system_information` query to find the
VS 2017 installation directory by asking the VS installer tool. Then
look relative to that for the redist directory.
Fixes: #16737
VS 2017 (VS 15) places its redist DLLs in `Microsoft.VC150.*`
directories but still uses version number `140` in the DLL names. The
redist directories now have version numbers in their name, and the MSVC
and MFC runtime DLLs may be in directories with different versions.
Fill out our logic to handle this.
For now assume we are given the `MSVC_REDIST_DIR` value as a cache
entry. Unfortunately we cannot yet find the VS 2017 MSVC redist
directory automatically since there is no registry entry for the VS
installation. Later we will have to use `cmVSSetupHelper` for this.
Issue: #16735