Add dexmerger support for Windows
This CL adds a dexmerger.bat script that uses the
already present dx.jar file in order to be able to
build tests that rely on this tool, namely the smali
tests.
Bug:
Change-Id: I4b69f6b60c7fc7e042b82c36657e5fcf22a0239a
diff --git a/build.gradle b/build.gradle
index 0a512f2..967923c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,8 @@
// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import org.gradle.internal.os.OperatingSystem;
+import org.gradle.internal.os.OperatingSystem
+import utils.Utils;
apply plugin: 'java'
apply plugin: 'idea'
@@ -984,7 +985,7 @@
def artTestDir = file("${androidCheckoutDir}/art/test")
def artRunTestScript = file("${artTestDir}/run-test")
def dxExecutable = new File("tools/linux/dx/bin/dx");
- def dexMergerExecutable = new File("tools/linux/dx/bin/dexmerger");
+ def dexMergerExecutable = Utils.dexMergerExecutable()
def dexToolName = dexTool == DexTool.DX ? "dx" : "jack"
def name = dir.getName();
diff --git a/buildSrc/src/main/java/dx/DexMerger.java b/buildSrc/src/main/java/dx/DexMerger.java
index 39a4bfb..d3d8427 100644
--- a/buildSrc/src/main/java/dx/DexMerger.java
+++ b/buildSrc/src/main/java/dx/DexMerger.java
@@ -53,7 +53,7 @@
public void execute(ExecSpec execSpec) {
try {
if (dexMergerExecutable == null) {
- dexMergerExecutable = new File("tools/" + Utils.toolsDir() + "/dx/bin/dexmerger");
+ dexMergerExecutable = Utils.dexMergerExecutable();
}
execSpec.setExecutable(dexMergerExecutable);
execSpec.args(destination.getCanonicalPath());
diff --git a/buildSrc/src/main/java/utils/Utils.java b/buildSrc/src/main/java/utils/Utils.java
index 4cbc90c..7158e80 100644
--- a/buildSrc/src/main/java/utils/Utils.java
+++ b/buildSrc/src/main/java/utils/Utils.java
@@ -3,6 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package utils;
+import java.io.File;
+
public class Utils {
public static String toolsDir() {
String osName = System.getProperty("os.name");
@@ -14,4 +16,9 @@
return "linux";
}
}
-}
+
+ public static File dexMergerExecutable() {
+ String executableName = Utils.toolsDir().equals("windows") ? "dexmerger.bat" : "dexmerger";
+ return new File("tools/" + Utils.toolsDir() + "/dx/bin/" + executableName);
+ }
+}
\ No newline at end of file
diff --git a/tools/windows/README.dx b/tools/windows/README.dx
index 99db256..348dc4a 100644
--- a/tools/windows/README.dx
+++ b/tools/windows/README.dx
@@ -21,3 +21,5 @@
---
> call java %javaOpts% -Djava.ext.dirs="%frameworkdir%" -jar "%jarpath%" %params%
+dexmerger.bat has been copied from dx.bat, and the command line has been updated
+according to the SDK dexmerger bash script to call the right class.
\ No newline at end of file
diff --git a/tools/windows/dx.tar.gz.sha1 b/tools/windows/dx.tar.gz.sha1
index beadad3..0f3e345 100644
--- a/tools/windows/dx.tar.gz.sha1
+++ b/tools/windows/dx.tar.gz.sha1
@@ -1 +1 @@
-1d680c9efc9e17d4fc51e8afd0bbe1b3d8724903
\ No newline at end of file
+9adeae753e17fa0a663e4d458b406a39ded27621
\ No newline at end of file