浏览代码

Tests/CXXModules: support building a project with `Ninja`

This allows testing mixed generator setups.
Ben Boeckel 1 年之前
父节点
当前提交
150d7dbd68
共有 1 个文件被更改,包括 29 次插入0 次删除
  1. 29 0
      Tests/RunCMake/CXXModules/RunCMakeTest.cmake

+ 29 - 0
Tests/RunCMake/CXXModules/RunCMakeTest.cmake

@@ -180,7 +180,13 @@ endfunction ()
 # - `compile_commands`: the generator supports `compile_commands.json`
 # - `collation`: the generator supports module collation features
 # - `export_bmi`: the generator supports exporting BMIs
+# - `ninja`: a `ninja` binary is available to perform `Ninja`-only testing
+#   (assumed if the generator matches `Ninja`).
 string(REPLACE "," ";" CMake_TEST_MODULE_COMPILATION "${CMake_TEST_MODULE_COMPILATION}")
+if (RunCMake_GENERATOR MATCHES "Ninja")
+  list(APPEND CMake_TEST_MODULE_COMPILATION
+    "ninja")
+endif ()
 
 if (RunCMake_GENERATOR MATCHES "Ninja")
   if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
@@ -306,3 +312,26 @@ if ("install_bmi" IN_LIST CMake_TEST_MODULE_COMPILATION)
     endif ()
   endif ()
 endif ()
+
+# All remaining tests require a working `Ninja` generator to set up a test case
+# for the current generator.
+if (NOT "ninja" IN_LIST CMake_TEST_MODULE_COMPILATION)
+  return ()
+endif ()
+# All remaining tests require `bmionly` in order to consume from the `ninja`
+# build.
+if (NOT "bmionly" IN_LIST CMake_TEST_MODULE_COMPILATION)
+  return ()
+endif ()
+
+function (run_cxx_module_test_ninja directory)
+  set(RunCMake_GENERATOR "Ninja")
+  set(RunCMake_CXXModules_NO_TEST 1)
+  set(RunCMake_CXXModules_INSTALL 1)
+  # `Ninja` is not a multi-config generator.
+  set(RunCMake_GENERATOR_IS_MULTI_CONFIG 0)
+  run_cxx_module_test("${directory}" "${directory}-ninja" ${ARGN})
+endfunction ()
+
+# Installation happens within `run_cxx_module_test_ninja`.
+set(RunCMake_CXXModules_INSTALL 0)