Encode default enabled state in OsType

Currently our only default-disabled Os is Windows since it's HostCross,
but we'll be adding non-default Host and Device types in the future.

Bug: 31559095
Test: out/soong/build.ninja is identical
Change-Id: I2bc3a3cc76f2c95ea040bc34ba6706fcc178c68d
diff --git a/android/arch.go b/android/arch.go
index 6c99684..2ef6e24 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -192,10 +192,10 @@
 	osTypeList []OsType
 
 	NoOsType OsType
-	Linux    = NewOsType("linux", Host)
-	Darwin   = NewOsType("darwin", Host)
-	Windows  = NewOsType("windows", HostCross)
-	Android  = NewOsType("android", Device)
+	Linux    = NewOsType("linux", Host, false)
+	Darwin   = NewOsType("darwin", Host, false)
+	Windows  = NewOsType("windows", HostCross, true)
+	Android  = NewOsType("android", Device, false)
 
 	osArchTypeMap = map[OsType][]ArchType{
 		Linux:   []ArchType{X86, X86_64},
@@ -208,6 +208,8 @@
 type OsType struct {
 	Name, Field string
 	Class       OsClass
+
+	DefaultDisabled bool
 }
 
 type OsClass int
@@ -222,11 +224,13 @@
 	return os.Name
 }
 
-func NewOsType(name string, class OsClass) OsType {
+func NewOsType(name string, class OsClass, defDisabled bool) OsType {
 	os := OsType{
 		Name:  name,
 		Field: strings.Title(name),
 		Class: class,
+
+		DefaultDisabled: defDisabled,
 	}
 	osTypeList = append(osTypeList, os)
 	return os
diff --git a/android/module.go b/android/module.go
index 0dae3a5..2b6f8ba 100644
--- a/android/module.go
+++ b/android/module.go
@@ -355,7 +355,7 @@
 
 func (a *ModuleBase) Enabled() bool {
 	if a.commonProperties.Enabled == nil {
-		return a.Os().Class != HostCross
+		return !a.Os().DefaultDisabled
 	}
 	return *a.commonProperties.Enabled
 }