summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/GeneratorToolset/TestToolsetCustomFlagTableDir-check.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2021-03-04 21:47:49 (GMT)
committerBrad King <brad.king@kitware.com>2021-03-22 17:28:27 (GMT)
commit608ef8a6fcbdd3d1a8419ff774109b8f9e5ebafb (patch)
treef25e9e15dd9a73796a5c949f6a1fa393b167a2ef /Tests/RunCMake/GeneratorToolset/TestToolsetCustomFlagTableDir-check.cmake
parent8dd8d6366576c09a44dc19d6609209ff74cd0dde (diff)
downloadCMake-608ef8a6fcbdd3d1a8419ff774109b8f9e5ebafb.zip
CMake-608ef8a6fcbdd3d1a8419ff774109b8f9e5ebafb.tar.gz
CMake-608ef8a6fcbdd3d1a8419ff774109b8f9e5ebafb.tar.bz2
VS: Add a mostly-undocumented hook to load custom JSON flag tables
The names and formats of our VS flag tables are internal implementation details. However, some institutions need to maintain support for non-public VS platforms and toolsets. Provide a hook that their projects can use to load custom flag table files. This helps avoid distributing a custom CMake package within such institutions. Document the hook itself, but explicitly specify that the files the hook loads are not considered a stable interface.
Diffstat (limited to 'Tests/RunCMake/GeneratorToolset/TestToolsetCustomFlagTableDir-check.cmake')
-rw-r--r--Tests/RunCMake/GeneratorToolset/TestToolsetCustomFlagTableDir-check.cmake24
1 files changed, 24 insertions, 0 deletions
diff --git a/Tests/RunCMake/GeneratorToolset/TestToolsetCustomFlagTableDir-check.cmake b/Tests/RunCMake/GeneratorToolset/TestToolsetCustomFlagTableDir-check.cmake
new file mode 100644
index 0000000..79752b1
--- /dev/null
+++ b/Tests/RunCMake/GeneratorToolset/TestToolsetCustomFlagTableDir-check.cmake
@@ -0,0 +1,24 @@
+set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/main.vcxproj")
+if(NOT EXISTS "${vcProjectFile}")
+ set(RunCMake_TEST_FAILED "Project file\n ${vcProjectFile}\ndoes not exist.")
+ return()
+endif()
+
+set(TreatWarningAsError_FOUND FALSE)
+file(STRINGS "${vcProjectFile}" lines)
+foreach(line IN LISTS lines)
+ if(line MATCHES "^ *<TreatWarningAsError>([^<>]*)</TreatWarningAsError>$")
+ set(TreatWarningAsError_FOUND TRUE)
+ set(expectedValue "false")
+ set(actualValue "${CMAKE_MATCH_1}")
+ if(NOT (${actualValue} STREQUAL ${expectedValue}))
+ set(RunCMake_TEST_FAILED "TreatWarningAsError \"${actualValue}\" differs from expected value \"${expectedValue}\".")
+ return()
+ endif()
+ endif()
+endforeach()
+
+if(NOT TreatWarningAsError_FOUND)
+ set(RunCMake_TEST_FAILED "Property TreatWarningAsError not found in project file:\n ${vcProjectFile}.")
+ return()
+endif()