Hybrid soong/mk build using prebuilts

Change-Id: I96daa69af27bd19c8bfbe327a1318f51c738fc03
diff --git a/common/module.go b/common/module.go
index 1683671..113768a 100644
--- a/common/module.go
+++ b/common/module.go
@@ -105,9 +105,10 @@
 type Multilib string
 
 const (
-	MultilibBoth   Multilib = "both"
-	MultilibFirst  Multilib = "first"
-	MultilibCommon Multilib = "common"
+	MultilibBoth    Multilib = "both"
+	MultilibFirst   Multilib = "first"
+	MultilibCommon  Multilib = "common"
+	MultilibDefault Multilib = ""
 )
 
 func InitAndroidModule(m AndroidModule,
@@ -130,10 +131,13 @@
 	base.commonProperties.HostOrDeviceSupported = hod
 	base.commonProperties.Compile_multilib = string(defaultMultilib)
 
-	if hod == HostAndDeviceSupported {
+	switch hod {
+	case HostAndDeviceSupported:
 		// Default to module to device supported, host not supported, can override in module
 		// properties
 		base.hostAndDeviceProperties.Device_supported = true
+		fallthrough
+	case HostAndDeviceDefault:
 		propertyStructs = append(propertyStructs, &base.hostAndDeviceProperties)
 	}
 
@@ -312,7 +316,7 @@
 	if len(deps) > 0 {
 		ctx.Build(pctx, blueprint.BuildParams{
 			Rule:      blueprint.Phony,
-			Outputs:   []string{ctx.ModuleName()},
+			Outputs:   []string{ctx.ModuleName() + "-soong"},
 			Implicits: deps,
 			Optional:  true,
 		})
@@ -525,15 +529,12 @@
 	checkbuildDeps := []string{}
 
 	dirModules := make(map[string][]string)
-	hasBPFile := make(map[string]bool)
-	bpFiles := []string{}
 
 	ctx.VisitAllModules(func(module blueprint.Module) {
 		if a, ok := module.(AndroidModule); ok {
 			blueprintDir := a.base().blueprintDir
 			installTarget := a.base().installTarget
 			checkbuildTarget := a.base().checkbuildTarget
-			bpFile := ctx.BlueprintFile(module)
 
 			if checkbuildTarget != "" {
 				checkbuildDeps = append(checkbuildDeps, checkbuildTarget)
@@ -543,21 +544,15 @@
 			if installTarget != "" {
 				dirModules[blueprintDir] = append(dirModules[blueprintDir], installTarget)
 			}
-
-			if !hasBPFile[bpFile] {
-				hasBPFile[bpFile] = true
-				bpFiles = append(bpFiles, bpFile)
-			}
 		}
 	})
 
 	// Create a top-level checkbuild target that depends on all modules
 	ctx.Build(pctx, blueprint.BuildParams{
 		Rule:      blueprint.Phony,
-		Outputs:   []string{"checkbuild"},
+		Outputs:   []string{"checkbuild-soong"},
 		Implicits: checkbuildDeps,
-		// HACK: checkbuild should be an optional build, but force it enabled for now
-		//Optional:  true,
+		Optional:  true,
 	})
 
 	// Create a mm/<directory> target that depends on all modules in a directory