aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2016-05-23 18:49:19 +0000
committerGravatar Yue Gan <yueg@google.com>2016-05-24 11:57:08 +0000
commita385d760f27e38140181ec787e19fed9747617a0 (patch)
tree8653b89f6312a3627ec4b510fb92c78e4fae9b22 /src/main/java/com/google/devtools
parente9e9779c0418178cb6906d0c3054caecfe340ca2 (diff)
Frameworks are propagated through host apps to search paths in tests, but are not actually linked into test bundles.
-- MOS_MIGRATED_REVID=123021058
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java8
3 files changed, 22 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index d5a3d570ae..882faebbce 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -20,6 +20,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.DEFINE;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.DYNAMIC_FRAMEWORK_FILE;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.FORCE_LOAD_LIBRARY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.FRAMEWORK_DIR;
+import static com.google.devtools.build.lib.rules.objc.ObjcProvider.FRAMEWORK_SEARCH_PATH_ONLY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.Flag.USES_CPP;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.Flag.USES_SWIFT;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER;
@@ -1509,6 +1510,11 @@ public final class CompilationSupport {
// Add custom (non-SDK) framework search paths. For each framework foo/bar.framework,
// include "foo" as a search path.
.addAll(PathFragment.safePathStrings(uniqueParentDirectories(provider.get(FRAMEWORK_DIR))))
+ .addAll(
+ Interspersing.beforeEach(
+ "-F",
+ PathFragment.safePathStrings(
+ uniqueParentDirectories(provider.get(FRAMEWORK_SEARCH_PATH_ONLY)))))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index 4bd7667e13..a0fbdc308e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -225,8 +225,17 @@ public final class ObjcProvider extends SkylarkClassObject implements Transitive
new Key<>(LINK_ORDER, "framework_dir", PathFragment.class);
/**
- * Files in {@code .framework} directories belonging to a statically linked framework. They should
- * be included as inputs when compiling and linking.
+ * Exec paths of {@code .framework} directories corresponding to frameworks to include in search
+ * paths, but not to link. These cause -F arguments (framework search paths) to be added to
+ * each compile action, but do not cause -framework (link framework) arguments to be added to
+ * link actions.
+ */
+ public static final Key<PathFragment> FRAMEWORK_SEARCH_PATH_ONLY =
+ new Key<>(LINK_ORDER, "framework_search_paths", PathFragment.class);
+
+ /**
+ * Files in {@code .framework} directories that should be included as inputs when compiling and
+ * linking.
*/
public static final Key<Artifact> STATIC_FRAMEWORK_FILE =
new Key<>(STABLE_ORDER, "static_framework_file", Artifact.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
index e3572eb85e..c3ddf00003 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
@@ -687,6 +687,8 @@ public final class ReleaseBundlingSupport {
// We want access to #import-able things from our test rig's dependency graph, but we don't
// want to link anything since that stuff is shared automatically by way of the
// -bundle_loader linker flag.
+ // TODO(bazel-team): Handle the FRAMEWORK_DIR key properly. We probably want to add it to
+ // framework search paths, but not actually link it with the -framework flag.
ObjcProvider partialObjcProvider =
new ObjcProvider.Builder()
.addTransitiveAndPropagate(ObjcProvider.HEADER, objcProvider)
@@ -696,12 +698,12 @@ public final class ReleaseBundlingSupport {
.addTransitiveAndPropagate(ObjcProvider.SDK_FRAMEWORK, objcProvider)
.addTransitiveAndPropagate(ObjcProvider.SOURCE, objcProvider)
.addTransitiveAndPropagate(ObjcProvider.WEAK_SDK_FRAMEWORK, objcProvider)
- .addTransitiveAndPropagate(ObjcProvider.FRAMEWORK_DIR, objcProvider)
.addTransitiveAndPropagate(ObjcProvider.STATIC_FRAMEWORK_FILE, objcProvider)
.addTransitiveAndPropagate(ObjcProvider.DYNAMIC_FRAMEWORK_FILE, objcProvider)
+ .addTransitiveAndPropagate(
+ ObjcProvider.FRAMEWORK_SEARCH_PATH_ONLY,
+ objcProvider.get(ObjcProvider.FRAMEWORK_DIR))
.build();
- // TODO(bazel-team): Handle the FRAMEWORK_DIR key properly. We probably want to add it to
- // framework search paths, but not actually link it with the -framework flag.
return new XcTestAppProvider(
intermediateArtifacts.combinedArchitectureBinary(),
releaseBundling.getIpaArtifact(),