Implement parsing, AST, (de-)serialization, and placeholder global

metadata for linking against the libraries/frameworks for imported
modules.

The module map language is extended with a new "link" directive that
specifies what library or framework to link against when a module is
imported, e.g.,

  link "clangAST"

or

  link framework "MyFramework"

Importing the corresponding module (or any of its submodules) will
eventually link against the named library/framework.

For now, I've added some placeholder global metadata that encodes the
imported libraries/frameworks, so that we can test that this
information gets through to the IR. The format of the data is still
under discussion.

llvm-svn: 172437
This commit is contained in:
Douglas Gregor
2013-01-14 17:21:00 +00:00
parent 3778f27b23
commit 6ddfca91e0
14 changed files with 227 additions and 8 deletions

View File

@@ -257,6 +257,16 @@ void Module::print(raw_ostream &OS, unsigned Indent) const {
OS << "\n";
}
for (unsigned I = 0, N = LinkLibraries.size(); I != N; ++I) {
OS.indent(Indent + 2);
OS << "link ";
if (LinkLibraries[I].IsFramework)
OS << "framework ";
OS << "\"";
OS.write_escaped(LinkLibraries[I].Library);
OS << "\"";
}
if (InferSubmodules) {
OS.indent(Indent + 2);
if (InferExplicitSubmodules)