Define odm_available property

Define `odm_available` property for aidl_interface modules.
`odm_available` is the same as `vendor_available` except it installs
the vendor variant of the module to /odm or /vendor/odm.

Bug: 176147321
Test: build with odm_available: true for an aidl_interface module
Change-Id: I7f182db4cdbd792a299ec0ef5e4fe8f81f2c2562
diff --git a/build/aidl_interface_backends.go b/build/aidl_interface_backends.go
index f21431d..8c85c2a 100644
--- a/build/aidl_interface_backends.go
+++ b/build/aidl_interface_backends.go
@@ -126,6 +126,7 @@
 	}
 
 	vendorAvailable := i.properties.Vendor_available
+	odmAvailable := i.properties.Odm_available
 	productAvailable := i.properties.Product_available
 	if lang == langCpp {
 		// Vendor and product modules cannot use the libbinder (cpp) backend of AIDL in a
@@ -150,6 +151,7 @@
 		// nil (unspecified) is used instead of false so that this can't conflict with
 		// 'vendor: true', for instance.
 		vendorAvailable = nil
+		odmAvailable = nil
 		productAvailable = nil
 		overrideVndkProperties.Vndk.Enabled = proptools.BoolPtr(false)
 		overrideVndkProperties.Vndk.Support_system_process = proptools.BoolPtr(false)
@@ -165,6 +167,7 @@
 			&ccProperties{
 				Name:                      proptools.StringPtr(cppModuleGen),
 				Vendor_available:          vendorAvailable,
+				Odm_available:             odmAvailable,
 				Product_available:         productAvailable,
 				Host_supported:            hostSupported,
 				Defaults:                  []string{"aidl-cpp-module-defaults"},