Merge "Revert "Change filePerClass semanthic to filePerInputClass""
diff --git a/scripts/aosp_helper.sh b/scripts/aosp_helper.sh
index 0dc6f78..f64e8fa 100755
--- a/scripts/aosp_helper.sh
+++ b/scripts/aosp_helper.sh
@@ -16,6 +16,10 @@
if [[ "$TASK" == "make" ]]; then
make "$@"
+elif [[ "$TASK" == "mmm" ]]; then
+ mmm "$@"
+elif [[ "$TASK" == "mmma" ]]; then
+ mmma "$@"
elif [[ "$TASK" == "emulator" ]]; then
# Launch emulator in bg and kill it in a trap
# otherwise it won't get killed when this parent process is killed
diff --git a/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java b/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java
index 45eb6e4..2ea5e56 100644
--- a/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java
+++ b/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java
@@ -9,32 +9,45 @@
import com.android.tools.r8.R8Command;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
+import java.nio.file.Paths;
import java.util.List;
public class CompatProguard {
public static class CompatProguardOptions {
+ public final String output;
+ public final int minApi;
public final List<String> proguardConfig;
- CompatProguardOptions(List<String> proguardConfig) {
+ CompatProguardOptions(List<String> proguardConfig, String output, int minApi) {
+ this.output = output;
+ this.minApi = minApi;
this.proguardConfig = proguardConfig;
}
public static CompatProguardOptions parse(String[] args) {
+ String output = null;
+ int minApi = 1;
ImmutableList.Builder<String> builder = ImmutableList.builder();
if (args.length > 0) {
StringBuilder currentLine = new StringBuilder(args[0]);
for (int i = 1; i < args.length; i++) {
String arg = args[i];
if (arg.charAt(0) == '-') {
- builder.add(currentLine.toString());
- currentLine = new StringBuilder(arg);
+ if (arg.equals("--min-api")) {
+ minApi = Integer.valueOf(args[++i]);
+ } else if (arg.equals("-outjars")) {
+ output = args[++i];
+ } else {
+ builder.add(currentLine.toString());
+ currentLine = new StringBuilder(arg);
+ }
} else {
currentLine.append(' ').append(arg);
}
}
builder.add(currentLine.toString());
}
- return new CompatProguardOptions(builder.build());
+ return new CompatProguardOptions(builder.build(), output, minApi);
}
}
@@ -42,7 +55,11 @@
System.out.println("CompatProguard " + String.join(" ", args));
// Run R8 passing all the options from the command line as a Proguard configuration.
CompatProguardOptions options = CompatProguardOptions.parse(args);
- R8.run(R8Command.builder().addProguardConfiguration(options.proguardConfig).build());
+ R8.run(R8Command.builder()
+ .setOutputPath(Paths.get(options.output))
+ .addProguardConfiguration(options.proguardConfig)
+ .setMinApiLevel(options.minApi)
+ .build());
}
public static void main(String[] args) throws IOException {
diff --git a/tools/build_aosp.py b/tools/build_aosp.py
index 111715e..0079554 100755
--- a/tools/build_aosp.py
+++ b/tools/build_aosp.py
@@ -29,6 +29,15 @@
choices = ['jack', 'd8', 'r8', 'default'],
default = 'd8',
help='Compiler tool to use. Defaults to d8.')
+ parser.add_argument('--mmm',
+ action = 'store_true',
+ help='Use mmm instead of make')
+ parser.add_argument('--mmma',
+ action = 'store_true',
+ help='Use mmma instead of make')
+ parser.add_argument('--rebuild-system-image-after-mmm',
+ action = 'store_true',
+ help='Build the system image after building a package with mmm or mmma')
parser.add_argument('--clean-dex',
action = 'store_true',
help = 'Remove all dex files before the build. By default they'
@@ -106,7 +115,7 @@
f.write('java -jar ' + compat_proguard_jar + ' "$@" --min-api 10000')
os.chmod(proguard_script, S_IRWXU)
-def build_aosp(aosp_root, lunch, tool, concurrency, target):
+def build_aosp(aosp_root, lunch, make, tool, concurrency, target):
jack_option = 'ANDROID_COMPILE_WITH_JACK=' \
+ ('true' if tool == 'jack' else 'false')
@@ -123,10 +132,10 @@
prepare_for_proguard(aosp_root)
j_option = '-j' + str(concurrency);
- print("-- Building Android image with 'make {} {} {}'." \
- .format(j_option, jack_option, alt_jar_option))
+ print("-- Building Android image with '{} {} {} {}'." \
+ .format(make, j_option, jack_option, alt_jar_option))
- command = ['make', j_option, jack_option, alt_jar_option]
+ command = [make, j_option, jack_option, alt_jar_option]
if target:
command.append(target)
@@ -141,7 +150,15 @@
setup_and_clean_dex(args.aosp_root, args.tool, args.clean_dex)
- build_aosp(args.aosp_root, args.lunch, args.tool, args.j, args.target)
+ make = 'make'
+ if args.mmm:
+ make = 'mmm'
+ if args.mmma:
+ make = 'mmma'
+ build_aosp(args.aosp_root, args.lunch, make, args.tool, args.j, args.target)
+ # Call make to re-build the system image if requested.
+ if args.rebuild_system_image_after_mmm and (args.mmm or args.mmma):
+ build_aosp(args.aosp_root, args.lunch, 'make', 'd8', args.j, None)
if __name__ == '__main__':
sys.exit(Main())