diff --git a/Help/dev/experimental.rst b/Help/dev/experimental.rst index 907b31fad5..6ad1a3bcc6 100644 --- a/Help/dev/experimental.rst +++ b/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 diff --git a/Source/cmBuildDatabase.cxx b/Source/cmBuildDatabase.cxx index c80e7fb54c..b25ca278d6 100644 --- a/Source/cmBuildDatabase.cxx +++ b/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; diff --git a/Source/cmDyndepCollation.cxx b/Source/cmDyndepCollation.cxx index 98aaab245e..54d283bc16 100644 --- a/Source/cmDyndepCollation.cxx +++ b/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)); diff --git a/Source/cmExperimental.cxx b/Source/cmExperimental.cxx index 397cca7d93..8e4033f43c 100644 --- a/Source/cmExperimental.cxx +++ b/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.", diff --git a/Tests/RunCMake/CXXModules/NinjaDependInfoCompileDatabase.cmake b/Tests/RunCMake/CXXModules/NinjaDependInfoCompileDatabase.cmake index 91a6884e1a..27daba04d2 100644 --- a/Tests/RunCMake/CXXModules/NinjaDependInfoCompileDatabase.cmake +++ b/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) diff --git a/Tests/RunCMake/CXXModules/examples/build-database-check.cmake b/Tests/RunCMake/CXXModules/examples/build-database-check.cmake index c09aceaecd..9b440a8440 100644 --- a/Tests/RunCMake/CXXModules/examples/build-database-check.cmake +++ b/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 () diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all-multi.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all-multi.json index e1603bee2e..b7b9c03efb 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all-multi.json +++ b/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/importable.cxx", - "private": true, + "private": false, "provides": { "importable": "PATH:/CMakeFiles/export_build_database.dir/importable" }, @@ -285,7 +285,7 @@ "-Dfrom_source_option" ], "object": "PATH:CMakeFiles/export_build_database.dir/importable.cxx", - "private": true, + "private": false, "provides": { "importable": "/CMakeFiles/export_build_database.dir/importable" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json index 440bc4ef60..e08ee35c01 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-all.json @@ -138,7 +138,7 @@ "-Dfrom_source_option" ], "object": "PATH:CMakeFiles/export_build_database.dir/importable.cxx", - "private": true, + "private": false, "provides": { "importable": "/CMakeFiles/export_build_database.dir/importable" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json index 88771651ef..df5308f77c 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-config.json @@ -138,7 +138,7 @@ "-Dfrom_source_option" ], "object": "PATH:CMakeFiles/export_build_database.dir/importable.cxx", - "private": true, + "private": false, "provides": { "importable": "PATH:/CMakeFiles/export_build_database.dir/importable" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-config.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-config.json index 88771651ef..df5308f77c 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-config.json +++ b/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/importable.cxx", - "private": true, + "private": false, "provides": { "importable": "PATH:/CMakeFiles/export_build_database.dir/importable" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-multi.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-multi.json index 0a27fecd67..4a3a4397dc 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx-multi.json +++ b/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/importable.cxx", - "private": true, + "private": false, "provides": { "importable": "PATH:/CMakeFiles/export_build_database.dir/importable" }, @@ -285,7 +285,7 @@ "-Dfrom_source_option" ], "object": "PATH:CMakeFiles/export_build_database.dir/importable.cxx", - "private": true, + "private": false, "provides": { "importable": "PATH:/CMakeFiles/export_build_database.dir/importable" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json index 88771651ef..df5308f77c 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-cxx.json @@ -138,7 +138,7 @@ "-Dfrom_source_option" ], "object": "PATH:CMakeFiles/export_build_database.dir/importable.cxx", - "private": true, + "private": false, "provides": { "importable": "PATH:/CMakeFiles/export_build_database.dir/importable" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all-multi.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all-multi.json index 2fdaef5add..a1817d4d8f 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all-multi.json +++ b/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/use.cxx", - "private": true, + "private": false, "provides": { "importable": "" }, @@ -263,7 +263,7 @@ "-Dtarget_interface_option" ], "object": "PATH:CMakeFiles/use_import_interfaces.dir/use.cxx", - "private": true, + "private": false, "provides": { "importable": "" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all.json index cb3b3a2300..42d934bd03 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-all.json +++ b/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/use.cxx", - "private": true, + "private": false, "provides": { "importable": "" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-config.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-config.json index cb3b3a2300..42d934bd03 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-config.json +++ b/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/use.cxx", - "private": true, + "private": false, "provides": { "importable": "" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-config.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-config.json index cb3b3a2300..42d934bd03 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-config.json +++ b/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/use.cxx", - "private": true, + "private": false, "provides": { "importable": "" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-multi.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-multi.json index 2fdaef5add..a1817d4d8f 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx-multi.json +++ b/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/use.cxx", - "private": true, + "private": false, "provides": { "importable": "" }, @@ -263,7 +263,7 @@ "-Dtarget_interface_option" ], "object": "PATH:CMakeFiles/use_import_interfaces.dir/use.cxx", - "private": true, + "private": false, "provides": { "importable": "" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx.json index cb3b3a2300..42d934bd03 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-imported-cxx.json +++ b/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/use.cxx", - "private": true, + "private": false, "provides": { "importable": "" }, diff --git a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json index 440bc4ef60..e08ee35c01 100644 --- a/Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json +++ b/Tests/RunCMake/CXXModules/examples/expect/export-build-database-target.json @@ -138,7 +138,7 @@ "-Dfrom_source_option" ], "object": "PATH:CMakeFiles/export_build_database.dir/importable.cxx", - "private": true, + "private": false, "provides": { "importable": "/CMakeFiles/export_build_database.dir/importable" }, diff --git a/Tests/RunCMake/CXXModules/examples/export-build-database-setup.cmake b/Tests/RunCMake/CXXModules/examples/export-build-database-setup.cmake index 20a9e902fc..bbff95fb0b 100644 --- a/Tests/RunCMake/CXXModules/examples/export-build-database-setup.cmake +++ b/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)