[modules] Initial support for explicitly loading .pcm files.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Wed, 22 Oct 2014 02:05:46 +0000 (02:05 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Wed, 22 Oct 2014 02:05:46 +0000 (02:05 +0000)
commite842a47452223f9f3b683e0f7f9cccb48192cbb6
treed86e1e37d64cc2aa392947392af816d5b79583ad
parenta672ecefef25bcc8cf0d7ac8d54c5139f6386df4
[modules] Initial support for explicitly loading .pcm files.

Implicit module builds are not well-suited to a lot of build systems. In
particular, they fare badly in distributed build systems, and they lead to
build artifacts that are not tracked as part of the usual dependency management
process. This change allows explicitly-built module files (which are already
supported through the -emit-module flag) to be explicitly loaded into a build,
allowing build systems to opt to manage module builds and dependencies
themselves.

This is only the first step in supporting such configurations, and it should
be considered experimental and subject to change or removal for now.

llvm-svn: 220359
21 files changed:
clang/include/clang/Basic/DiagnosticFrontendKinds.td
clang/include/clang/Basic/DiagnosticSerializationKinds.td
clang/include/clang/Driver/Options.td
clang/include/clang/Frontend/CompilerInstance.h
clang/include/clang/Frontend/FrontendOptions.h
clang/include/clang/Serialization/ASTReader.h
clang/include/clang/Serialization/Module.h
clang/lib/Driver/Tools.cpp
clang/lib/Frontend/ASTUnit.cpp
clang/lib/Frontend/CompilerInstance.cpp
clang/lib/Frontend/CompilerInvocation.cpp
clang/lib/Frontend/FrontendAction.cpp
clang/lib/Serialization/ASTReader.cpp
clang/lib/Serialization/ASTReaderDecl.cpp
clang/lib/Serialization/ModuleManager.cpp
clang/test/Modules/Inputs/explicit-build/a.h [new file with mode: 0644]
clang/test/Modules/Inputs/explicit-build/b.h [new file with mode: 0644]
clang/test/Modules/Inputs/explicit-build/c.h [new file with mode: 0644]
clang/test/Modules/Inputs/explicit-build/module.modulemap [new file with mode: 0644]
clang/test/Modules/explicit-build.cpp [new file with mode: 0644]
clang/test/Modules/resolution-change.m