summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-04-01 16:37:08 -0400
committerBrad King <brad.king@kitware.com>2022-04-01 16:37:08 -0400
commit20cd951c9f4dff5230a9b22adbc6c4dbd0d6e233 (patch)
tree7369d72633ff22ef0fef377214fa8d0f65f426b1
parent6e1be5dbefab3e7317502e3d0fe4b132d0162ae5 (diff)
downloadcmake-20cd951c9f4dff5230a9b22adbc6c4dbd0d6e233.tar.gz
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
-rw-r--r--Templates/MSBuild/FlagTables/v10_CL.json11
-rw-r--r--Templates/MSBuild/FlagTables/v11_CL.json11
-rw-r--r--Templates/MSBuild/FlagTables/v12_CL.json11
-rw-r--r--Templates/MSBuild/FlagTables/v140_CL.json11
-rw-r--r--Templates/MSBuild/FlagTables/v141_CL.json11
-rw-r--r--Templates/MSBuild/FlagTables/v142_CL.json11
-rw-r--r--Templates/MSBuild/FlagTables/v143_CL.json11
-rw-r--r--Tests/RunCMake/VS10Project/RunCMakeTest.cmake1
-rw-r--r--Tests/RunCMake/VS10Project/VsForceInclude-check.cmake18
-rw-r--r--Tests/RunCMake/VS10Project/VsForceInclude.cmake5
10 files changed, 101 insertions, 0 deletions
diff --git a/Templates/MSBuild/FlagTables/v10_CL.json b/Templates/MSBuild/FlagTables/v10_CL.json
index 06158bee76..a8c2cc7f5e 100644
--- a/Templates/MSBuild/FlagTables/v10_CL.json
+++ b/Templates/MSBuild/FlagTables/v10_CL.json
@@ -860,6 +860,17 @@
"value": "",
"flags": [
"UserValue",
+ "UserRequired",
+ "SemicolonAppendable"
+ ]
+ },
+ {
+ "name": "ForcedIncludeFiles",
+ "switch": "FI",
+ "comment": "Forced Include File",
+ "value": "",
+ "flags": [
+ "UserFollowing",
"SemicolonAppendable"
]
},
diff --git a/Templates/MSBuild/FlagTables/v11_CL.json b/Templates/MSBuild/FlagTables/v11_CL.json
index b47ab2e983..bb64985f84 100644
--- a/Templates/MSBuild/FlagTables/v11_CL.json
+++ b/Templates/MSBuild/FlagTables/v11_CL.json
@@ -923,6 +923,17 @@
"value": "",
"flags": [
"UserValue",
+ "UserRequired",
+ "SemicolonAppendable"
+ ]
+ },
+ {
+ "name": "ForcedIncludeFiles",
+ "switch": "FI",
+ "comment": "Forced Include File",
+ "value": "",
+ "flags": [
+ "UserFollowing",
"SemicolonAppendable"
]
},
diff --git a/Templates/MSBuild/FlagTables/v12_CL.json b/Templates/MSBuild/FlagTables/v12_CL.json
index 771a5551cd..5bc61fd84d 100644
--- a/Templates/MSBuild/FlagTables/v12_CL.json
+++ b/Templates/MSBuild/FlagTables/v12_CL.json
@@ -937,6 +937,17 @@
"value": "",
"flags": [
"UserValue",
+ "UserRequired",
+ "SemicolonAppendable"
+ ]
+ },
+ {
+ "name": "ForcedIncludeFiles",
+ "switch": "FI",
+ "comment": "Forced Include File",
+ "value": "",
+ "flags": [
+ "UserFollowing",
"SemicolonAppendable"
]
},
diff --git a/Templates/MSBuild/FlagTables/v140_CL.json b/Templates/MSBuild/FlagTables/v140_CL.json
index 3dc9f353d3..58e22ba446 100644
--- a/Templates/MSBuild/FlagTables/v140_CL.json
+++ b/Templates/MSBuild/FlagTables/v140_CL.json
@@ -972,6 +972,17 @@
"value": "",
"flags": [
"UserValue",
+ "UserRequired",
+ "SemicolonAppendable"
+ ]
+ },
+ {
+ "name": "ForcedIncludeFiles",
+ "switch": "FI",
+ "comment": "Forced Include File",
+ "value": "",
+ "flags": [
+ "UserFollowing",
"SemicolonAppendable"
]
},
diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
index 5b18e32ea2..604e6b6c87 100644
--- a/Templates/MSBuild/FlagTables/v141_CL.json
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -1077,6 +1077,17 @@
"value": "",
"flags": [
"UserValue",
+ "UserRequired",
+ "SemicolonAppendable"
+ ]
+ },
+ {
+ "name": "ForcedIncludeFiles",
+ "switch": "FI",
+ "comment": "Forced Include File",
+ "value": "",
+ "flags": [
+ "UserFollowing",
"SemicolonAppendable"
]
},
diff --git a/Templates/MSBuild/FlagTables/v142_CL.json b/Templates/MSBuild/FlagTables/v142_CL.json
index 4c65ad9bd7..c76c040bc0 100644
--- a/Templates/MSBuild/FlagTables/v142_CL.json
+++ b/Templates/MSBuild/FlagTables/v142_CL.json
@@ -1286,6 +1286,17 @@
"value": "",
"flags": [
"UserValue",
+ "UserRequired",
+ "SemicolonAppendable"
+ ]
+ },
+ {
+ "name": "ForcedIncludeFiles",
+ "switch": "FI",
+ "comment": "Forced Include File",
+ "value": "",
+ "flags": [
+ "UserFollowing",
"SemicolonAppendable"
]
},
diff --git a/Templates/MSBuild/FlagTables/v143_CL.json b/Templates/MSBuild/FlagTables/v143_CL.json
index 96f74b1f2b..993fbf14d9 100644
--- a/Templates/MSBuild/FlagTables/v143_CL.json
+++ b/Templates/MSBuild/FlagTables/v143_CL.json
@@ -1285,6 +1285,17 @@
"value": "",
"flags": [
"UserValue",
+ "UserRequired",
+ "SemicolonAppendable"
+ ]
+ },
+ {
+ "name": "ForcedIncludeFiles",
+ "switch": "FI",
+ "comment": "Forced Include File",
+ "value": "",
+ "flags": [
+ "UserFollowing",
"SemicolonAppendable"
]
},
diff --git a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
index b19c1a8020..273b9d5188 100644
--- a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
+++ b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
@@ -35,6 +35,7 @@ run_cmake(VsProjectImport)
run_cmake(VsPackageReferences)
run_cmake(VsDpiAware)
run_cmake(VsDpiAwareBadParam)
+run_cmake(VsForceInclude)
run_cmake(VsPrecompileHeaders)
run_cmake(VsPrecompileHeadersReuseFromCompilePDBName)
run_cmake(VsDeployEnabled)
diff --git a/Tests/RunCMake/VS10Project/VsForceInclude-check.cmake b/Tests/RunCMake/VS10Project/VsForceInclude-check.cmake
new file mode 100644
index 0000000000..8906e9232d
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsForceInclude-check.cmake
@@ -0,0 +1,18 @@
+set(tgt_project "${RunCMake_TEST_BINARY_DIR}/tgt.vcxproj")
+if (NOT EXISTS "${tgt_project}")
+ set(RunCMake_TEST_FAILED "Generated project file does not exist:\n ${tgt_project}\n")
+ return()
+endif()
+
+file(STRINGS ${tgt_project} tgt_projects_strings REGEX ForcedIncludeFiles)
+
+foreach(line IN LISTS tgt_projects_strings)
+ if (line MATCHES "<ForcedIncludeFiles>force_include_1.h;force_include_2.h</ForcedIncludeFiles>")
+ set(have_FI ON)
+ endif()
+endforeach()
+
+if (NOT have_FI)
+ set(RunCMake_TEST_FAILED "Generated project does not have expected ForcedIncludeFiles.")
+ return()
+endif()
diff --git a/Tests/RunCMake/VS10Project/VsForceInclude.cmake b/Tests/RunCMake/VS10Project/VsForceInclude.cmake
new file mode 100644
index 0000000000..fa1f544081
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsForceInclude.cmake
@@ -0,0 +1,5 @@
+enable_language(CXX)
+
+add_library(tgt STATIC empty.cxx)
+target_compile_options(tgt PRIVATE "SHELL:/FI force_include_1.h")
+target_compile_options(tgt PRIVATE "/FIforce_include_2.h")