hidl_interface: remove need for 'types' am: feaee3b483 am: 19192dfdfc
am: 2b5328481a

Change-Id: I0a88767729c1552e3a8bcdfa1c53b23f5d00e0f6
diff --git a/build/hidl_interface.go b/build/hidl_interface.go
index 0139a99..179642f 100644
--- a/build/hidl_interface.go
+++ b/build/hidl_interface.go
@@ -34,8 +34,9 @@
 
 	pctx = android.NewPackageContext("android/hidl")
 
-	hidl = pctx.HostBinToolVariable("hidl", "hidl-gen")
-	vtsc = pctx.HostBinToolVariable("vtsc", "vtsc")
+	hidl      = pctx.HostBinToolVariable("hidl", "hidl-gen")
+	vtsc      = pctx.HostBinToolVariable("vtsc", "vtsc")
+	soong_zip = pctx.HostBinToolVariable("soong_zip", "soong_zip")
 
 	hidlRule = pctx.StaticRule("hidlRule", blueprint.RuleParams{
 		Depfile:     "${depfile}",
@@ -45,6 +46,14 @@
 		Description: "HIDL ${language}: ${in} => ${out}",
 	}, "depfile", "fqName", "genDir", "language", "roots")
 
+	hidlSrcJarRule = pctx.StaticRule("hidlSrcJarRule", blueprint.RuleParams{
+		Depfile:     "${depfile}",
+		Deps:        blueprint.DepsGCC,
+		Command:     "rm -rf ${genDir} && ${hidl} -R -p . -d ${depfile} -o ${genDir}/srcs -L ${language} ${roots} ${fqName} && ${soong_zip} -o ${genDir}/srcs.srcjar -D ${genDir}/srcs",
+		CommandDeps: []string{"${hidl}", "${soong_zip}"},
+		Description: "HIDL ${language}: ${in} => srcs.srcjar",
+	}, "depfile", "fqName", "genDir", "language", "roots")
+
 	vtsRule = pctx.StaticRule("vtsRule", blueprint.RuleParams{
 		Command:     "rm -rf ${genDir} && ${vtsc} -m${mode} -t${type} ${inputDir}/${packagePath} ${genDir}/${packagePath}",
 		CommandDeps: []string{"${vtsc}"},
@@ -121,8 +130,13 @@
 		inputs = append(inputs, currentPath.Path())
 	}
 
+	rule := hidlRule
+	if g.properties.Language == "java" {
+		rule = hidlSrcJarRule
+	}
+
 	ctx.ModuleBuild(pctx, android.ModuleBuildParams{
-		Rule:            hidlRule,
+		Rule:            rule,
 		Inputs:          inputs,
 		Output:          g.genOutputs[0],
 		ImplicitOutputs: g.genOutputs[1:],
@@ -255,7 +269,7 @@
 	// Package root for this package, must be a prefix of name
 	Root string
 
-	// List of non-TypeDef types declared in types.hal.
+	// Unused/deprecated: List of non-TypeDef types declared in types.hal.
 	Types []string
 
 	// Whether to generate the Java library stubs.
@@ -489,8 +503,7 @@
 			Root:       i.properties.Root,
 			Interfaces: i.properties.Interfaces,
 			Inputs:     i.properties.Srcs,
-			Outputs: concat(wrap(name.sanitizedDir()+"I", interfaces, ".java"),
-				wrap(name.sanitizedDir(), i.properties.Types, ".java")),
+			Outputs:    []string{"srcs.srcjar"},
 		}, &i.inheritCommonProperties)
 		mctx.CreateModule(android.ModuleFactoryAdaptor(java.LibraryFactory), &javaProperties{
 			Name:              proptools.StringPtr(name.javaName()),
diff --git a/main.cpp b/main.cpp
index e2f5d40..c03b6fc 100644
--- a/main.cpp
+++ b/main.cpp
@@ -624,25 +624,6 @@
                }
             }) << "],\n";
         }
-        if (typesAST != nullptr) {
-            (out << "types: [\n").indent([&] {
-                std::vector<NamedType *> subTypes = typesAST->getRootScope()->getSubTypes();
-                std::sort(
-                        subTypes.begin(),
-                        subTypes.end(),
-                        [](const NamedType *a, const NamedType *b) -> bool {
-                            return a->fqName() < b->fqName();
-                        });
-
-                for (const auto &type : subTypes) {
-                    if (type->isTypeDef()) {
-                        continue;
-                    }
-
-                    out << "\"" << type->localName() << "\",\n";
-                }
-            }) << "],\n";
-        }
         // Explicity call this out for developers.
         out << "gen_java: " << (genJavaLibrary ? "true" : "false") << ",\n";
         if (genJavaConstants) {
diff --git a/test/vendor/1.0/Android.bp b/test/vendor/1.0/Android.bp
index 4f8485b..ebf8c70 100644
--- a/test/vendor/1.0/Android.bp
+++ b/test/vendor/1.0/Android.bp
@@ -1,7 +1,10 @@
+// This file is autogenerated by hidl-gen -Landroidbp.
+
 hidl_interface {
     name: "hidl.tests.vendor@1.0",
     owner: "some-owner-name",
     root: "hidl.tests",
+    product_specific: true,
     srcs: [
         "types.hal",
         "IVendor.hal",
@@ -10,11 +13,6 @@
         "android.hardware.tests.baz@1.0",
         "android.hidl.base@1.0",
     ],
-    types: [
-        "Bar",
-        "Foo",
-        "FooToo",
-    ],
     gen_java: true,
     gen_java_constants: true,
 
diff --git a/test/vendor/1.1/Android.bp b/test/vendor/1.1/Android.bp
index 80cecb2..fcf8e17 100644
--- a/test/vendor/1.1/Android.bp
+++ b/test/vendor/1.1/Android.bp
@@ -4,6 +4,7 @@
     name: "hidl.tests.vendor@1.1",
     owner: "some-owner-name",
     root: "hidl.tests",
+    product_specific: true,
     srcs: [
         "IVendor.hal",
     ],