Kaynağa Gözat

ci: Enable MSVC C++ module support tests

Since commit b87645b6a5 (gitlab-ci: Update non-packaging Windows builds
to MSVC 14.33 toolset, 2022-08-18), the version of MSVC used in CI test
jobs supports the `cl -scanDependencies` functionality we need to
support C++ modules.  Enable the corresponding tests.
Brad King 3 yıl önce
ebeveyn
işleme
3490d7a9fc

+ 2 - 0
.gitlab/ci/configure_windows_msvc_cxx_modules_common.cmake

@@ -0,0 +1,2 @@
+set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,shared,export_bmi,install_bmi" CACHE STRING "")
+set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_msvc.cmake" CACHE STRING "")

+ 1 - 0
.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake

@@ -2,4 +2,5 @@ if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "")
   set(CMake_TEST_ISPC "ON" CACHE STRING "")
 endif()
 
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake")
 include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common_ninja.cmake")

+ 1 - 0
.gitlab/ci/configure_windows_vs2022_x64_ninja_multi.cmake

@@ -2,4 +2,5 @@ if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "")
   set(CMake_TEST_ISPC "ON" CACHE STRING "")
 endif()
 
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake")
 include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_common.cmake")

+ 11 - 0
.gitlab/ci/cxx_modules_rules_msvc.cmake

@@ -0,0 +1,11 @@
+set(CMake_TEST_CXXModules_UUID "a246741c-d067-4019-a8fb-3d16b0c9d1d3")
+
+set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
+string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE
+  "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> <SOURCE> -nologo -TP"
+  " -showIncludes"
+  " -scanDependencies <DYNDEP_FILE>"
+  " -Fo<OBJECT>")
+set(CMAKE_EXPERIMENTAL_CXX_SCANDEP_DEPFILE_FORMAT "msvc")
+set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "msvc")
+set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "@<MODULE_MAP_FILE>")