Add subdir to GenPath

We were emulating this for proto files, standardize it and make the
other generators use it as well.

Test: Compare out/soong/build.ninja before/after change
Test: mmma -j system/tools/hidl
Change-Id: I1888c7b981749060a398387bbb9b481270bf6d75
diff --git a/cc/proto.go b/cc/proto.go
index 3d3ca59..51f5448 100644
--- a/cc/proto.go
+++ b/cc/proto.go
@@ -15,8 +15,6 @@
 package cc
 
 import (
-	"strings"
-
 	"github.com/google/blueprint"
 
 	"android/soong/android"
@@ -46,17 +44,14 @@
 func genProto(ctx android.ModuleContext, protoFile android.Path,
 	protoFlags string) (android.ModuleGenPath, android.ModuleGenPath) {
 
-	outDir := android.PathForModuleGen(ctx, "proto")
-	baseName := strings.TrimSuffix(protoFile.Base(), protoFile.Ext())
-
-	outFile := android.PathForModuleGen(ctx, "proto", ctx.ModuleDir(), baseName+".pb.cc")
-	headerFile := android.PathForModuleGen(ctx, "proto", ctx.ModuleDir(), baseName+".pb.h")
+	outFile := android.GenPathWithExt(ctx, "proto", protoFile, "pb.cc")
+	headerFile := android.GenPathWithExt(ctx, "proto", protoFile, "pb.h")
 	ctx.ModuleBuild(pctx, android.ModuleBuildParams{
 		Rule:    proto,
 		Outputs: android.WritablePaths{outFile, headerFile},
 		Input:   protoFile,
 		Args: map[string]string{
-			"outDir":     outDir.String(),
+			"outDir":     protoDir(ctx).String(),
 			"protoFlags": protoFlags,
 		},
 	})