Setup java paths in soong_ui
This way config.mk no longer needs to check which java is in PATH and
fix it. It'll be consistent for all build steps under soong_ui.
Also unify handling of ANDROID_JAVA_HOME / JAVA_HOME with
OVERRIDE_ANDROID_JAVA_HOME / EXPERIMENTAL_USE_OPENJDK9.
Test: m nothing
Test: build/soong/soong_ui.bash --make-mode nothing (w/o envsetup.sh)
Test: aosp_arm ninja files are the same before/after
Test: before/after ninja files match with OVERRIDE_ANDROID_JAVA_HOME
Test: before/after ninja files match with EXPERIMENTAL_USE_OPENJDK9
Change-Id: Icdb65093d9c346524074de239a4f895e4230a24d
diff --git a/ui/build/config.go b/ui/build/config.go
index 191a102..940bb2f 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -104,6 +104,9 @@
"MAKEFLAGS",
"MAKELEVEL",
"MFLAGS",
+
+ // Set in envsetup.sh, reset in makefiles
+ "ANDROID_JAVA_TOOLCHAIN",
)
// Tell python not to spam the source tree with .pyc files.
@@ -117,14 +120,12 @@
log.Fatalln("Error verifying tree state:", err)
}
- if srcDir, err := filepath.Abs("."); err == nil {
- if strings.ContainsRune(srcDir, ' ') {
- log.Println("You are building in a directory whose absolute path contains a space character:")
- log.Println()
- log.Printf("%q\n", srcDir)
- log.Println()
- log.Fatalln("Directory names containing spaces are not supported")
- }
+ if srcDir := absPath(ctx, "."); strings.ContainsRune(srcDir, ' ') {
+ log.Println("You are building in a directory whose absolute path contains a space character:")
+ log.Println()
+ log.Printf("%q\n", srcDir)
+ log.Println()
+ log.Fatalln("Directory names containing spaces are not supported")
}
if outDir := ret.OutDir(); strings.ContainsRune(outDir, ' ') {
@@ -143,6 +144,27 @@
log.Fatalln("Directory names containing spaces are not supported")
}
+ // Configure Java-related variables, including adding it to $PATH
+ javaHome := func() string {
+ if override, ok := ret.environ.Get("OVERRIDE_ANDROID_JAVA_HOME"); ok {
+ return override
+ }
+ if v, ok := ret.environ.Get("EXPERIMENTAL_USE_OPENJDK9"); ok && v != "" {
+ return filepath.Join("prebuilts/jdk/jdk9", ret.HostPrebuiltTag())
+ }
+ return filepath.Join("prebuilts/jdk/jdk8", ret.HostPrebuiltTag())
+ }()
+ absJavaHome := absPath(ctx, javaHome)
+
+ newPath := []string{filepath.Join(absJavaHome, "bin")}
+ if path, ok := ret.environ.Get("PATH"); ok && path != "" {
+ newPath = append(newPath, path)
+ }
+ ret.environ.Unset("OVERRIDE_ANDROID_JAVA_HOME")
+ ret.environ.Set("JAVA_HOME", absJavaHome)
+ ret.environ.Set("ANDROID_JAVA_HOME", javaHome)
+ ret.environ.Set("PATH", strings.Join(newPath, string(filepath.ListSeparator)))
+
return Config{ret}
}