Merge changes I646f303b,I294ca692

* changes:
  Add support for Exynos-M2.
  Override mcpu option of ToolingCFlags when mcpu is eyxnos-m2.
diff --git a/android/defaults.go b/android/defaults.go
index 84f0a3d..4bf872e 100644
--- a/android/defaults.go
+++ b/android/defaults.go
@@ -29,16 +29,16 @@
 	Defaults []string
 }
 
-type DefaultableModule struct {
+type DefaultableModuleBase struct {
 	defaultsProperties    defaultsProperties
 	defaultableProperties []interface{}
 }
 
-func (d *DefaultableModule) defaults() *defaultsProperties {
+func (d *DefaultableModuleBase) defaults() *defaultsProperties {
 	return &d.defaultsProperties
 }
 
-func (d *DefaultableModule) setProperties(props []interface{}) {
+func (d *DefaultableModuleBase) setProperties(props []interface{}) {
 	d.defaultableProperties = props
 }
 
@@ -48,17 +48,21 @@
 	applyDefaults(TopDownMutatorContext, []Defaults)
 }
 
-var _ Defaultable = (*DefaultableModule)(nil)
-
-func InitDefaultableModule(module Module, d Defaultable) {
-
-	d.setProperties(module.GetProperties())
-
-	module.AddProperties(d.defaults())
+type DefaultableModule interface {
+	Module
+	Defaultable
 }
 
-type DefaultsModule struct {
-	DefaultableModule
+var _ Defaultable = (*DefaultableModuleBase)(nil)
+
+func InitDefaultableModule(module DefaultableModule) {
+	module.(Defaultable).setProperties(module.(Module).GetProperties())
+
+	module.AddProperties(module.defaults())
+}
+
+type DefaultsModuleBase struct {
+	DefaultableModuleBase
 	defaultProperties []interface{}
 }
 
@@ -68,31 +72,31 @@
 	properties() []interface{}
 }
 
-func (d *DefaultsModule) isDefaults() bool {
+func (d *DefaultsModuleBase) isDefaults() bool {
 	return true
 }
 
-func (d *DefaultsModule) properties() []interface{} {
+func (d *DefaultsModuleBase) properties() []interface{} {
 	return d.defaultableProperties
 }
 
-func InitDefaultsModule(module Module, d Defaults) {
+func InitDefaultsModule(module DefaultableModule) {
 	module.AddProperties(
 		&hostAndDeviceProperties{},
 		&commonProperties{},
 		&variableProperties{})
 
 	InitArchModule(module)
-	InitDefaultableModule(module, d)
+	InitDefaultableModule(module)
 
 	module.AddProperties(&module.base().nameProperties)
 
 	module.base().module = module
 }
 
-var _ Defaults = (*DefaultsModule)(nil)
+var _ Defaults = (*DefaultsModuleBase)(nil)
 
-func (defaultable *DefaultableModule) applyDefaults(ctx TopDownMutatorContext,
+func (defaultable *DefaultableModuleBase) applyDefaults(ctx TopDownMutatorContext,
 	defaultsList []Defaults) {
 
 	for _, defaults := range defaultsList {
@@ -113,7 +117,7 @@
 	}
 }
 
-func registerDefaultsPreArchMutators(ctx RegisterMutatorsContext) {
+func RegisterDefaultsPreArchMutators(ctx RegisterMutatorsContext) {
 	ctx.BottomUp("defaults_deps", defaultsDepsMutator).Parallel()
 	ctx.TopDown("defaults", defaultsMutator).Parallel()
 }
diff --git a/android/mutator.go b/android/mutator.go
index 86a5b85..c8f3e8f 100644
--- a/android/mutator.go
+++ b/android/mutator.go
@@ -75,7 +75,7 @@
 		ctx.TopDown("load_hooks", loadHookMutator).Parallel()
 	},
 	registerPrebuiltsPreArchMutators,
-	registerDefaultsPreArchMutators,
+	RegisterDefaultsPreArchMutators,
 }
 
 var preDeps = []RegisterMutatorFunc{
diff --git a/cc/cc.go b/cc/cc.go
index 8fc0ebd..3824a3b 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -275,7 +275,7 @@
 // to construct the output file.  Behavior can be customized with a Customizer interface
 type Module struct {
 	android.ModuleBase
-	android.DefaultableModule
+	android.DefaultableModuleBase
 
 	Properties BaseProperties
 	unused     UnusedProperties
@@ -339,7 +339,7 @@
 
 	android.InitAndroidArchModule(c, c.hod, c.multilib)
 
-	android.InitDefaultableModule(c, c)
+	android.InitDefaultableModule(c)
 
 	return c
 }
@@ -1138,7 +1138,7 @@
 //
 type Defaults struct {
 	android.ModuleBase
-	android.DefaultsModule
+	android.DefaultsModuleBase
 }
 
 func (*Defaults) GenerateAndroidBuildActions(ctx android.ModuleContext) {
@@ -1174,7 +1174,7 @@
 		&SAbiProperties{},
 	)
 
-	android.InitDefaultsModule(module, module)
+	android.InitDefaultsModule(module)
 
 	return module
 }
diff --git a/cc/stl.go b/cc/stl.go
index 9e67145..65d7e40 100644
--- a/cc/stl.go
+++ b/cc/stl.go
@@ -23,7 +23,7 @@
 	// select the STL library to use.  Possible values are "libc++", "libc++_static",
 	// "stlport", "stlport_static", "ndk", "libstdc++", or "none".  Leave blank to select the
 	// default
-	Stl *string
+	Stl *string `android:"arch_variant"`
 
 	SelectedStl string `blueprint:"mutated"`
 }
diff --git a/java/androidmk.go b/java/androidmk.go
index 9ffd35f..086ba7a 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -20,14 +20,14 @@
 	"android/soong/android"
 )
 
-func (*JavaLibrary) AndroidMk() (ret android.AndroidMkData, err error) {
+func (*Library) AndroidMk() (ret android.AndroidMkData, err error) {
 	ret.Class = "JAVA_LIBRARIES"
 	// TODO
 	err = fmt.Errorf("Not yet implemented")
 	return
 }
 
-func (*JavaPrebuilt) AndroidMk() (ret android.AndroidMkData, err error) {
+func (*Prebuilt) AndroidMk() (ret android.AndroidMkData, err error) {
 	ret.Class = "JAVA_LIBRARIES"
 	// TODO
 	err = fmt.Errorf("Not yet implemented")
diff --git a/java/app.go b/java/app.go
index fccd382..8a221ef 100644
--- a/java/app.go
+++ b/java/app.go
@@ -234,7 +234,7 @@
 		var depFile android.OptionalPath
 		if sdkDep, ok := module.(sdkDependency); ok {
 			depFile = android.OptionalPathForPath(sdkDep.ClasspathFile())
-		} else if javaDep, ok := module.(JavaDependency); ok {
+		} else if javaDep, ok := module.(Dependency); ok {
 			if ctx.OtherModuleName(module) == "framework-res" {
 				depFile = android.OptionalPathForPath(javaDep.(*AndroidApp).exportPackage)
 			}
diff --git a/java/java.go b/java/java.go
index 3d2e960..1ef1c26 100644
--- a/java/java.go
+++ b/java/java.go
@@ -30,12 +30,14 @@
 )
 
 func init() {
-	android.RegisterModuleType("java_library", JavaLibraryFactory)
-	android.RegisterModuleType("java_library_static", JavaLibraryFactory)
-	android.RegisterModuleType("java_library_host", JavaLibraryHostFactory)
-	android.RegisterModuleType("java_binary", JavaBinaryFactory)
-	android.RegisterModuleType("java_binary_host", JavaBinaryHostFactory)
-	android.RegisterModuleType("java_prebuilt_library", JavaPrebuiltFactory)
+	android.RegisterModuleType("java_defaults", defaultsFactory)
+
+	android.RegisterModuleType("java_library", LibraryFactory)
+	android.RegisterModuleType("java_library_static", LibraryFactory)
+	android.RegisterModuleType("java_library_host", LibraryHostFactory)
+	android.RegisterModuleType("java_binary", BinaryFactory)
+	android.RegisterModuleType("java_binary_host", BinaryHostFactory)
+	android.RegisterModuleType("java_prebuilt_library", PrebuiltFactory)
 	android.RegisterModuleType("android_prebuilt_sdk", SdkPrebuiltFactory)
 	android.RegisterModuleType("android_app", AndroidAppFactory)
 
@@ -55,7 +57,7 @@
 // DroidDoc
 // Findbugs
 
-type compilerProperties struct {
+type CompilerProperties struct {
 	// list of source files used to compile the Java module.  May be .java, .logtags, .proto,
 	// or .aidl files.
 	Srcs []string `android:"arch_variant"`
@@ -90,7 +92,7 @@
 	Jarjar_rules *string
 }
 
-type compilerDeviceProperties struct {
+type CompilerDeviceProperties struct {
 	// list of module-specific flags that will be used for dex compiles
 	Dxflags []string `android:"arch_variant"`
 
@@ -112,9 +114,10 @@
 // Module contains the properties and members used by all java module types
 type Module struct {
 	android.ModuleBase
+	android.DefaultableModuleBase
 
-	properties       compilerProperties
-	deviceProperties compilerDeviceProperties
+	properties       CompilerProperties
+	deviceProperties CompilerDeviceProperties
 
 	// output file suitable for inserting into the classpath of another compile
 	classpathFile android.Path
@@ -140,21 +143,26 @@
 	installFile android.Path
 }
 
-type JavaDependency interface {
+type Dependency interface {
 	ClasspathFile() android.Path
 	ClassJarSpecs() []jarSpec
 	ResourceJarSpecs() []jarSpec
 	AidlIncludeDirs() android.Paths
 }
 
+func InitJavaModule(module android.DefaultableModule, hod android.HostOrDeviceSupported) {
+	android.InitAndroidArchModule(module, hod, android.MultilibCommon)
+	android.InitDefaultableModule(module)
+}
+
 type dependencyTag struct {
 	blueprint.BaseDependencyTag
 	name string
 }
 
 var (
-	javaStaticLibTag = dependencyTag{name: "staticlib"}
-	javaLibTag       = dependencyTag{name: "javalib"}
+	staticLibTag     = dependencyTag{name: "staticlib"}
+	libTag           = dependencyTag{name: "javalib"}
 	bootClasspathTag = dependencyTag{name: "bootclasspath"}
 	frameworkResTag  = dependencyTag{name: "framework-res"}
 	sdkDependencyTag = dependencyTag{name: "sdk"}
@@ -182,11 +190,11 @@
 		}
 
 		if ctx.Device() && j.deviceProperties.Sdk_version == "" {
-			ctx.AddDependency(ctx.Module(), javaLibTag, config.DefaultLibraries...)
+			ctx.AddDependency(ctx.Module(), libTag, config.DefaultLibraries...)
 		}
 	}
-	ctx.AddDependency(ctx.Module(), javaLibTag, j.properties.Libs...)
-	ctx.AddDependency(ctx.Module(), javaStaticLibTag, j.properties.Static_libs...)
+	ctx.AddDependency(ctx.Module(), libTag, j.properties.Libs...)
+	ctx.AddDependency(ctx.Module(), staticLibTag, j.properties.Static_libs...)
 }
 
 func (j *Module) aidlFlags(ctx android.ModuleContext, aidlPreprocess android.OptionalPath,
@@ -219,8 +227,8 @@
 		otherName := ctx.OtherModuleName(module)
 		tag := ctx.OtherModuleDependencyTag(module)
 
-		javaDep, _ := module.(JavaDependency)
-		if javaDep == nil {
+		dep, _ := module.(Dependency)
+		if dep == nil {
 			switch tag {
 			case android.DefaultsDepTag, android.SourceDepTag:
 			default:
@@ -231,13 +239,13 @@
 
 		switch tag {
 		case bootClasspathTag:
-			bootClasspath = android.OptionalPathForPath(javaDep.ClasspathFile())
-		case javaLibTag:
-			classpath = append(classpath, javaDep.ClasspathFile())
-		case javaStaticLibTag:
-			classpath = append(classpath, javaDep.ClasspathFile())
-			classJarSpecs = append(classJarSpecs, javaDep.ClassJarSpecs()...)
-			resourceJarSpecs = append(resourceJarSpecs, javaDep.ResourceJarSpecs()...)
+			bootClasspath = android.OptionalPathForPath(dep.ClasspathFile())
+		case libTag:
+			classpath = append(classpath, dep.ClasspathFile())
+		case staticLibTag:
+			classpath = append(classpath, dep.ClasspathFile())
+			classJarSpecs = append(classJarSpecs, dep.ClassJarSpecs()...)
+			resourceJarSpecs = append(resourceJarSpecs, dep.ResourceJarSpecs()...)
 		case frameworkResTag:
 			if ctx.ModuleName() == "framework" {
 				// framework.jar has a one-off dependency on the R.java and Manifest.java files
@@ -258,7 +266,7 @@
 			panic(fmt.Errorf("unknown dependency %q for %q", otherName, ctx.ModuleName()))
 		}
 
-		aidlIncludeDirs = append(aidlIncludeDirs, javaDep.AidlIncludeDirs()...)
+		aidlIncludeDirs = append(aidlIncludeDirs, dep.AidlIncludeDirs()...)
 	})
 
 	return classpath, bootClasspath, classJarSpecs, resourceJarSpecs, aidlPreprocess,
@@ -286,16 +294,16 @@
 		flags.aidlFlags = "$aidlFlags"
 	}
 
-	var javacDeps android.Paths
+	var deps android.Paths
 
 	if bootClasspath.Valid() {
 		flags.bootClasspath = "-bootclasspath " + bootClasspath.String()
-		javacDeps = append(javacDeps, bootClasspath.Path())
+		deps = append(deps, bootClasspath.Path())
 	}
 
 	if len(classpath) > 0 {
 		flags.classpath = "-classpath " + strings.Join(classpath.Strings(), ":")
-		javacDeps = append(javacDeps, classpath...)
+		deps = append(deps, classpath...)
 	}
 
 	srcFiles := ctx.ExpandSources(j.properties.Srcs, j.properties.Exclude_srcs)
@@ -312,7 +320,7 @@
 
 	if len(srcFiles) > 0 {
 		// Compile java sources into .class files
-		classes := TransformJavaToClasses(ctx, srcFiles, srcFileLists, flags, javacDeps)
+		classes := TransformJavaToClasses(ctx, srcFiles, srcFileLists, flags, deps)
 		if ctx.Failed() {
 			return
 		}
@@ -389,7 +397,7 @@
 	j.outputFile = outputFile
 }
 
-var _ JavaDependency = (*JavaLibrary)(nil)
+var _ Dependency = (*Library)(nil)
 
 func (j *Module) ClasspathFile() android.Path {
 	return j.classpathFile
@@ -417,22 +425,22 @@
 // Java libraries (.jar file)
 //
 
-type JavaLibrary struct {
+type Library struct {
 	Module
 }
 
-func (j *JavaLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
 	j.compile(ctx)
 
 	j.installFile = ctx.InstallFileName(android.PathForModuleInstall(ctx, "framework"), ctx.ModuleName()+".jar", j.outputFile)
 }
 
-func (j *JavaLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
+func (j *Library) DepsMutator(ctx android.BottomUpMutatorContext) {
 	j.deps(ctx)
 }
 
-func JavaLibraryFactory() android.Module {
-	module := &JavaLibrary{}
+func LibraryFactory() android.Module {
+	module := &Library{}
 
 	module.deviceProperties.Dex = true
 
@@ -440,16 +448,16 @@
 		&module.Module.properties,
 		&module.Module.deviceProperties)
 
-	android.InitAndroidArchModule(module, android.HostAndDeviceSupported, android.MultilibCommon)
+	InitJavaModule(module, android.HostAndDeviceSupported)
 	return module
 }
 
-func JavaLibraryHostFactory() android.Module {
-	module := &JavaLibrary{}
+func LibraryHostFactory() android.Module {
+	module := &Library{}
 
 	module.AddProperties(&module.Module.properties)
 
-	android.InitAndroidArchModule(module, android.HostSupported, android.MultilibCommon)
+	InitJavaModule(module, android.HostSupported)
 	return module
 }
 
@@ -457,19 +465,19 @@
 // Java Binaries (.jar file plus wrapper script)
 //
 
-type javaBinaryProperties struct {
+type binaryProperties struct {
 	// installable script to execute the resulting jar
 	Wrapper string
 }
 
-type JavaBinary struct {
-	JavaLibrary
+type Binary struct {
+	Library
 
-	binaryProperties javaBinaryProperties
+	binaryProperties binaryProperties
 }
 
-func (j *JavaBinary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
-	j.JavaLibrary.GenerateAndroidBuildActions(ctx)
+func (j *Binary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+	j.Library.GenerateAndroidBuildActions(ctx)
 
 	// Depend on the installed jar (j.installFile) so that the wrapper doesn't get executed by
 	// another build rule before the jar has been installed.
@@ -477,12 +485,12 @@
 		j.installFile)
 }
 
-func (j *JavaBinary) DepsMutator(ctx android.BottomUpMutatorContext) {
+func (j *Binary) DepsMutator(ctx android.BottomUpMutatorContext) {
 	j.deps(ctx)
 }
 
-func JavaBinaryFactory() android.Module {
-	module := &JavaBinary{}
+func BinaryFactory() android.Module {
+	module := &Binary{}
 
 	module.deviceProperties.Dex = true
 
@@ -491,19 +499,19 @@
 		&module.Module.deviceProperties,
 		&module.binaryProperties)
 
-	android.InitAndroidArchModule(module, android.HostAndDeviceSupported, android.MultilibCommon)
+	InitJavaModule(module, android.HostAndDeviceSupported)
 	return module
 }
 
-func JavaBinaryHostFactory() android.Module {
-	module := &JavaBinary{}
+func BinaryHostFactory() android.Module {
+	module := &Binary{}
 
 	module.AddProperties(
 		&module.Module.properties,
 		&module.Module.deviceProperties,
 		&module.binaryProperties)
 
-	android.InitAndroidArchModule(module, android.HostSupported, android.MultilibCommon)
+	InitJavaModule(module, android.HostSupported)
 	return module
 }
 
@@ -511,7 +519,7 @@
 // Java prebuilts
 //
 
-type JavaPrebuilt struct {
+type Prebuilt struct {
 	android.ModuleBase
 	prebuilt android.Prebuilt
 
@@ -519,14 +527,14 @@
 	classJarSpecs, resourceJarSpecs []jarSpec
 }
 
-func (j *JavaPrebuilt) Prebuilt() *android.Prebuilt {
+func (j *Prebuilt) Prebuilt() *android.Prebuilt {
 	return &j.prebuilt
 }
 
-func (j *JavaPrebuilt) DepsMutator(ctx android.BottomUpMutatorContext) {
+func (j *Prebuilt) DepsMutator(ctx android.BottomUpMutatorContext) {
 }
 
-func (j *JavaPrebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+func (j *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
 	prebuilt := j.prebuilt.Path(ctx)
 
 	classJarSpec, resourceJarSpec := TransformPrebuiltJarToClasses(ctx, prebuilt)
@@ -537,26 +545,26 @@
 	ctx.InstallFileName(android.PathForModuleInstall(ctx, "framework"), ctx.ModuleName()+".jar", j.classpathFile)
 }
 
-var _ JavaDependency = (*JavaPrebuilt)(nil)
+var _ Dependency = (*Prebuilt)(nil)
 
-func (j *JavaPrebuilt) ClasspathFile() android.Path {
+func (j *Prebuilt) ClasspathFile() android.Path {
 	return j.classpathFile
 }
 
-func (j *JavaPrebuilt) ClassJarSpecs() []jarSpec {
+func (j *Prebuilt) ClassJarSpecs() []jarSpec {
 	return j.classJarSpecs
 }
 
-func (j *JavaPrebuilt) ResourceJarSpecs() []jarSpec {
+func (j *Prebuilt) ResourceJarSpecs() []jarSpec {
 	return j.resourceJarSpecs
 }
 
-func (j *JavaPrebuilt) AidlIncludeDirs() android.Paths {
+func (j *Prebuilt) AidlIncludeDirs() android.Paths {
 	return nil
 }
 
-func JavaPrebuiltFactory() android.Module {
-	module := &JavaPrebuilt{}
+func PrebuiltFactory() android.Module {
+	module := &Prebuilt{}
 
 	module.AddProperties(&module.prebuilt.Properties)
 
@@ -569,7 +577,7 @@
 //
 
 type sdkDependency interface {
-	JavaDependency
+	Dependency
 	AidlPreprocessed() android.OptionalPath
 }
 
@@ -580,7 +588,7 @@
 }
 
 type sdkPrebuilt struct {
-	JavaPrebuilt
+	Prebuilt
 
 	sdkProperties sdkPrebuiltProperties
 
@@ -588,7 +596,7 @@
 }
 
 func (j *sdkPrebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
-	j.JavaPrebuilt.GenerateAndroidBuildActions(ctx)
+	j.Prebuilt.GenerateAndroidBuildActions(ctx)
 
 	j.aidlPreprocessed = android.OptionalPathForModuleSrc(ctx, j.sdkProperties.Aidl_preprocessed)
 }
@@ -616,3 +624,35 @@
 	}
 	return false
 }
+
+//
+// Defaults
+//
+type Defaults struct {
+	android.ModuleBase
+	android.DefaultsModuleBase
+}
+
+func (*Defaults) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+}
+
+func (d *Defaults) DepsMutator(ctx android.BottomUpMutatorContext) {
+}
+
+func defaultsFactory() android.Module {
+	return DefaultsFactory()
+}
+
+func DefaultsFactory(props ...interface{}) android.Module {
+	module := &Defaults{}
+
+	module.AddProperties(props...)
+	module.AddProperties(
+		&CompilerProperties{},
+		&CompilerDeviceProperties{},
+	)
+
+	android.InitDefaultsModule(module)
+
+	return module
+}
diff --git a/java/java_test.go b/java/java_test.go
index bd6451c..3443610 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -54,8 +54,10 @@
 
 	ctx := android.NewTestContext()
 	ctx.RegisterModuleType("android_app", android.ModuleFactoryAdaptor(AndroidAppFactory))
-	ctx.RegisterModuleType("java_library", android.ModuleFactoryAdaptor(JavaLibraryFactory))
-	ctx.RegisterModuleType("java_prebuilt_library", android.ModuleFactoryAdaptor(JavaPrebuiltFactory))
+	ctx.RegisterModuleType("java_library", android.ModuleFactoryAdaptor(LibraryFactory))
+	ctx.RegisterModuleType("java_prebuilt_library", android.ModuleFactoryAdaptor(PrebuiltFactory))
+	ctx.RegisterModuleType("java_defaults", android.ModuleFactoryAdaptor(defaultsFactory))
+	ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
 	ctx.Register()
 
 	extraModules := []string{"core-libart", "frameworks", "sdk_v14"}
@@ -230,6 +232,49 @@
 	}
 }
 
+func TestDefaults(t *testing.T) {
+	ctx := testJava(t, `
+		java_defaults {
+			name: "defaults",
+			srcs: ["a.java"],
+			libs: ["bar"],
+			static_libs: ["baz"],
+		}
+
+		java_library {
+			name: "foo",
+			defaults: ["defaults"],
+		}
+
+		java_library {
+			name: "bar",
+			srcs: ["b.java"],
+		}
+
+		java_library {
+			name: "baz",
+			srcs: ["c.java"],
+		}
+		`)
+
+	javac := ctx.ModuleForTests("foo", "").Rule("javac")
+	jar := ctx.ModuleForTests("foo", "").Rule("jar")
+
+	if len(javac.Inputs) != 1 || javac.Inputs[0].String() != "a.java" {
+		t.Errorf(`foo inputs %v != ["a.java"]`, javac.Inputs)
+	}
+
+	bar := filepath.Join(buildDir, ".intermediates", "bar", "classes-full-debug.jar")
+	if !strings.Contains(javac.Args["classpath"], bar) {
+		t.Errorf("foo classpath %v does not contain %q", javac.Args["classpath"], bar)
+	}
+
+	baz := filepath.Join(buildDir, ".intermediates", "baz", "classes.list")
+	if !strings.Contains(jar.Args["jarArgs"], baz) {
+		t.Errorf("foo jarArgs %v does not contain %q", jar.Args["jarArgs"], baz)
+	}
+}
+
 func fail(t *testing.T, errs []error) {
 	if len(errs) > 0 {
 		for _, err := range errs {