aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-10-07 22:24:46 +0000
committerGravatar Yue Gan <yueg@google.com>2016-10-10 09:54:38 +0000
commit2837781bb9613958eba289ce1e2608dffeb6bf6e (patch)
tree9e45bf1ba4b806bb67cf5aafdf30da3107ebb8fe /src
parentd08e7c0a592a27561426a43e04480b85209881dd (diff)
RELNOTES: Create a flag --android_dynamic_mode to turn off dynamic mode during the Android split transition.
-- MOS_MIGRATED_REVID=135524459
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java2
2 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
index 90295a3fc5..9aaced13c5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
@@ -32,6 +32,8 @@ import com.google.devtools.build.lib.analysis.config.InvalidConfigurationExcepti
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
+import com.google.devtools.build.lib.rules.cpp.CppOptions.DynamicModeConverter;
+import com.google.devtools.build.lib.rules.cpp.CppOptions.DynamicModeFlag;
import com.google.devtools.common.options.Converter;
import com.google.devtools.common.options.Converters;
import com.google.devtools.common.options.EnumConverter;
@@ -263,6 +265,19 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
)
public String cppCompiler;
+ @Option(
+ name = "android_dynamic_mode",
+ defaultValue = "default",
+ converter = DynamicModeConverter.class,
+ category = "undocumented",
+ help =
+ "Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary "
+ + "does not explicitly create a shared library. 'default' means blaze will choose "
+ + "whether to link dynamically. 'fully' means all libraries will be linked "
+ + "dynamically. 'off' means that all libraries will be linked in mostly static mode."
+ )
+ public DynamicModeFlag dynamicMode;
+
@Option(name = "strict_android_deps",
allowMultiple = false,
defaultValue = "default",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index 7a1d515b60..9ee0dfbe54 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -233,6 +233,7 @@ public final class AndroidRuleClasses {
// getSplitPrerequisites() will complain if cpu is null after this transition,
// so default to android_cpu.
splitOptions.get(BuildConfiguration.Options.class).cpu = androidOptions.cpu;
+ splitOptions.get(CppOptions.class).dynamicMode = androidOptions.dynamicMode;
setCrosstoolToAndroid(splitOptions, buildOptions);
return ImmutableList.of(splitOptions);
}
@@ -248,6 +249,7 @@ public final class AndroidRuleClasses {
splitOptions.get(AndroidConfiguration.Options.class).cpu = cpu;
splitOptions.get(BuildConfiguration.Options.class).cpu = cpu;
splitOptions.get(CppOptions.class).cppCompiler = androidOptions.cppCompiler;
+ splitOptions.get(CppOptions.class).dynamicMode = androidOptions.dynamicMode;
setCrosstoolToAndroid(splitOptions, buildOptions);
result.add(splitOptions);
}