diff --git a/Source/cmDyndepCollation.cxx b/Source/cmDyndepCollation.cxx index 53a262b060..f45d81b7e3 100644 --- a/Source/cmDyndepCollation.cxx +++ b/Source/cmDyndepCollation.cxx @@ -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); +} diff --git a/Source/cmDyndepCollation.h b/Source/cmDyndepCollation.h index e70ac09be5..48afe2bfc0 100644 --- a/Source/cmDyndepCollation.h +++ b/Source/cmDyndepCollation.h @@ -49,4 +49,6 @@ struct cmDyndepCollation std::vector const& objects, cmCxxModuleExportInfo const& export_info, cmDyndepMetadataCallbacks const& cb); + static bool IsObjectPrivate(std::string const& object, + cmCxxModuleExportInfo const& export_info); };