cmDyndepCollation: add a query for visibility of an object's modules

This will be used to hide private modules from the view of consuming
targets.
This commit is contained in:
Ben Boeckel
2023-05-14 17:23:19 -04:00
parent e8efcbec8c
commit 8207a3a266
2 changed files with 19 additions and 0 deletions

View File

@@ -623,3 +623,20 @@ bool cmDyndepCollation::WriteDyndepMetadata(
return result;
}
bool cmDyndepCollation::IsObjectPrivate(
std::string const& object, cmCxxModuleExportInfo const& export_info)
{
#ifdef _WIN32
std::string output_path = object;
cmSystemTools::ConvertToUnixSlashes(output_path);
#else
std::string const& output_path = object;
#endif
auto fileset_info_itr = export_info.ObjectToFileSet.find(output_path);
if (fileset_info_itr == export_info.ObjectToFileSet.end()) {
return false;
}
auto const& file_set = fileset_info_itr->second;
return !cmFileSetVisibilityIsForInterface(file_set.Visibility);
}

View File

@@ -49,4 +49,6 @@ struct cmDyndepCollation
std::vector<cmScanDepInfo> const& objects,
cmCxxModuleExportInfo const& export_info,
cmDyndepMetadataCallbacks const& cb);
static bool IsObjectPrivate(std::string const& object,
cmCxxModuleExportInfo const& export_info);
};