122 Commits

Author SHA1 Message Date
Brad King
47d3a9b2da VS: Add CUDA flag table entry for nvcc --keep flag
Fixes: #27380
2025-11-12 15:04:09 -05:00
Brad King
6f0d245083 VS: Fix /dynamicdeopt flag table entry order for v145 toolset
Sort the longer options before the shorter ones.
2025-09-10 17:01:12 -04:00
Brad King
398ce8af72 VS: Remove /guard:cf from v145 link flag table
Apply the change from commit 9e24437c91 (VS: Remove the '/guard:cf' flag
from v143 link flag table, 2022-01-11, v3.22.2~7^2) to the v145 flag
table.
2025-09-10 17:01:12 -04:00
Brad King
5c9085d876 VS: Remove /MERGE from v145 link flag table
Apply the change from commit b933584a72 (VS: Remove the /MERGE flag from
v143 link flag table, 2021-07-14, v3.21.1~29^2~11) to the v145 flag
table.
2025-09-10 17:01:12 -04:00
Brad King
fe5c78310c VS: Map the link /debug flag for v145 toolset
Apply the change from commit d3175a6079 (VS: Map the link `/debug` flag
for v143, 2021-07-14, v3.21.1~29^2~12) to the v145 flag table.
2025-09-10 17:01:12 -04:00
Brad King
9b3b857a2c VS: Fix /MANIFESTUAC: link flag mapping for v145 toolset
Apply the change from commit 9e10045552 (VS: Fix `/MANIFESTUAC:` link
flag mapping for v143, 2021-07-14, v3.21.1~29^2~13) to the v145 flag
table.
2025-09-10 17:01:11 -04:00
Brad King
d2c43f5df6 VS: Remove C++ module CompileAs flag table entries for v145 toolset
Apply the change from commit 937f454fb9 (VS: Remove C++ module CompileAs
flag table entries for v142 and v143, 2021-07-26, v3.21.1~3^2) to the
v145 flag table.
2025-09-10 17:01:11 -04:00
Brad King
dcc54ae656 VS: Remove cl /FS entry from flag table for v145 toolset
Apply the change from commit 8fb349a80e (VS: Remove cl /FS entry from
flag table for v142 and v143, 2021-07-26, v3.21.1~3^2~1) to the v145
flag table.
2025-09-10 17:01:11 -04:00
Brad King
843a6232f7 VS: Remove broken /fsanitize= entries from flag table for v145 toolset
Apply the change from commit 919fc7fd5f (VS: Remove broken EnableASAN
entry from flag table for v143, 2021-07-14, v3.21.1~29^2~2) to the v145
flag table.  Extend it to the fuzzer variant too.
2025-09-10 17:01:11 -04:00
Brad King
3dcd6b9610 VS: Add -Zc:inline[-] flag table entry for v145 toolset
Apply the change from commit cccef3c5b4 (VS: Add `-Zc:inline[-]` flag
table entry for v143, 2021-07-14, v3.21.1~29^2~9) to the v145 flag
table.
2025-09-10 17:01:11 -04:00
Brad King
b67bc3ba5b VS: Add /Y- flag table entry for v145 toolset
Apply the change from commit 3322bb7081 (VS: Populate `/Y-` flag table
entry for v143, 2021-07-14, v3.21.1~29^2~8) to the v145 flag table.
2025-09-10 17:01:11 -04:00
Brad King
711ccd1583 VS: Fix /reference and /headerUnit flag table entries for v145 toolset
Apply the change from commit 3f9ef3703a (VS: Fix /reference and
/headerUnit flag table entries for v142 and v143, 2021-08-10,
v3.21.2~11^2) to the v145 flag table.
2025-09-10 17:01:10 -04:00
Brad King
86d1b51494 VS: Fix -ifcOutput flag table entry for v145 toolset
Apply the change from commit a22e9e7cf0 (FlagTables: `-ifcOutput` takes
a subsequent argument, 2023-10-16, v3.28.0-rc2~2^2~1) to the v145 flag
table.
2025-09-10 17:01:10 -04:00
Brad King
a926e63864 VS: Add /JMC- flag table entry for v145 toolset
Apply the change from commit 993d706a17 (VS: Populate `/JMC-` flag table
entry for v143, 2021-07-14, v3.21.1~29^2~6) to the v145 flag table.
2025-09-10 17:01:10 -04:00
Brad King
54a5772ce6 VS: Add /FI flag table entry for separate argument to v145 toolset
Apply the change from commit 20cd951c9f (VS: Add compiler flag table
entry for -FI followed by separate argument, 2022-04-01,
v3.24.0-rc1~351^2) to the v145 flag table.
2025-09-10 17:01:10 -04:00
Brad King
267dec2d42 VS: Fix /analyze:log flag mapping for v145 toolset
Apply the change from commit 2d64b01223 (VS: Fix `/analyze:log` flag
mapping for v143, 2021-07-14, v3.21.1~29^2~10) to the v145 flag table.
2025-09-10 17:01:10 -04:00
Brad King
aa0e87f50f VS: Add -Qspectre- flag table entry for v145 toolset
Apply the change from commit a070d87e08 (VS: Populate `-Qspectre-` flag
table entry for v143, 2021-07-14, v3.21.1~29^2~7) to the v145 flag
table.  Sort the longer options before the shorter ones.  Remove the
default variant with an empty switch.
2025-09-10 17:01:10 -04:00
Brad King
730eea86e7 VS: Fix /sourceDependencies flag table entries for v145 toolset
Apply the pattern from commit 1ac1436b25 (VS: Fix `/sourceDependencies`
flag table entries for v143, 2021-07-14, v3.21.1~29^2~1) to the v145
flag table.

