aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2016-02-08 19:52:33 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-02-09 12:19:29 +0000
commit01d17e1b1ced49b7760de4c4fce409b99405cb52 (patch)
treef1ebd36d801d0608acb5f973cfd1a4d8dc938ce0 /src
parent6742ffb92dc257888f5c6d428f12409799a4f3c5 (diff)
Adds a flag to prioritize static libs over system libs and frameworks in linker includes.
-- MOS_MIGRATED_REVID=114134316
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java12
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;
}
}