From 1d476fcbeb8b6cb1d7643e8673930bffa664685e Mon Sep 17 00:00:00 2001 From: Alan Leung Date: Tue, 17 Oct 2017 18:50:50 -0700 Subject: [PATCH] Add D8 support Bug: 67754178 Test: m -j32 checkbuild && USE_D8=true m -j32 checkbuild Change-Id: If63afc10ceb5e753bbb7f195bb8a895eaef10775 --- android/package_ctx.go | 18 +++++++++++++----- java/config/config.go | 17 ++++++++++++++++- java/config/makevars.go | 2 ++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/android/package_ctx.go b/android/package_ctx.go index 6743fb3fe..f781dd44f 100644 --- a/android/package_ctx.go +++ b/android/package_ctx.go @@ -117,15 +117,23 @@ func (p AndroidPackageContext) SourcePathVariableWithEnvOverride(name, path, env // package-scoped variable's initialization. func (p AndroidPackageContext) HostBinToolVariable(name, path string) blueprint.Variable { return p.VariableFunc(name, func(config interface{}) (string, error) { - ctx := &configErrorWrapper{p, config.(Config), []error{}} - p := PathForOutput(ctx, "host", ctx.config.PrebuiltOS(), "bin", path) - if len(ctx.errors) > 0 { - return "", ctx.errors[0] + po, err := p.HostBinToolPath(config, path) + if err != nil { + return "", err } - return p.String(), nil + return po.String(), nil }) } +func (p AndroidPackageContext) HostBinToolPath(config interface{}, path string) (Path, error) { + ctx := &configErrorWrapper{p, config.(Config), []error{}} + pa := PathForOutput(ctx, "host", ctx.config.PrebuiltOS(), "bin", path) + if len(ctx.errors) > 0 { + return nil, ctx.errors[0] + } + return pa, nil +} + // HostJavaToolVariable returns a Variable whose value is the path to a host // tool in the frameworks directory for host targets. It may only be called // during a Go package's initialization - either from the init() function or as diff --git a/java/config/config.go b/java/config/config.go index eb71ddb6d..f4abd37dd 100644 --- a/java/config/config.go +++ b/java/config/config.go @@ -77,7 +77,22 @@ func init() { pctx.SourcePathVariable("JarArgsCmd", "build/soong/scripts/jar-args.sh") pctx.HostBinToolVariable("SoongZipCmd", "soong_zip") pctx.HostBinToolVariable("MergeZipsCmd", "merge_zips") - pctx.HostBinToolVariable("DxCmd", "dx") + pctx.VariableFunc("DxCmd", func(config interface{}) (string, error) { + dexer := "dx" + if config.(android.Config).Getenv("USE_D8") == "true" { + dexer = "d8" + } + if config.(android.Config).UnbundledBuild() { + return "prebuilts/build-tools/common/bin/" + dexer, nil + } else { + path, err := pctx.HostBinToolPath(config, dexer) + if err != nil { + return "", err + } + return path.String(), nil + } + }) + pctx.HostJavaToolVariable("JarjarCmd", "jarjar.jar") pctx.HostJavaToolVariable("DesugarJar", "desugar.jar") diff --git a/java/config/makevars.go b/java/config/makevars.go index 6b495924e..2735242fa 100644 --- a/java/config/makevars.go +++ b/java/config/makevars.go @@ -43,6 +43,8 @@ func makeVarsProvider(ctx android.MakeVarsContext) { ctx.Strict("JAR_ARGS", "${JarArgsCmd}") ctx.Strict("JAVADOC", "${JavadocCmd}") ctx.Strict("COMMON_JDK_FLAGS", "${CommonJdkFlags}") + ctx.Strict("DX", "${DxCmd}") + ctx.Strict("DX_COMMAND", "${DxCmd} -JXms16M -JXmx2048M") if ctx.Config().IsEnvTrue("RUN_ERROR_PRONE") { ctx.Strict("TARGET_JAVAC", "${ErrorProneCmd}")