|
|
@@ -0,0 +1,47 @@
|
|
|
+/* 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 <functional>
|
|
|
+#include <string>
|
|
|
+
|
|
|
+#include <cm/optional>
|
|
|
+#include <cmext/string_view>
|
|
|
+
|
|
|
+struct cmScanDepInfo;
|
|
|
+
|
|
|
+enum class CxxModuleMapFormat
|
|
|
+{
|
|
|
+};
|
|
|
+
|
|
|
+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<std::string(std::string const&)> PathForGenerator;
|
|
|
+
|
|
|
+ // Lookup the BMI location of a logical module name.
|
|
|
+ std::function<cm::optional<std::string>(std::string const&)>
|
|
|
+ BmiLocationForModule;
|
|
|
+
|
|
|
+ // Returns the generator path (if known) for the BMI given a
|
|
|
+ // logical module name.
|
|
|
+ cm::optional<std::string> BmiGeneratorPathForModule(
|
|
|
+ std::string const& logical_name) const;
|
|
|
+};
|
|
|
+
|
|
|
+// Return the extension to use for a given modulemap format.
|
|
|
+cm::static_string_view CxxModuleMapExtension(
|
|
|
+ cm::optional<CxxModuleMapFormat> 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);
|