/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include #include class cmGeneratorTarget; struct cmScanDepInfo; class cmSourceFile; namespace Json { class Value; } struct cmDyndepGeneratorCallbacks { std::function ObjectFilePath; }; struct cmDyndepMetadataCallbacks { std::function(std::string const& name)> ModuleFile; }; struct cmCxxModuleExportInfo; struct cmCxxModuleExportInfoDeleter { void operator()(cmCxxModuleExportInfo* ei) const; }; struct cmDyndepCollation { static void AddCollationInformation(Json::Value& tdi, cmGeneratorTarget const* gt, std::string const& config, cmDyndepGeneratorCallbacks const& cb); static std::unique_ptr ParseExportInfo(Json::Value const& tdi); static bool WriteDyndepMetadata(std::string const& lang, std::vector const& objects, cmCxxModuleExportInfo const& export_info, cmDyndepMetadataCallbacks const& cb); };