diff --git a/android/config.go b/android/config.go
index db833ec..e14f42e 100644
--- a/android/config.go
+++ b/android/config.go
@@ -641,6 +641,37 @@
 	return Bool(c.ProductVariables.ArtUseReadBarrier)
 }
 
+func (c *config) EnforceRROForModule(name string) bool {
+	enforceList := c.ProductVariables.EnforceRROTargets
+	if enforceList != nil {
+		if len(*enforceList) == 1 && (*enforceList)[0] == "*" {
+			return true
+		}
+		return InList(name, *enforceList)
+	}
+	return false
+}
+
+func (c *config) EnforceRROExcludedOverlay(path string) bool {
+	excluded := c.ProductVariables.EnforceRROExcludedOverlays
+	if excluded != nil {
+		for _, exclude := range *excluded {
+			if strings.HasPrefix(path, exclude) {
+				return true
+			}
+		}
+	}
+	return false
+}
+
+func (c *config) ExportedNamespaces() []string {
+	return append([]string(nil), c.ProductVariables.NamespacesToExport...)
+}
+
+func (c *config) HostStaticBinaries() bool {
+	return Bool(c.ProductVariables.HostStaticBinaries)
+}
+
 func (c *deviceConfig) Arches() []Arch {
 	var arches []Arch
 	for _, target := range c.config.Targets[Device] {
diff --git a/android/makevars.go b/android/makevars.go
index b6cd571..3792357 100644
--- a/android/makevars.go
+++ b/android/makevars.go
@@ -36,6 +36,7 @@
 // Interface for other packages to use to declare make variables
 type MakeVarsContext interface {
 	Config() Config
+	DeviceConfig() DeviceConfig
 	SingletonContext() SingletonContext
 
 	// Verify the make variable matches the Soong version, fail the build
@@ -231,6 +232,10 @@
 	return c.config
 }
 
+func (c *makeVarsContext) DeviceConfig() DeviceConfig {
+	return DeviceConfig{c.config.deviceConfig}
+}
+
 func (c *makeVarsContext) SingletonContext() SingletonContext {
 	return c.ctx
 }