Also map `/sourceDependencies:directives` to `/scanDependencies` as we
do for the v142 and v143 toolsets.
2025-09-10 17:01:10 -04:00
Brad King
c2dc6fe566 VS: Fix /scanDependencies flag table entries for v145 toolset
Apply the pattern from commit 50f3c58083 (FlagTables: Add entries for cl
-scanDependencies flag, 2023-10-16, v3.28.0-rc2~2^2) to the v145 flag
table.
2025-09-10 17:01:09 -04:00
Brad King
574e5a159e VS: Add /arch:NotSet flag table entry for v145 toolset
Apply the change from commit 0031d5effa (VS: Add `/arch:NotSet` flag
table entries for v14x toolsets, 2023-09-27, v3.28.0-rc1~36^2) to the
v145 flag table.
2025-09-10 17:01:09 -04:00
Brad King
9a6041bb69 VS: Add /clr:netcore flag table entry for v145 toolset
Apply the change from commit eef13a4b33 (VS: Add COMMON_LANGUAGE_RUNTIME
support for "netcore", 2022-10-25, v3.26.0-rc1~465^2) to the v145 flag
table.
2025-09-10 17:01:09 -04:00
Brad King
c3ecdb49d5 VS: Add v145 flag tables for VS 18.0 Insiders
Run the commands

    python3 Source/cmConvertMSBuildXMLToJSON.py -t v145 \
        'c:/.../18/Insiders/MSBuild/Microsoft/VC/v180/1033/cl.xml'
    python3 Source/cmConvertMSBuildXMLToJSON.py -t v145 \
        'c:/.../18/Insiders/MSBuild/Microsoft/VC/v180/1033/cl.xml'

To generate `Templates/MSBuild/FlagTables/v143_{CL,Link}.json`.
We can reuse `Templates/MSBuild/FlagTables/v14_LIB.json`.
2025-09-10 17:00:32 -04:00
Brad King
76d88f7895 VS: Add CSharp VS 2026 compiler version and flag table v145
While the flag tables for C and C++ were generated from MSBuild `.xml`
files, the CSharp flag tables were written by hand.  Copy the `v143`
flag table to use for the `v145` toolset.
2025-09-08 20:24:14 -04:00
Yonggang Luo
9a720d96eb clang-cl: Add support for C23
Although there is no `cl -std:c23` flag, the underlying Clang compiler
does have a C23 mode we can activate by passing `-std=c23` through a
`clang-cl` wrapper flag.

