diff --git a/core/base_rules.mk b/core/base_rules.mk index 41e808be2..b93685981 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -565,8 +565,25 @@ $(LOCAL_INSTALLED_MODULE): $(LOCAL_BUILT_MODULE) $(copy-file-to-target-with-cp) endif -endif # !LOCAL_UNINSTALLABLE_MODULE +# Rule to install the module's companion init.rc. +my_init_rc := $(LOCAL_INIT_RC_$(my_32_64_bit_suffix)) +my_init_rc_src := +my_init_rc_installed := +ifndef my_init_rc +my_init_rc := $(LOCAL_INIT_RC) +# Make sure we don't define the rule twice in multilib module. +LOCAL_INIT_RC := +endif +ifdef my_init_rc +my_init_rc_src := $(LOCAL_PATH)/$(my_init_rc) +my_init_rc_installed := $(TARGET_OUT$(partition_tag)_ETC)/init/$(notdir $(my_init_rc_src)) +$(my_init_rc_installed) : $(my_init_rc_src) | $(ACP) + @echo "Install: $@" + $(copy-file-to-new-target) +$(my_register_name) : $(my_init_rc_installed) +endif # my_init_rc +endif # !LOCAL_UNINSTALLABLE_MODULE ########################################################### ## CHECK_BUILD goals @@ -615,9 +632,12 @@ ALL_MODULES.$(my_register_name).BUILT := \ $(ALL_MODULES.$(my_register_name).BUILT) $(LOCAL_BUILT_MODULE) ifneq (true,$(LOCAL_UNINSTALLABLE_MODULE)) ALL_MODULES.$(my_register_name).INSTALLED := \ - $(strip $(ALL_MODULES.$(my_register_name).INSTALLED) $(LOCAL_INSTALLED_MODULE)) + $(strip $(ALL_MODULES.$(my_register_name).INSTALLED) \ + $(LOCAL_INSTALLED_MODULE) $(my_init_rc_installed)) ALL_MODULES.$(my_register_name).BUILT_INSTALLED := \ - $(strip $(ALL_MODULES.$(my_register_name).BUILT_INSTALLED) $(LOCAL_BUILT_MODULE):$(LOCAL_INSTALLED_MODULE)) + $(strip $(ALL_MODULES.$(my_register_name).BUILT_INSTALLED) \ + $(LOCAL_BUILT_MODULE):$(LOCAL_INSTALLED_MODULE) \ + $(addprefix $(my_init_rc_src):,$(my_init_rc_installed))) endif ifdef LOCAL_PICKUP_FILES # Files or directories ready to pick up by the build system diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 431c688f7..c42a8e04b 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -181,6 +181,7 @@ LOCAL_DPI_FILE_STEM:= LOCAL_SANITIZE:= LOCAL_SANITIZE_RECOVER:= LOCAL_DBUS_PROXY_PREFIX:= +LOCAL_INIT_RC:= # arch specific variables LOCAL_SRC_FILES_$(TARGET_ARCH):= @@ -288,6 +289,8 @@ LOCAL_MODULE_STEM_32:= LOCAL_MODULE_STEM_64:= LOCAL_CLANG_32:= LOCAL_CLANG_64:= +LOCAL_INIT_RC_32:= +LOCAL_INIT_RC_64:= # Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to # iterate over thousands of entries every time.