Support for modular module-map-files

This patch is the first step to make module-map-files modular (instead
of requiring a single "module.map"-file per include directory). This
step adds a new "extern module" declaration that enables
module-map-files to reference one another along with a very basic
implementation.

The next steps are:

* Combine this with the use-declaration (from
  http://llvm-reviews.chandlerc.com/D1546) in order to only load module
  map files required for a specific compilation.
* Add an additional flag to start with a specific module-map-file (instead
  of requiring there to be at least one "module.map").

Review: http://llvm-reviews.chandlerc.com/D1637
llvm-svn: 190497
diff --git a/clang/test/Modules/Inputs/modular_maps/a.h b/clang/test/Modules/Inputs/modular_maps/a.h
new file mode 100644
index 0000000..a36dc1b
--- /dev/null
+++ b/clang/test/Modules/Inputs/modular_maps/a.h
@@ -0,0 +1,4 @@
+#ifndef A_H
+#define A_H
+const int a = 2;
+#endif
diff --git a/clang/test/Modules/Inputs/modular_maps/b.h b/clang/test/Modules/Inputs/modular_maps/b.h
new file mode 100644
index 0000000..55daf72
--- /dev/null
+++ b/clang/test/Modules/Inputs/modular_maps/b.h
@@ -0,0 +1,4 @@
+#ifndef B_H
+#define B_H
+const int b = 3;
+#endif
diff --git a/clang/test/Modules/Inputs/modular_maps/module.map b/clang/test/Modules/Inputs/modular_maps/module.map
new file mode 100644
index 0000000..7018c41
--- /dev/null
+++ b/clang/test/Modules/Inputs/modular_maps/module.map
@@ -0,0 +1,6 @@
+module A {
+  header "a.h"
+}
+
+extern module B "moduleb.map"
+
diff --git a/clang/test/Modules/Inputs/modular_maps/moduleb.map b/clang/test/Modules/Inputs/modular_maps/moduleb.map
new file mode 100644
index 0000000..6f36ccd
--- /dev/null
+++ b/clang/test/Modules/Inputs/modular_maps/moduleb.map
@@ -0,0 +1,3 @@
+module B {
+  private header "b.h"
+}