diff --git a/android/module.go b/android/module.go
index 9bcb22f..fa2f108 100644
--- a/android/module.go
+++ b/android/module.go
@@ -19,6 +19,7 @@
 	"os"
 	"path"
 	"path/filepath"
+	"reflect"
 	"regexp"
 	"strings"
 	"text/scanner"
@@ -512,7 +513,7 @@
 	Name *string
 }
 
-type commonProperties struct {
+type enabledProperties struct {
 	// emit build rules for this module
 	//
 	// Disabling a module should only be done for those modules that cannot be built
@@ -521,7 +522,9 @@
 	// disabled as that will prevent them from being built by the checkbuild target
 	// and so prevent early detection of changes that have broken those modules.
 	Enabled *bool `android:"arch_variant"`
+}
 
+type commonProperties struct {
 	// Controls the visibility of this module to other modules. Allowable values are one or more of
 	// these formats:
 	//
@@ -830,6 +833,7 @@
 
 	m.AddProperties(
 		&base.nameProperties,
+		&base.enabledProperties,
 		&base.commonProperties,
 		&base.distProperties)
 
@@ -928,6 +932,11 @@
 	archProperties          [][]interface{}
 	customizableProperties  []interface{}
 
+	// The enabled property is special-cased so that the osMutator can skip creating variants
+	// that are disabled.
+	enabledProperties     enabledProperties
+	archEnabledProperties *archPropRoot
+
 	// Information about all the properties on the module that contains visibility rules that need
 	// checking.
 	visibilityPropertyInfo []visibilityProperty
@@ -1118,6 +1127,33 @@
 	}
 }
 
+// osEnabled returns true if the given OS is enabled for the current module.
+func (m *ModuleBase) osEnabled(os OsType) bool {
+	targetStruct := reflect.ValueOf(m.archEnabledProperties.Target)
+
+	if targetStruct.Kind() != reflect.Ptr || targetStruct.Type().Elem().Kind() != reflect.Struct {
+		panic(fmt.Errorf("expected a pointer to a struct, found %s", targetStruct.Type()))
+	}
+
+	if targetStruct.IsNil() {
+		return !os.DefaultDisabled
+	}
+
+	osStruct := targetStruct.Elem().FieldByName(os.Field)
+
+	if targetStruct.Kind() != reflect.Ptr || targetStruct.Type().Elem().Kind() != reflect.Struct {
+		panic(fmt.Errorf("expected a pointer to a struct, found %s", targetStruct.Type()))
+	}
+
+	if osStruct.IsNil() {
+		return !os.DefaultDisabled
+	}
+
+	enabledField := osStruct.Elem().FieldByName("Enabled")
+
+	return proptools.BoolDefault(enabledField.Interface().(*bool), !os.DefaultDisabled)
+}
+
 // DeviceSupported returns true if the current module is supported and enabled for device targets,
 // i.e. the factory method set the HostOrDeviceSupported value to include device support and
 // the device support is enabled by default or enabled by the device_supported property.
@@ -1217,10 +1253,7 @@
 	if m.commonProperties.ForcedDisabled {
 		return false
 	}
-	if m.commonProperties.Enabled == nil {
-		return !m.Os().DefaultDisabled
-	}
-	return *m.commonProperties.Enabled
+	return proptools.BoolDefault(m.enabledProperties.Enabled, !m.Os().DefaultDisabled)
 }
 
 func (m *ModuleBase) Disable() {
