aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java69
1 files changed, 9 insertions, 60 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index bf6acfd396..e311bc3473 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -34,13 +34,11 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INCLUDE;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INSTRUMENTED_SOURCE;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LIBRARY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKED_BINARY;
-import static com.google.devtools.build.lib.rules.objc.ObjcProvider.MODULE_MAP;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_DYLIB;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_FRAMEWORK;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SOURCE;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.STORYBOARD;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.STRINGS;
-import static com.google.devtools.build.lib.rules.objc.ObjcProvider.TOP_LEVEL_MODULE_MAP;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.WEAK_SDK_FRAMEWORK;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.XCASSETS_DIR;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.XCDATAMODEL;
@@ -62,12 +60,10 @@ import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.rules.cpp.CcCommon;
import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
-import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
import com.google.devtools.build.lib.util.FileType;
import com.google.devtools.build.lib.util.RegexFilter;
import com.google.devtools.build.lib.vfs.PathFragment;
-import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -95,10 +91,6 @@ public final class ObjcCommon {
}
ImmutableList<Artifact> hdrs() {
- // Some rules may compile but not have the "hdrs" attribute".
- if (!ruleContext.attributes().has("hdrs", Type.LABEL_LIST)) {
- return ImmutableList.of();
- }
return ImmutableList.copyOf(CcCommon.getHeaders(ruleContext));
}
@@ -184,37 +176,6 @@ public final class ObjcCommon {
}
return optionsProvider.getCopts();
}
-
- /**
- * The clang module maps of direct dependencies of this rule. These are needed to generate
- * this rule's module map.
- */
- public List<CppModuleMap> directDepModuleMaps() {
- // Make sure all dependencies that have headers are included here. If a module map is missing,
- // its private headers will be treated as public!
- ArrayList<CppModuleMap> moduleMaps = new ArrayList<>();
- collectModuleMapsFromAttributeIfExists(moduleMaps, "deps");
- collectModuleMapsFromAttributeIfExists(moduleMaps, "non_propagated_deps");
- return moduleMaps;
- }
-
- /**
- * Collects all module maps from the targets in a certain attribute and adds them into
- * {@code moduleMaps}.
- *
- * @param moduleMaps an {@link ArrayList} to collect the module maps into
- * @param attribute the name of a label list attribute to collect module maps from
- */
- private void collectModuleMapsFromAttributeIfExists(ArrayList<CppModuleMap> moduleMaps,
- String attribute) {
- if (ruleContext.attributes().has(attribute, Type.LABEL_LIST)) {
- Iterable<ObjcProvider> providers =
- ruleContext.getPrerequisites(attribute, Mode.TARGET, ObjcProvider.class);
- for (ObjcProvider provider : providers) {
- moduleMaps.addAll(provider.get(TOP_LEVEL_MODULE_MAP).toCollection());
- }
- }
- }
}
/**
@@ -273,9 +234,9 @@ public final class ObjcCommon {
private Iterable<ObjcProvider> directDepObjcProviders = ImmutableList.of();
private Iterable<String> defines = ImmutableList.of();
private Iterable<PathFragment> userHeaderSearchPaths = ImmutableList.of();
+ private Iterable<Artifact> headers = ImmutableList.of();
private IntermediateArtifacts intermediateArtifacts;
private boolean alwayslink;
- private boolean generatesModuleMap;
private Iterable<Artifact> extraImportLibraries = ImmutableList.of();
private Optional<Artifact> linkedBinary = Optional.absent();
private Optional<Artifact> breakpadFile = Optional.absent();
@@ -358,6 +319,11 @@ public final class ObjcCommon {
return this;
}
+ public Builder addHeaders(Iterable<Artifact> headers) {
+ this.headers = Iterables.concat(this.headers, headers);
+ return this;
+ }
+
Builder setIntermediateArtifacts(IntermediateArtifacts intermediateArtifacts) {
this.intermediateArtifacts = intermediateArtifacts;
return this;
@@ -369,15 +335,6 @@ public final class ObjcCommon {
}
/**
- * Specifies that this target has a clang module map. This should be called if this target
- * compiles sources or exposes headers for other targets to use.
- */
- Builder setGeneratesModuleMap() {
- this.generatesModuleMap = true;
- return this;
- }
-
- /**
* Adds additional static libraries to be linked into the final ObjC application bundle.
*/
Builder addExtraImportLibraries(Iterable<Artifact> extraImportLibraries) {
@@ -433,6 +390,7 @@ public final class ObjcCommon {
.addAll(FRAMEWORK_DIR, uniqueContainers(frameworkImports, FRAMEWORK_CONTAINER_TYPE))
.addAll(INCLUDE, userHeaderSearchPaths)
.addAll(DEFINE, defines)
+ .addAll(HEADER, headers)
.addTransitiveAndPropagate(depObjcProviders)
.addTransitiveWithoutPropagating(directDepObjcProviders);
@@ -484,11 +442,8 @@ public final class ObjcCommon {
for (CompilationArtifacts artifacts : compilationArtifacts.asSet()) {
Iterable<Artifact> allSources =
Iterables.concat(artifacts.getSrcs(), artifacts.getNonArcSrcs());
- objcProvider
- .addAll(HEADER, artifacts.getAdditionalHdrs())
- .addAll(HEADER, artifacts.getPrivateHdrs())
- .addAll(LIBRARY, artifacts.getArchive().asSet())
- .addAll(SOURCE, allSources);
+ objcProvider.addAll(LIBRARY, artifacts.getArchive().asSet());
+ objcProvider.addAll(SOURCE, allSources);
BuildConfiguration configuration = context.getConfiguration();
RegexFilter filter = configuration.getInstrumentationFilter();
if (configuration.isCodeCoverageEnabled()
@@ -525,12 +480,6 @@ public final class ObjcCommon {
}
}
- if (this.generatesModuleMap) {
- CppModuleMap moduleMap = intermediateArtifacts.moduleMap();
- objcProvider.addWithoutPropagating(TOP_LEVEL_MODULE_MAP, moduleMap);
- objcProvider.add(MODULE_MAP, moduleMap.getArtifact());
- }
-
objcProvider.addAll(LINKED_BINARY, linkedBinary.asSet())
.addAll(BREAKPAD_FILE, breakpadFile.asSet());