Add support for a prebuilt_root_host type.
Test: art-tests
Change-Id: If013e46d2bbd9cc937a11fe7cf3b67eb8b262b55
diff --git a/androidmk/androidmk/androidmk_test.go b/androidmk/androidmk/androidmk_test.go
index ea53705..3c36197 100644
--- a/androidmk/androidmk/androidmk_test.go
+++ b/androidmk/androidmk/androidmk_test.go
@@ -1121,6 +1121,25 @@
`,
},
{
+ desc: "prebuilt_root_host",
+ in: `
+include $(CLEAR_VARS)
+LOCAL_MODULE := foo
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH := $(HOST_OUT)/subdir
+LOCAL_SRC_FILES := foo.txt
+include $(BUILD_PREBUILT)
+`,
+ expected: `
+prebuilt_root_host {
+ name: "foo",
+
+ src: "foo.txt",
+ relative_install_path: "subdir",
+}
+`,
+ },
+ {
desc: "prebuilt_font",
in: `
include $(CLEAR_VARS)
diff --git a/bpfix/bpfix/bpfix.go b/bpfix/bpfix/bpfix.go
index b683472..a9a0b1f 100644
--- a/bpfix/bpfix/bpfix.go
+++ b/bpfix/bpfix/bpfix.go
@@ -610,7 +610,11 @@
}
var localModuleUpdate = map[string][]etcPrebuiltModuleUpdate{
- "HOST_OUT": {{prefix: "/etc", modType: "prebuilt_etc_host"}, {prefix: "/usr/share", modType: "prebuilt_usr_share_host"}},
+ "HOST_OUT": {
+ {prefix: "/etc", modType: "prebuilt_etc_host"},
+ {prefix: "/usr/share", modType: "prebuilt_usr_share_host"},
+ {prefix: "", modType: "prebuilt_root_host"},
+ },
"PRODUCT_OUT": {{prefix: "/system/etc"}, {prefix: "/vendor/etc", flags: []string{"proprietary"}}},
"TARGET_OUT": {{prefix: "/usr/share", modType: "prebuilt_usr_share"}, {prefix: "/fonts", modType: "prebuilt_font"},
{prefix: "/etc/firmware", modType: "prebuilt_firmware"}, {prefix: "/vendor/firmware", modType: "prebuilt_firmware", flags: []string{"proprietary"}},
diff --git a/bpfix/bpfix/bpfix_test.go b/bpfix/bpfix/bpfix_test.go
index 69f5967..1941837 100644
--- a/bpfix/bpfix/bpfix_test.go
+++ b/bpfix/bpfix/bpfix_test.go
@@ -828,6 +828,46 @@
}
`,
},
+ {
+ name: "prebuilt_etc sub_dir",
+ in: `
+ prebuilt_etc_host {
+ name: "foo",
+ src: "bar",
+ local_module_path: {
+ var: "HOST_OUT",
+ fixed: "/etc/baz",
+ },
+ }
+ `,
+ out: `prebuilt_etc_host {
+ name: "foo",
+ src: "bar",
+ relative_install_path: "baz",
+
+ }
+ `,
+ },
+ {
+ name: "prebuilt_etc sub_dir",
+ in: `
+ prebuilt_etc_host {
+ name: "foo",
+ src: "bar",
+ local_module_path: {
+ var: "HOST_OUT",
+ fixed: "/baz/sub",
+ },
+ }
+ `,
+ out: `prebuilt_root_host {
+ name: "foo",
+ src: "bar",
+ relative_install_path: "baz/sub",
+
+ }
+ `,
+ },
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
diff --git a/etc/prebuilt_etc.go b/etc/prebuilt_etc.go
index 377a566..a142833 100644
--- a/etc/prebuilt_etc.go
+++ b/etc/prebuilt_etc.go
@@ -54,6 +54,7 @@
ctx.RegisterModuleType("prebuilt_etc", PrebuiltEtcFactory)
ctx.RegisterModuleType("prebuilt_etc_host", PrebuiltEtcHostFactory)
ctx.RegisterModuleType("prebuilt_root", PrebuiltRootFactory)
+ ctx.RegisterModuleType("prebuilt_root_host", PrebuiltRootHostFactory)
ctx.RegisterModuleType("prebuilt_usr_share", PrebuiltUserShareFactory)
ctx.RegisterModuleType("prebuilt_usr_share_host", PrebuiltUserShareHostFactory)
ctx.RegisterModuleType("prebuilt_font", PrebuiltFontFactory)
@@ -454,6 +455,17 @@
return module
}
+// prebuilt_root_host is for a host prebuilt artifact that is installed in $(HOST_OUT)/<sub_dir>
+// directory.
+func PrebuiltRootHostFactory() android.Module {
+ module := &PrebuiltEtc{}
+ InitPrebuiltEtcModule(module, ".")
+ // This module is host-only
+ android.InitAndroidArchModule(module, android.HostSupported, android.MultilibCommon)
+ android.InitDefaultableModule(module)
+ return module
+}
+
// prebuilt_usr_share is for a prebuilt artifact that is installed in
// <partition>/usr/share/<sub_dir> directory.
func PrebuiltUserShareFactory() android.Module {