Merge "Remove sepolicy_split from soong."
diff --git a/android/config.go b/android/config.go
index 56e9525..dd0301e 100644
--- a/android/config.go
+++ b/android/config.go
@@ -584,6 +584,10 @@
 	return false
 }
 
+func (c *config) UseD8Desugar() bool {
+	return c.IsEnvTrue("USE_D8_DESUGAR")
+}
+
 func (c *config) UseGoma() bool {
 	return Bool(c.ProductVariables.UseGoma)
 }
diff --git a/android/proto.go b/android/proto.go
index 1c70656..0cf7c26 100644
--- a/android/proto.go
+++ b/android/proto.go
@@ -23,7 +23,9 @@
 // generate the source.
 
 func ProtoFlags(ctx ModuleContext, p *ProtoProperties) []string {
-	var protoFlags []string
+	// -I . must come first, it affects where protoc places the output files.
+	protoFlags := []string{"-I ."}
+
 	if len(p.Proto.Local_include_dirs) > 0 {
 		localProtoIncludeDirs := PathsForModuleSrc(ctx, p.Proto.Local_include_dirs)
 		protoFlags = append(protoFlags, JoinWithPrefix(localProtoIncludeDirs.Strings(), "-I"))
@@ -33,8 +35,6 @@
 		protoFlags = append(protoFlags, JoinWithPrefix(rootProtoIncludeDirs.Strings(), "-I"))
 	}
 
-	protoFlags = append(protoFlags, "-I .")
-
 	return protoFlags
 }
 
diff --git a/cc/builder.go b/cc/builder.go
index e583834..de85d6e 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -290,7 +290,7 @@
 
 // Generate rules for compiling multiple .c, .cpp, or .S files to individual .o files
 func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles android.Paths,
-	flags builderFlags, deps android.Paths) Objects {
+	flags builderFlags, pathDeps android.Paths, genDeps android.Paths) Objects {
 
 	objFiles := make(android.Paths, len(srcFiles))
 	var tidyFiles android.Paths
@@ -363,7 +363,8 @@
 				Description: "yasm " + srcFile.Rel(),
 				Output:      objFile,
 				Input:       srcFile,
-				OrderOnly:   deps,
+				Implicits:   pathDeps,
+				OrderOnly:   genDeps,
 				Args: map[string]string{
 					"asFlags": flags.yasmFlags,
 				},
@@ -375,7 +376,8 @@
 				Description: "windres " + srcFile.Rel(),
 				Output:      objFile,
 				Input:       srcFile,
-				OrderOnly:   deps,
+				Implicits:   pathDeps,
+				OrderOnly:   genDeps,
 				Args: map[string]string{
 					"windresCmd": gccCmd(flags.toolchain, "windres"),
 					"flags":      flags.toolchain.WindresFlags(),
@@ -443,7 +445,8 @@
 			Output:          objFile,
 			ImplicitOutputs: implicitOutputs,
 			Input:           srcFile,
-			OrderOnly:       deps,
+			Implicits:       pathDeps,
+			OrderOnly:       genDeps,
 			Args: map[string]string{
 				"cFlags": moduleCflags,
 				"ccCmd":  ccCmd,
diff --git a/cc/compiler.go b/cc/compiler.go
index 4eae898..c9dcf95 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -157,7 +157,8 @@
 type baseCompiler struct {
 	Properties BaseCompilerProperties
 	Proto      android.ProtoProperties
-	deps       android.Paths
+	genDeps    android.Paths
+	pathDeps   android.Paths
 	flags      builderFlags
 
 	// Sources that were passed to the C/C++ compiler
@@ -536,17 +537,16 @@
 	srcs := append(android.Paths(nil), compiler.srcsBeforeGen...)
 
 	srcs, genDeps := genSources(ctx, srcs, buildFlags)
-
-	pathDeps = append(pathDeps, genDeps...)
 	pathDeps = append(pathDeps, flags.CFlagsDeps...)
 
-	compiler.deps = pathDeps
+	compiler.pathDeps = pathDeps
+	compiler.genDeps = genDeps
 
 	// Save src, buildFlags and context
 	compiler.srcs = srcs
 
 	// Compile files listed in c.Properties.Srcs into objects
-	objs := compileObjs(ctx, buildFlags, "", srcs, compiler.deps)
+	objs := compileObjs(ctx, buildFlags, "", srcs, pathDeps, genDeps)
 
 	if ctx.Failed() {
 		return Objects{}
@@ -557,7 +557,7 @@
 
 // Compile a list of source files into objects a specified subdirectory
 func compileObjs(ctx android.ModuleContext, flags builderFlags,
-	subdir string, srcFiles, deps android.Paths) Objects {
+	subdir string, srcFiles, pathDeps android.Paths, genDeps android.Paths) Objects {
 
-	return TransformSourceToObj(ctx, subdir, srcFiles, flags, deps)
+	return TransformSourceToObj(ctx, subdir, srcFiles, flags, pathDeps, genDeps)
 }
diff --git a/cc/config/global.go b/cc/config/global.go
index 6de1300..c10c60a 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -126,7 +126,6 @@
 
 	// Some Android.mk files still have warnings.
 	WarningAllowedOldProjects = []string{
-		"hardware/libhardware/modules/",
 		"hardware/qcom/",
 	}
 )
diff --git a/cc/library.go b/cc/library.go
index d53bcfc..9bd12a9 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -384,11 +384,11 @@
 	if library.static() {
 		srcs := android.PathsForModuleSrc(ctx, library.Properties.Static.Srcs)
 		objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceStaticLibrary,
-			srcs, library.baseCompiler.deps))
+			srcs, library.baseCompiler.pathDeps, library.baseCompiler.genDeps))
 	} else if library.shared() {
 		srcs := android.PathsForModuleSrc(ctx, library.Properties.Shared.Srcs)
 		objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceSharedLibrary,
-			srcs, library.baseCompiler.deps))
+			srcs, library.baseCompiler.pathDeps, library.baseCompiler.genDeps))
 	}
 
 	return objs
