aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-06-12 15:53:47 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-06-15 10:50:05 +0000
commit162d5b276e1539b1acc44afcd4a4ccadcf99023a (patch)
tree1dff00fc9e451cc47a3e95385b061f2fc95ea4ab /src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
parente54eee40d866326ca7b699e441c83c1c58be3ecf (diff)
Allow private header files in the srcs attribute of objc_* rules.
This uses CppModuleMap and CppModuleMapAction to generate clang module maps for the target and its transitive dependencies. clang enforces private header usage through these maps. Right now module maps are interpreted but modules aren't enabled. RELNOTES: Allow private header files in the srcs attribute of objc_* rules. -- MOS_MIGRATED_REVID=95844137
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
index 9e1372e8d4..6cc286dcbc 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
@@ -16,10 +16,13 @@ package com.google.devtools.build.lib.rules.objc;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
+import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Root;
import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
import com.google.devtools.build.lib.analysis.AnalysisUtils;
+import com.google.devtools.build.lib.rules.cpp.CppFileTypes;
+import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
import com.google.devtools.build.lib.syntax.Label;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -29,7 +32,7 @@ import com.google.devtools.build.lib.vfs.PathFragment;
*/
// TODO(bazel-team): This should really be named DerivedArtifacts as it contains methods for
// final as well as intermediate artifacts.
-final class IntermediateArtifacts {
+public final class IntermediateArtifacts {
/**
* Extension used on the temporary dsym bundle location. Must end in {@code .dSYM} for dsymutil
@@ -270,4 +273,13 @@ final class IntermediateArtifacts {
public Artifact runnerScript() {
return appendExtension("_runner.sh");
}
+
+ /**
+ * {@link CppModuleMap} used to enforce proper usage of private headers.
+ */
+ public CppModuleMap moduleMap() {
+ Artifact mapFile =
+ appendExtension(Iterables.getOnlyElement(CppFileTypes.CPP_MODULE_MAP.getExtensions()));
+ return new CppModuleMap(mapFile, ownerLabel.toString());
+ }
}