From 7a668370e350f602ec863eb4169729885e1c7c93 Mon Sep 17 00:00:00 2001 From: Chris Parsons Date: Fri, 2 Dec 2016 18:59:26 +0000 Subject: Split ObjcProvider.framework_dir into static and dynamic framework directories. Previously there was no difference between static and dynamic framework directories in how they affected link actions. However, there will be a difference moving forward: Dynamic framework files and their directories will be propagated up dynamic library edges, and static frameworks will not. (If an app A depends on a dylib B which depends on a dylib C, A should not link any static framework dependencies of C, but should link against C itself.) -- PiperOrigin-RevId: 140869357 MOS_MIGRATED_REVID=140869357 --- .../devtools/build/lib/rules/objc/ObjcProvider.java | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java') 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 667753d701..3c2bac6d4d 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 @@ -243,12 +243,22 @@ public final class ObjcProvider extends SkylarkClassObject implements Transitive new Key<>(STABLE_ORDER, "root_merge_zip", Artifact.class); /** - * Exec paths of {@code .framework} directories corresponding to frameworks to link. These cause - * -F arguments (framework search paths) to be added to each compile action, and -framework (link - * framework) arguments to be added to each link action. + * Exec paths of {@code .framework} directories corresponding to static frameworks to link. These + * cause -F arguments (framework search paths) to be added to each compile action, and + * -framework (link framework) arguments to be added to each link action. These differ from + * dynamic frameworks in that they are statically linked into the binary. */ - public static final Key FRAMEWORK_DIR = + public static final Key STATIC_FRAMEWORK_DIR = new Key<>(LINK_ORDER, "framework_dir", PathFragment.class); + + /** + * Exec paths of {@code .framework} directories corresponding to dynamic frameworks to link. These + * cause -F arguments (framework search paths) to be added to each compile action, and + * -framework (link framework) arguments to be added to each link action. These differ from + * static frameworks in that they are not statically linked into the binary. + */ + public static final Key DYNAMIC_FRAMEWORK_DIR = + new Key<>(LINK_ORDER, "dynamic_framework_dir", PathFragment.class); /** * Exec paths of {@code .framework} directories corresponding to frameworks to include in search @@ -382,11 +392,11 @@ public final class ObjcProvider extends SkylarkClassObject implements Transitive BUNDLE_FILE, BUNDLE_IMPORT_DIR, DEFINE, + DYNAMIC_FRAMEWORK_DIR, DYNAMIC_FRAMEWORK_FILE, DEBUG_SYMBOLS, DEBUG_SYMBOLS_PLIST, EXPORTED_DEBUG_ARTIFACTS, - FRAMEWORK_DIR, FRAMEWORK_SEARCH_PATH_ONLY, FORCE_LOAD_LIBRARY, GENERAL_RESOURCE_DIR, @@ -411,6 +421,7 @@ public final class ObjcProvider extends SkylarkClassObject implements Transitive SDK_DYLIB, SDK_FRAMEWORK, SOURCE, + STATIC_FRAMEWORK_DIR, STATIC_FRAMEWORK_FILE, STORYBOARD, STRINGS, -- cgit v1.2.3