Also port the fix from commit 30139913e9 (VS: Restore support for mixing
C++23 and C in one target with clang-cl, 2024-12-09, v3.31.3~10^2).

Fixes: #27038
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Co-authored-by: Brad King <brad.king@kitware.com>
2025-07-01 11:20:56 -04:00
Brad King
b3f1c60aff MSVC: Use -std:c++23preview flag for C++23 when available
This was added by VS 17.13.

Fixes: #26692
2025-03-12 14:50:32 -04:00
Brad King
7605228f5e codespell: Fix typos 2024-10-25 08:43:04 -04:00
Ben Boeckel
50f3c58083 FlagTables: Add entries for cl -scanDependencies flag
As of VS 17.6, MSBuild maps `ModuleDependenciesFile` to this flag
instead of the older `-sourceDependencies:directives` flag.
Map both flags to `ModuleDependenciesFile` for compatibility.
2023-10-17 09:51:53 -04:00
Ben Boeckel
a22e9e7cf0 FlagTables: -ifcOutput takes a subsequent argument 2023-10-16 22:12:39 -04:00
Stewart L. McCready
0031d5effa VS: Add /arch:NotSet flag table entries for v14x toolsets
Add `/arch:NotSet` to set `EnableEnhancedInstructionSet` to `NotSet`.

Discourse-topic: https://discourse.cmake.org/t/8892
2023-09-27 11:30:41 -04:00
Brad King
24bcad5bac VS: Honor compile options for ASM_NASM
The Ninja and Makefile generators honor `target_compile_options` and
friends for ASM_NASM `.asm` sources.  Teach the VS generator to
honor them too for consistency.

Issue: #24289
2023-01-26 13:51:49 -05:00
Brad King
b44714a642 VS: Honor compile options for ASM_MARMASM
The Ninja and Makefile generators honor `target_compile_options` and
friends for ASM_MARMMASM `.asm` sources.  Teach the VS generator to
honor them too for consistency.

Issue: #24289
2023-01-26 12:56:25 -05:00
Brad King
64303b9743 ASM_MARMASM: Fix VS flag table entry for debug flag
`$(VCTargetsPath)\BuildCustomizations\marmasm.xml` defines the
`GenerateDebugInformation` boolean setting to map to `-g`.
2022-12-15 14:05:53 -05:00
Ilia K
3166547cf6 ASM_MARMASM: Add support for Microsoft ARM assembler language
https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-reference

Fixes: #23999
2022-11-09 10:22:46 -05:00
ζeh Matt
eef13a4b33 VS: Add COMMON_LANGUAGE_RUNTIME support for "netcore"
Generate `CLRSupport` for Visual Studio projects.

