Browse Source

Merge topic 'build-database-fixes'

12d73c9f78 cmExperimental: recycle build database uuid
d02ca76184 cmDyndepCollation: record required modules to the build database
8a773168fd Tests/CXXModules: help diagnose build database errors
7ca4ac8e13 cmBuildDatabase: fix language comparison for visibility

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !10414
Brad King 1 year ago
parent
commit
3524abf345
20 changed files with 37 additions and 22 deletions
  1. 1 1
      Help/dev/experimental.rst
  2. 1 1
      Source/cmBuildDatabase.cxx
  3. 3 0
      Source/cmDyndepCollation.cxx
  4. 1 1
      Source/cmExperimental.cxx
  5. 1 1
      Tests/RunCMake/CXXModules/NinjaDependInfoCompileDatabase.cmake
  6. 12 0
      Tests/RunCMake/CXXModules/examples/build-database-check.cmake
  7. 2 2
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-all-multi.json
  8. 1 1
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json
  9. 1 1
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json
  10. 1 1
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-config.json
  11. 2 2
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-multi.json
  12. 1 1
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json
  13. 2 2
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all-multi.json
  14. 1 1
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all.json
  15. 1 1
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-config.json
  16. 1 1
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-config.json
  17. 2 2
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-multi.json
  18. 1 1
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx.json
  19. 1 1
      Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json
  20. 1 1
      Tests/RunCMake/CXXModules/examples/export-build-database-setup.cmake

+ 1 - 1
Help/dev/experimental.rst

@@ -105,7 +105,7 @@ Build database support
 In order to activate support for exporting build databases, set
 
 * variable ``CMAKE_EXPERIMENTAL_EXPORT_BUILD_DATABASE`` to
-* value ``4bd552e2-b7fb-429a-ab23-c83ef53f3f13``.
+* value ``73194a1d-c0b5-41b9-9190-a4512925e192``.
 
 This UUID may change in future versions of CMake.  Be sure to use the value
 documented here by the source tree of the version of CMake with which you are

+ 1 - 1
Source/cmBuildDatabase.cxx

@@ -447,7 +447,7 @@ cmBuildDatabase cmBuildDatabase::ForTarget(cmGeneratorTarget* gt,
 
     bool isCXXModule = false;
     bool isPrivate = true;
-    if (sf->GetLanguage() != "CXX"_s) {
+    if (sf->GetLanguage() == "CXX"_s) {
       auto const* fs = gt->GetFileSetForSource(config, sf);
       if (fs && fs->GetType() == "CXX_MODULES"_s) {
         isCXXModule = true;

+ 3 - 0
Source/cmDyndepCollation.cxx

@@ -644,6 +644,9 @@ bool cmDyndepCollation::WriteDyndepMetadata(
             result = false;
           }
         }
+        for (auto const& req : object.Requires) {
+          bdb_entry->second->Requires.push_back(req.LogicalName);
+        }
       } else if (export_info.DatabaseInfo) {
         cmSystemTools::Error(cmStrCat(
           "Failed to find module database entry for ", file_set.SourcePath));

+ 1 - 1
Source/cmExperimental.cxx

@@ -68,7 +68,7 @@ cmExperimental::FeatureData LookupTable[] = {
     false },
   // ExportBuildDatabase
   { "ExportBuildDatabase",
-    "4bd552e2-b7fb-429a-ab23-c83ef53f3f13",
+    "73194a1d-c0b5-41b9-9190-a4512925e192",
     "CMAKE_EXPERIMENTAL_EXPORT_BUILD_DATABASE",
     "CMake's support for exporting build databases is experimental. It is "
     "meant only for experimentation and feedback to CMake developers.",

+ 1 - 1
Tests/RunCMake/CXXModules/NinjaDependInfoCompileDatabase.cmake

@@ -2,7 +2,7 @@
 # here.
 set(CMAKE_CXX_SCANDEP_SOURCE "")
 
-set(CMAKE_EXPERIMENTAL_EXPORT_BUILD_DATABASE "4bd552e2-b7fb-429a-ab23-c83ef53f3f13")
+set(CMAKE_EXPERIMENTAL_EXPORT_BUILD_DATABASE "73194a1d-c0b5-41b9-9190-a4512925e192")
 
 enable_language(CXX)
 

+ 12 - 0
Tests/RunCMake/CXXModules/examples/build-database-check.cmake

@@ -70,7 +70,19 @@ function (check_build_database expect_basename fname component)
   file(READ "${RunCMake_TEST_BINARY_DIR}/${fname}" actual)
   file(READ "${expected_file}" expect)
 
+  set(RunCMake_TEST_FAILED_before "${RunCMake_TEST_FAILED}")
+  set(RunCMake_TEST_FAILED "")
+
   check_json("${actual}" "${expect}")
 
+  if (RunCMake_TEST_FAILED)
+    string(PREPEND RunCMake_TEST_FAILED
+      "${RunCMake_TEST_FAILED_before}\n"
+      "actual file: ${RunCMake_TEST_BINARY_DIR}/${fname}\n"
+      "expect file: ${expected_file}\n")
+  else ()
+    set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED_before}")
+  endif ()
+
   set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
 endfunction ()

+ 2 - 2
Tests/RunCMake/CXXModules/examples/expect/export-build-database-all-multi.json

@@ -138,7 +138,7 @@
             "-Dfrom_source_option"
           ],
           "object": "PATH:CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "PATH:<BINARY_DIR>/CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable<BMIEXT>"
           },
@@ -285,7 +285,7 @@
             "-Dfrom_source_option"
           ],
           "object": "PATH:CMakeFiles/export_build_database.dir<CONFIG_OTHER_DIR>/importable.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<BINARY_DIR>/CMakeFiles/export_build_database.dir<CONFIG_OTHER_DIR>/importable<BMIEXT>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json