@@ -671,8 +671,8 @@
 			}
 			library.reexportFlags(flags)
 			library.reuseExportedFlags = append(library.reuseExportedFlags, flags...)
-			library.reexportDeps(library.baseCompiler.deps) // TODO: restrict to aidl deps
-			library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.deps...)
+			library.reexportDeps(library.baseCompiler.genDeps) // TODO: restrict to aidl deps
+			library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.genDeps...)
 		}
 	}
 
@@ -684,8 +684,8 @@
 			}
 			library.reexportFlags(flags)
 			library.reuseExportedFlags = append(library.reuseExportedFlags, flags...)
-			library.reexportDeps(library.baseCompiler.deps) // TODO: restrict to proto deps
-			library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.deps...)
+			library.reexportDeps(library.baseCompiler.genDeps) // TODO: restrict to proto deps
+			library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.genDeps...)
 		}
 	}
 
diff --git a/cc/ndk_library.go b/cc/ndk_library.go
index 459d980..5a76666 100644
--- a/cc/ndk_library.go
+++ b/cc/ndk_library.go
@@ -288,7 +288,7 @@
 
 	subdir := ""
 	srcs := []android.Path{stubSrcPath}
-	return compileObjs(ctx, flagsToBuilderFlags(flags), subdir, srcs, nil), versionScriptPath
+	return compileObjs(ctx, flagsToBuilderFlags(flags), subdir, srcs, nil, nil), versionScriptPath
 }
 
 func (c *stubDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) Objects {
diff --git a/java/builder.go b/java/builder.go
index ff618d8..dd0d927 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -441,7 +441,7 @@
 
 	rule := dx
 	desc := "dx"
-	if ctx.AConfig().IsEnvTrue("USE_D8_DESUGAR") {
+	if ctx.Config().UseD8Desugar() {
 		rule = d8
 		desc = "d8"
 	}
diff --git a/java/config/makevars.go b/java/config/makevars.go
index 5c8589e..c382cc1 100644
--- a/java/config/makevars.go
+++ b/java/config/makevars.go
@@ -46,12 +46,14 @@
 	ctx.Strict("JAVADOC", "${JavadocCmd}")
 	ctx.Strict("COMMON_JDK_FLAGS", "${CommonJdkFlags}")
 
-	if ctx.Config().IsEnvTrue("USE_D8_DESUGAR") {
+	if ctx.Config().UseD8Desugar() {
 		ctx.Strict("DX", "${D8Cmd}")
 		ctx.Strict("DX_COMMAND", "${D8Cmd} -JXms16M -JXmx2048M")
+		ctx.Strict("USE_D8_DESUGAR", "true")
 	} else {
 		ctx.Strict("DX", "${DxCmd}")
 		ctx.Strict("DX_COMMAND", "${DxCmd} -JXms16M -JXmx2048M")
+		ctx.Strict("USE_D8_DESUGAR", "false")
 	}
 
 	ctx.Strict("TURBINE", "${TurbineJar}")
diff --git a/java/java.go b/java/java.go
index 9b345fd..05d38f2 100644
--- a/java/java.go
+++ b/java/java.go
@@ -677,7 +677,7 @@
 	// Store the list of .java files that was passed to javac
 	j.compiledJavaSrcs = uniqueSrcFiles
 	j.compiledSrcJars = srcJars
-	fullD8 := ctx.AConfig().IsEnvTrue("USE_D8_DESUGAR")
+	fullD8 := ctx.Config().UseD8Desugar()
 
 	enable_sharding := false
 	if ctx.Device() && !ctx.Config().IsEnvFalse("TURBINE_ENABLED") {