Fixes: #22054
2022-10-28 11:55:58 -04:00
Mis, Piotr
9c33824474 VS: Fix MSBuild property for nostdlib flag
The C# flag table added by commit 9b06c22648 (VS: Add flag tables for
C#, 2016-12-01, v3.8.0-rc1~230^2) and preserved by commit 6e947179a8
(Add json flag tables for C#, 2018-11-21, v3.14.0-rc1~282^2~27) was
written by hand.  Fix the entry name for the `NoStdLib` property.

Fixes: #24077
2022-10-25 11:40:13 -04:00
Brad King
2f8d443e34 Merge topic 'vs-csharp-debug-embedded'
fec515d5fb VS: Add CSharp flag table entry for '/debug:embedded'

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7483
2022-07-20 08:55:59 -04:00
TheApplePieGod
fec515d5fb VS: Add CSharp flag table entry for '/debug:embedded'
Fixes: #23713
2022-07-20 08:42:21 -04:00
Robert Maynard
e3983168da CUDA: MSVC pass all cuda gencode flags via AdditionalOptions
Fixes #23491
2022-06-16 08:13:57 -04:00
Brad King
20cd951c9f VS: Add compiler flag table entry for -FI followed by separate argument
The MSVC `/FI` flag accepts an attached value or a following argument.
Previously our flag tables only had entries for the former.  Add
the latter.

Fixes: #23382
2022-04-01 16:37:08 -04:00
Benjamin Sluis
9e24437c91 VS: Remove the '/guard:cf' flag from v143 link flag table
Apply the change from commit db35e3cfd6 (VS: Fix support for '/guard:cf'
linker flag for v142, 2019-01-24, v3.14.0-rc1~74^2~2) to the v143 flag
table.

The entry for `LinkControlFlowGuard` in `v143_Link.json` does not work
when used in a `.vcxproj` file.  Drop our link flag table entries for
this toolset so that the flag will be passed via `AdditionalOptions`.

Also add a test case.
2022-01-12 16:45:07 -05:00
Brad King
3f9ef3703a VS: Fix /reference and /headerUnit flag table entries for v142 and v143
These flags accept values in following arguments, not immediately
appended.

Fixes: #22530
2021-08-10 10:37:57 -04:00
Brad King
937f454fb9 VS: Remove C++ module CompileAs flag table entries for v142 and v143
The `CompileAs` entry in a `.vcxproj` file with values:

* `CompileAsCppModule` for `-interface`
* `CompileAsCppModuleInternalPartition` for `-internalPartition`
* `CompileAsHeaderUnit` for `-exportHeader`

does not cause the corresponding flag to be added to the command line.
Drop the flag table entries so that the flags go to `AdditionalOptions`.

Fixes: #22477
2021-07-26 10:49:26 -04:00
Brad King
8fb349a80e VS: Remove cl /FS entry from flag table for v142 and v143
The `ForceSynchronousPDBWrites` entry in a `.vcxproj` file does not
actually cause the `/FS` flag to be added to the command line.

Fixes: #22476
2021-07-26 10:45:09 -04:00
Brad King
1ac1436b25 VS: Fix /sourceDependencies flag table entries for v143
Revise the `/sourceDependencies[:directives]` table entries to properly
distinguish the two options (because one is a prefix of the other), and
to populate both `Generate*Dependencies` and `*DependenciesFile`.

This is the manual update mentioned in commit 887e9df0c7 (VS: Update
v142 CL flag table for VS 16.10, 2021-06-04, v3.21.0-rc1~77^2).
2021-07-15 13:12:55 -04:00
Brad King
919fc7fd5f VS: Remove broken EnableASAN entry from flag table for v143
Apply the change from commit 7fce2d372e (VS: Revert "Add support for
ASAN -fsanitize=address flag", 2021-04-26, v3.21.0-rc1~270^2) to the
v143 flag table.

Issue: #21081
2021-07-15 13:12:55 -04:00
Brad King
3f19847b28 VS: Remove empty ExternalWarningLevel entry from flag table for v143 2021-07-15 13:12:54 -04:00
Brad King
ccb6083cbe VS: Remove empty LanguageStandard entries from flag table for v143 2021-07-15 13:12:54 -04:00
Brad King
c167de7e70 VS: Remove empty ConformanceMode entry from flag table for v143 2021-07-15 13:12:54 -04:00
Brad King
993d706a17 VS: Populate /JMC- flag table entry for v143
Apply the change from commit 049410c0b6 (VS: Populate `/JMC-` flag table
entry for v142, 2019-01-24, v3.14.0-rc1~74^2~6) to the v143 flag table.
2021-07-15 13:12:54 -04:00
Brad King
a070d87e08 VS: Populate -Qspectre- flag table entry for v143
Apply the change from commit 43aa632f57 (VS: Populate `-Qspectre-` flag
table entry for v142, 2019-01-24, v3.14.0-rc1~74^2~7) to the v143 flag
table.  Sort the longer options before the shorter ones.  Remove the
default variant with an empty switch.
2021-07-15 13:12:54 -04:00