diff options
author | 2017-11-28 14:07:24 -0800 | |
---|---|---|
committer | 2017-11-28 14:09:31 -0800 | |
commit | 854b6c58039f8213acc044cb4e24d1d7811ffb05 (patch) | |
tree | f91dc96bee27ef62b0c849b2adc88b32b475b798 /src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java | |
parent | 801109f1e30607bd57ca42dac0cf60b75e8a7831 (diff) |
Eliminate STATIC_FRAMEWORK_DIR as a separate field of ObjcProvider.
Infer those values from STATIC_FRAMEWORK_FILE.
This correctly dedupes static frameworks between an app and its dylibs.
RELNOTES: None.
PiperOrigin-RevId: 177214770
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java | 35 |
1 files changed, 25 insertions, 10 deletions
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 f2c726e048..1eeb89064b 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 @@ -37,9 +37,11 @@ import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo; import com.google.devtools.build.lib.rules.cpp.CppModuleMap; import com.google.devtools.build.lib.rules.cpp.LinkerInputs; import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.syntax.EvalUtils; +import com.google.devtools.build.lib.syntax.SkylarkNestedSet; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.HashMap; import java.util.HashSet; @@ -234,15 +236,6 @@ public final class ObjcProvider extends NativeInfo { public static final Key<PathFragment> FRAMEWORK_SEARCH_PATH_ONLY = new Key<>(LINK_ORDER, "framework_search_paths", PathFragment.class); - /** - * 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. - */ - // TODO(cparsons): Rename this key to static_framework_dir. - public static final Key<PathFragment> STATIC_FRAMEWORK_DIR = - new Key<>(LINK_ORDER, "framework_dir", PathFragment.class); /** * Files in {@code .framework} directories that should be included as inputs when compiling and @@ -409,7 +402,6 @@ public final class ObjcProvider extends NativeInfo { SDK_DYLIB, SDK_FRAMEWORK, SOURCE, - STATIC_FRAMEWORK_DIR, STATIC_FRAMEWORK_FILE, STORYBOARD, STRINGS, @@ -701,6 +693,29 @@ public final class ObjcProvider extends NativeInfo { } /** + * Returns all unique static framework directories (directories ending in '.framework') for all + * static framework files in this provider. + */ + public Iterable<PathFragment> getStaticFrameworkDirs() { + return ObjcCommon.uniqueContainers(get(STATIC_FRAMEWORK_FILE), + ObjcCommon.FRAMEWORK_CONTAINER_TYPE); + } + + /** + * Returns all unique static framework directories (directories ending in '.framework') for all + * static framework files in this provider. + */ + @SkylarkCallable( + name = "framework_dir", + structField = true, + doc = "Returns all unique static framework directories (directories ending in '.framework') " + + "for all static framework files in this provider." + ) + public SkylarkNestedSet getStaticFrameworkDirsForSkylark() { + return ObjcProviderSkylarkConverters.convertPathFragmentsToSkylark(getStaticFrameworkDirs()); + } + + /** * A builder for this context with an API that is optimized for collecting information from * several transitive dependencies. */ |