Optimize javacFlags and aidlFlags in ninja files

aidlFlags gets specified for every aidl file.  Use a module scoped
ninja variable to hold the aidl flags, and while we're at it do the
same for javacFlags.

Change-Id: I980f0006c41918154ab0479d56387630a7e1d677
diff --git a/java/java.go b/java/java.go
index bbec5b5..533cabb 100644
--- a/java/java.go
+++ b/java/java.go
@@ -171,7 +171,7 @@
 }
 
 func (j *javaBase) aidlFlags(ctx common.AndroidModuleContext, aidlPreprocess string,
-	aidlIncludeDirs []string) string {
+	aidlIncludeDirs []string) []string {
 
 	localAidlIncludes := pathtools.PrefixPaths(j.properties.Aidl_includes, common.ModuleSrcDir(ctx))
 
@@ -187,7 +187,7 @@
 	flags = append(flags, "-I"+common.ModuleSrcDir(ctx))
 	flags = append(flags, "-I"+filepath.Join(common.ModuleSrcDir(ctx), "src"))
 
-	return strings.Join(flags, " ")
+	return flags
 }
 
 func (j *javaBase) collectDeps(ctx common.AndroidModuleContext) (classpath []string,
@@ -239,9 +239,18 @@
 	classpath, bootClasspath, classJarSpecs, resourceJarSpecs, aidlPreprocess,
 		aidlIncludeDirs := j.collectDeps(ctx)
 
-	flags := javaBuilderFlags{
-		javacFlags: strings.Join(j.properties.Javacflags, " "),
-		aidlFlags:  j.aidlFlags(ctx, aidlPreprocess, aidlIncludeDirs),
+	var flags javaBuilderFlags
+
+	javacFlags := j.properties.Javacflags
+	if len(javacFlags) > 0 {
+		ctx.Variable(pctx, "javacFlags", strings.Join(javacFlags, " "))
+		flags.javacFlags = "$javacFlags"
+	}
+
+	aidlFlags := j.aidlFlags(ctx, aidlPreprocess, aidlIncludeDirs)
+	if len(aidlFlags) > 0 {
+		ctx.Variable(pctx, "aidlFlags", strings.Join(aidlFlags, " "))
+		flags.aidlFlags = "$aidlFlags"
 	}
 
 	var javacDeps []string