diff options
Diffstat (limited to 'core/notice_files.mk')
-rw-r--r-- | core/notice_files.mk | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/core/notice_files.mk b/core/notice_files.mk new file mode 100644 index 000000000..24295c781 --- /dev/null +++ b/core/notice_files.mk @@ -0,0 +1,65 @@ +########################################################### +## Track NOTICE files +########################################################### + +notice_file:=$(shell find $(LOCAL_PATH) -maxdepth 1 -name NOTICE) + +ifneq ($(strip $(notice_file)),) + +# This relies on the name of the directory in PRODUCT_OUT matching where +# it's installed on the target - i.e. system, data, etc. This does +# not work for root and isn't exact, but it's probably good enough for +# compliance. +# Includes the leading slash +ifdef LOCAL_INSTALLED_MODULE + module_installed_filename := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE)) +else + # This module isn't installable + ifeq ($(LOCAL_MODULE_CLASS),STATIC_LIBRARIES) + # Stick the static libraries with the dynamic libraries. + # We can't use xxx_OUT_STATIC_LIBRARIES because it points into + # device-obj or host-obj. + module_installed_filename := \ + $(patsubst $(PRODUCT_OUT)%,%,$($(my_prefix)OUT_SHARED_LIBRARIES))/$(notdir $(LOCAL_BUILT_MODULE)) + else + ifeq ($(LOCAL_MODULE_CLASS),JAVA_LIBRARIES) + # Stick the static java libraries with the regular java libraries. + module_installed_filename := \ + $(patsubst $(PRODUCT_OUT)%,%,$($(my_prefix)OUT_JAVA_LIBRARIES))/$(notdir $(LOCAL_BUILT_MODULE)) + else + $(error Cannot determine where to install NOTICE file for $(LOCAL_MODULE)) + endif # JAVA_LIBRARIES + endif # STATIC_LIBRARIES +endif + +# In case it's actually a host file +module_installed_filename := $(patsubst $(HOST_OUT)%,%,$(module_installed_filename)) + +installed_notice_file := $($(my_prefix)OUT_NOTICE_FILES)/src/$(module_installed_filename).txt + +$(installed_notice_file): PRIVATE_INSTALLED_MODULE := $(module_installed_filename) + +$(installed_notice_file): $(notice_file) + @echo Notice file: $< -- $@ + $(hide) mkdir -p $(dir $@) + $(hide) cat $< >> $@ + +ifdef LOCAL_INSTALLED_MODULE +# Make LOCAL_INSTALLED_MODULE depend on NOTICE files if they exist +# libraries so they get installed along with it. Make it an order-only +# dependency so we don't re-install a module when the NOTICE changes. +$(LOCAL_INSTALLED_MODULE): | $(installed_notice_file) +endif + +else +# NOTICE file does not exist +installed_notice_file := +endif + +# Create a predictable, phony target to build this notice file. +# Define it even if the notice file doesn't exist so that other +# modules can depend on it. +notice_target := NOTICE-$(if \ + $(LOCAL_IS_HOST_MODULE),HOST,TARGET)-$(LOCAL_MODULE_CLASS)-$(LOCAL_MODULE) +.PHONY: $(notice_target) +$(notice_target): $(installed_notice_file) |