diff options
author | Cal Peyser <cpeyser@google.com> | 2016-02-08 19:52:33 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-02-09 12:19:29 +0000 |
commit | 01d17e1b1ced49b7760de4c4fce409b99405cb52 (patch) | |
tree | f1ebd36d801d0608acb5f973cfd1a4d8dc938ce0 /src | |
parent | 6742ffb92dc257888f5c6d428f12409799a4f3c5 (diff) |
Adds a flag to prioritize static libs over system libs and frameworks in linker includes.
--
MOS_MIGRATED_REVID=114134316
Diffstat (limited to 'src')
3 files changed, 22 insertions, 18 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 c0eca43d44..7f129f9e5c 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 @@ -917,8 +917,11 @@ public final class CompilationSupport { commandLine.add("-dead_strip").add("-no_dead_strip_inits_and_terms"); } - if (objcConfiguration.shouldPrioritizeSystemLibsOverFrameworks()) { - commandLine.addFormatEach("-l%s", libraryNames); + if (objcConfiguration.shouldPrioritizeStaticLibs()) { + commandLine + .addExecPaths(bazelBuiltLibraries) + .addExecPaths(objcProvider.get(IMPORTED_LIBRARY)) + .addExecPaths(ccLibraries); } commandLine @@ -930,17 +933,18 @@ public final class CompilationSupport { .add("-fobjc-link-runtime") .add(DEFAULT_LINKER_FLAGS) .addBeforeEach("-framework", frameworkNames(objcProvider)) - .addBeforeEach("-weak_framework", SdkFramework.names(objcProvider.get(WEAK_SDK_FRAMEWORK))); + .addBeforeEach("-weak_framework", SdkFramework.names(objcProvider.get(WEAK_SDK_FRAMEWORK))) + .addFormatEach("-l%s", libraryNames); - if (!objcConfiguration.shouldPrioritizeSystemLibsOverFrameworks()) { - commandLine.addFormatEach("-l%s", libraryNames); + if (!objcConfiguration.shouldPrioritizeStaticLibs()) { + commandLine + .addExecPaths(bazelBuiltLibraries) + .addExecPaths(objcProvider.get(IMPORTED_LIBRARY)) + .addExecPaths(ccLibraries); } commandLine .addExecPath("-o", linkedBinary) - .addExecPaths(bazelBuiltLibraries) - .addExecPaths(objcProvider.get(IMPORTED_LIBRARY)) - .addExecPaths(ccLibraries) .addBeforeEach("-force_load", Artifact.toExecPaths(objcProvider.get(FORCE_LOAD_LIBRARY))) .add(extraLinkArgs) .add(objcProvider.get(ObjcProvider.LINKOPT)) diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java index 02e9338984..3fb34a8b94 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java @@ -163,14 +163,14 @@ public class ObjcCommandLineOptions extends FragmentOptions { public String xcodeOverrideWorkspaceRoot; @Option( - name = "objc_includes_prioritize_system_libs", + name = "objc_includes_prioritize_static_libs", defaultValue = "false", category = "flags", help = - "If set, the linker invocation will contain system library includes before framework" - + " includes." + "If set, the linker invocation will contain static library includes before frameworks" + + " and system libraries." ) - public boolean prioritizeSystemLibsOverFrameworks; + public boolean prioritizeStaticLibs; @VisibleForTesting static final String DEFAULT_MINIMUM_IOS = "7.0"; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java index 20337639ef..06ec7a8cd3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java @@ -63,7 +63,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { @Nullable private final Path clientWorkspaceRoot; private final String xcodeOverrideWorkspaceRoot; private final boolean useAbsolutePathsForActions; - private final boolean prioritizeSystemLibsOverFrameworks; + private final boolean prioritizeStaticLibs; ObjcConfiguration(ObjcCommandLineOptions objcOptions, BuildConfiguration.Options options, @Nullable BlazeDirectories directories) { @@ -85,7 +85,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { this.signingCertName = objcOptions.iosSigningCertName; this.xcodeOverrideWorkspaceRoot = objcOptions.xcodeOverrideWorkspaceRoot; this.useAbsolutePathsForActions = objcOptions.useAbsolutePathsForActions; - this.prioritizeSystemLibsOverFrameworks = objcOptions.prioritizeSystemLibsOverFrameworks; + this.prioritizeStaticLibs = objcOptions.prioritizeStaticLibs; } /** @@ -225,10 +225,10 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { } /** - * Returns true if the linker invocation should contain system library includes before framework - * includes. + * Returns true if the linker invocation should contain static library includes before framework + * and system library includes. */ - public boolean shouldPrioritizeSystemLibsOverFrameworks() { - return this.prioritizeSystemLibsOverFrameworks; + public boolean shouldPrioritizeStaticLibs() { + return this.prioritizeStaticLibs; } } |