/* 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 struct cmScanDepInfo; enum class CxxModuleMapFormat { Gcc, }; struct CxxModuleLocations { // The path from which all relative paths should be computed. If // this is relative, it is relative to the compiler's working // directory. std::string RootDirectory; // A function to convert a full path to a path for the generator. std::function PathForGenerator; // Lookup the BMI location of a logical module name. std::function(std::string const&)> BmiLocationForModule; // Returns the generator path (if known) for the BMI given a // logical module name. cm::optional BmiGeneratorPathForModule( std::string const& logical_name) const; }; // Return the extension to use for a given modulemap format. cm::static_string_view CxxModuleMapExtension( cm::optional format); // Return the contents of the module map in the given format for the // object file. std::string CxxModuleMapContent(CxxModuleMapFormat format, CxxModuleLocations const& loc, cmScanDepInfo const& obj);