Fix OUT_DIR_COMMON_BASE with soong_ui

Currently, Kati is the only one that is respecting OUT_DIR_COMMON_BASE,
causing the build to fail when ninja tries to match up the Soong and
Kati ninja files.

The soong_ui.bash script change is necessary to move the microfactory
built outputs to the correct location.

The config.go change takes care of setting OUT_DIR in the environment of
every subprocess, so that we could remove the OUT_DIR_COMMON_BASE
handling from Make once the USE_SOONG_UI=false path goes away.

Bug: 35929763
Test: m -j blueprint_tools
Test: OUT_DIR=... m -j blueprint_tools
Test: OUT_DIR_COMMON_BASE=... m -j blueprint_tools
Change-Id: I4184f2b4392d32c5bea51e51162a48df0e5c90d5
diff --git a/ui/build/config.go b/ui/build/config.go
index 4853643..9a8a3fb 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -50,6 +50,19 @@
 		environ: OsEnvironment(),
 	}
 
+	// Make sure OUT_DIR is set appropriately
+	if _, ok := ret.environ.Get("OUT_DIR"); !ok {
+		outDir := "out"
+		if baseDir, ok := ret.environ.Get("OUT_DIR_COMMON_BASE"); ok {
+			if wd, err := os.Getwd(); err != nil {
+				ctx.Fatalln("Failed to get working directory:", err)
+			} else {
+				outDir = filepath.Join(baseDir, filepath.Base(wd))
+			}
+		}
+		ret.environ.Set("OUT_DIR", outDir)
+	}
+
 	ret.environ.Unset(
 		// We're already using it
 		"USE_SOONG_UI",
@@ -67,6 +80,9 @@
 		// Used by the goma compiler wrapper, but should only be set by
 		// gomacc
 		"GOMACC_PATH",
+
+		// We handle this above
+		"OUT_DIR_COMMON_BASE",
 	)
 
 	// Tell python not to spam the source tree with .pyc files.