@@ -138,7 +138,7 @@
             "-Dfrom_source_option"
           ],
           "object": "PATH:CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<BINARY_DIR>/CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable<BMIEXT>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json

@@ -138,7 +138,7 @@
             "-Dfrom_source_option"
           ],
           "object": "PATH:CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "PATH:<BINARY_DIR>/CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable<BMIEXT>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-config.json

@@ -138,7 +138,7 @@
             "-Dfrom_source_option"
           ],
           "object": "PATH:CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "PATH:<BINARY_DIR>/CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable<BMIEXT>"
           },

+ 2 - 2
Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-multi.json

@@ -138,7 +138,7 @@
             "-Dfrom_source_option"
           ],
           "object": "PATH:CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "PATH:<BINARY_DIR>/CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable<BMIEXT>"
           },
@@ -285,7 +285,7 @@
             "-Dfrom_source_option"
           ],
           "object": "PATH:CMakeFiles/export_build_database.dir<CONFIG_OTHER_DIR>/importable.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "PATH:<BINARY_DIR>/CMakeFiles/export_build_database.dir<CONFIG_OTHER_DIR>/importable<BMIEXT>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json

@@ -138,7 +138,7 @@
             "-Dfrom_source_option"
           ],
           "object": "PATH:CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "PATH:<BINARY_DIR>/CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable<BMIEXT>"
           },

+ 2 - 2
Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all-multi.json

@@ -180,7 +180,7 @@
             "-Dtarget_interface_option"
           ],
           "object": "PATH:CMakeFiles/use_import_interfaces.dir<CONFIG_DIR>/use.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<IGNORE>"
           },
@@ -263,7 +263,7 @@
             "-Dtarget_interface_option"
           ],
           "object": "PATH:CMakeFiles/use_import_interfaces.dir<CONFIG_OTHER_DIR>/use.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<IGNORE>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all.json

@@ -127,7 +127,7 @@
             "-Dtarget_interface_option"
           ],
           "object": "PATH:CMakeFiles/use_import_interfaces.dir<CONFIG_DIR>/use.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<IGNORE>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-config.json

@@ -127,7 +127,7 @@
             "-Dtarget_interface_option"
           ],
           "object": "PATH:CMakeFiles/use_import_interfaces.dir<CONFIG_DIR>/use.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<IGNORE>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-config.json

@@ -127,7 +127,7 @@
             "-Dtarget_interface_option"
           ],
           "object": "PATH:CMakeFiles/use_import_interfaces.dir<CONFIG_DIR>/use.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<IGNORE>"
           },

+ 2 - 2
Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-multi.json

@@ -180,7 +180,7 @@
             "-Dtarget_interface_option"
           ],
           "object": "PATH:CMakeFiles/use_import_interfaces.dir<CONFIG_DIR>/use.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<IGNORE>"
           },
@@ -263,7 +263,7 @@
             "-Dtarget_interface_option"
           ],
           "object": "PATH:CMakeFiles/use_import_interfaces.dir<CONFIG_OTHER_DIR>/use.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<IGNORE>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx.json

@@ -127,7 +127,7 @@
             "-Dtarget_interface_option"
           ],
           "object": "PATH:CMakeFiles/use_import_interfaces.dir<CONFIG_DIR>/use.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<IGNORE>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json

@@ -138,7 +138,7 @@
             "-Dfrom_source_option"
           ],
           "object": "PATH:CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable.cxx<OBJEXT>",
-          "private": true,
+          "private": false,
           "provides": {
             "importable": "<BINARY_DIR>/CMakeFiles/export_build_database.dir<CONFIG_DIR>/importable<BMIEXT>"
           },

+ 1 - 1
Tests/RunCMake/CXXModules/examples/export-build-database-setup.cmake

@@ -1,4 +1,4 @@
-set(CMAKE_EXPERIMENTAL_EXPORT_BUILD_DATABASE "4bd552e2-b7fb-429a-ab23-c83ef53f3f13")
+set(CMAKE_EXPERIMENTAL_EXPORT_BUILD_DATABASE "73194a1d-c0b5-41b9-9190-a4512925e192")
 
 get_property(is_multiconfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
 if (is_multiconfig)