Support no configured device architectures

There are some builds where we only want to build host tools, and we may
not have a valid device configuration. Support 0 device architectures
and modules that don't have any configured way to build.

Change-Id: I732251e1cd3cdbfafbc6ef6a550e33e653876f7c
diff --git a/android/arch.go b/android/arch.go
index 0673249..08b7b1f 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -435,6 +435,11 @@
 		moduleTargets = append(moduleTargets, targets...)
 	}
 
+	if len(moduleTargets) == 0 {
+		module.base().commonProperties.Enabled = boolPtr(false)
+		return
+	}
+
 	targetNames := make([]string, len(moduleTargets))
 
 	for i, target := range moduleTargets {
@@ -762,21 +767,19 @@
 		}
 	}
 
-	if variables.DeviceArch == nil {
-		return nil, fmt.Errorf("No device primary architecture set")
-	}
+	if variables.DeviceArch != nil && *variables.DeviceArch != "" {
+		addTarget(Android, *variables.DeviceArch, variables.DeviceArchVariant,
+			variables.DeviceCpuVariant, variables.DeviceAbi)
 
-	addTarget(Android, *variables.DeviceArch, variables.DeviceArchVariant,
-		variables.DeviceCpuVariant, variables.DeviceAbi)
+		if variables.DeviceSecondaryArch != nil && *variables.DeviceSecondaryArch != "" {
+			addTarget(Android, *variables.DeviceSecondaryArch,
+				variables.DeviceSecondaryArchVariant, variables.DeviceSecondaryCpuVariant,
+				variables.DeviceSecondaryAbi)
 
-	if variables.DeviceSecondaryArch != nil && *variables.DeviceSecondaryArch != "" {
-		addTarget(Android, *variables.DeviceSecondaryArch,
-			variables.DeviceSecondaryArchVariant, variables.DeviceSecondaryCpuVariant,
-			variables.DeviceSecondaryAbi)
-
-		deviceArches := targets[Device]
-		if deviceArches[0].Arch.ArchType.Multilib == deviceArches[1].Arch.ArchType.Multilib {
-			deviceArches[1].Arch.Native = false
+			deviceArches := targets[Device]
+			if deviceArches[0].Arch.ArchType.Multilib == deviceArches[1].Arch.ArchType.Multilib {
+				deviceArches[1].Arch.Native = false
+			}
 		}
 	}