diff --git a/core/definitions.mk b/core/definitions.mk index 38b572b409..c981152276 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -580,9 +580,17 @@ endef ## License metadata build rule for my_register_name $(1) ########################################################### define license-metadata-rule -$(strip $(eval _dir := $(call license-metadata-dir))) +$(foreach meta_lic, $(ALL_MODULES.$(1).DELAYED_META_LIC),$(call _license-metadata-rule,$(1),$(meta_lic))) +$(call notice-rule,$(1)) +endef + +define _license-metadata-rule $(strip $(eval _srcs := $(strip $(foreach d,$(ALL_MODULES.$(1).NOTICE_DEPS),$(if $(strip $(ALL_MODULES.$(call word-colon,1,$(d)).INSTALLED)), $(ALL_MODULES.$(call word-colon,1,$(d)).INSTALLED),$(if $(strip $(ALL_MODULES.$(call word-colon,1,$(d)).BUILT)), $(ALL_MODULES.$(call word-colon,1,$(d)).BUILT), $(call word-colon,1,$d))))))) -$(strip $(eval _deps := $(sort $(filter-out $(_dir)/$(1).meta_lic%,$(foreach d,$(ALL_MODULES.$(1).NOTICE_DEPS), $(_dir)/$(call word-colon,1,$(d)).meta_lic:$(call wordlist-colon,2,9999,$d)))))) +$(strip $(eval _deps := $(sort $(filter-out $(2)%,\ + $(foreach d,$(ALL_MODULES.$(1).NOTICE_DEPS),\ + $(addsuffix :$(call wordlist-colon,2,9999,$(d)), \ + $(foreach dt,$(ALL_MODULES.$(d).BUILT) $(ALL_MODULES.$(d).INSTALLED),\ + $(ALL_TARGETS.$(dt).META_LIC)))))))) $(strip $(eval _notices := $(sort $(ALL_MODULES.$(1).NOTICES)))) $(strip $(eval _tgts := $(sort $(ALL_MODULES.$(1).BUILT)))) $(strip $(eval _inst := $(sort $(ALL_MODULES.$(1).INSTALLED)))) @@ -594,22 +602,22 @@ $(strip $(eval _map := $(strip $(foreach _m,$(sort $(ALL_MODULES.$(1).LICENSE_IN $(foreach ns,$(_ns),$(ns):$(_d) ) \ )))) -$(_dir)/$(1).meta_lic: PRIVATE_KINDS := $(sort $(ALL_MODULES.$(1).LICENSE_KINDS)) -$(_dir)/$(1).meta_lic: PRIVATE_CONDITIONS := $(sort $(ALL_MODULES.$(1).LICENSE_CONDITIONS)) -$(_dir)/$(1).meta_lic: PRIVATE_NOTICES := $(_notices) -$(_dir)/$(1).meta_lic: PRIVATE_NOTICE_DEPS := $(_deps) -$(_dir)/$(1).meta_lic: PRIVATE_SOURCES := $(_srcs) -$(_dir)/$(1).meta_lic: PRIVATE_TARGETS := $(_tgts) -$(_dir)/$(1).meta_lic: PRIVATE_INSTALLED := $(_inst) -$(_dir)/$(1).meta_lic: PRIVATE_PATH := $(_path) -$(_dir)/$(1).meta_lic: PRIVATE_IS_CONTAINER := $(ALL_MODULES.$(1).IS_CONTAINER) -$(_dir)/$(1).meta_lic: PRIVATE_PACKAGE_NAME := $(strip $(ALL_MODULES.$(1).LICENSE_PACKAGE_NAME)) -$(_dir)/$(1).meta_lic: PRIVATE_INSTALL_MAP := $(_map) -$(_dir)/$(1).meta_lic: PRIVATE_MODULE_TYPE := $(ALL_MODULES.$(1).MODULE_TYPE) -$(_dir)/$(1).meta_lic: PRIVATE_MODULE_CLASS := $(ALL_MODULES.$(1).MODULE_CLASS) -$(_dir)/$(1).meta_lic: PRIVATE_INSTALL_MAP := $(_map) -$(_dir)/$(1).meta_lic: $(BUILD_LICENSE_METADATA) -$(_dir)/$(1).meta_lic : $(foreach d,$(_deps),$(call word-colon,1,$(d))) $(foreach n,$(_notices),$(call word-colon,1,$(n)) ) +$(2): PRIVATE_KINDS := $(sort $(ALL_MODULES.$(1).LICENSE_KINDS)) +$(2): PRIVATE_CONDITIONS := $(sort $(ALL_MODULES.$(1).LICENSE_CONDITIONS)) +$(2): PRIVATE_NOTICES := $(_notices) +$(2): PRIVATE_NOTICE_DEPS := $(_deps) +$(2): PRIVATE_SOURCES := $(_srcs) +$(2): PRIVATE_TARGETS := $(_tgts) +$(2): PRIVATE_INSTALLED := $(_inst) +$(2): PRIVATE_PATH := $(_path) +$(2): PRIVATE_IS_CONTAINER := $(ALL_MODULES.$(1).IS_CONTAINER) +$(2): PRIVATE_PACKAGE_NAME := $(strip $(ALL_MODULES.$(1).LICENSE_PACKAGE_NAME)) +$(2): PRIVATE_INSTALL_MAP := $(_map) +$(2): PRIVATE_MODULE_TYPE := $(ALL_MODULES.$(1).MODULE_TYPE) +$(2): PRIVATE_MODULE_CLASS := $(ALL_MODULES.$(1).MODULE_CLASS) +$(2): PRIVATE_INSTALL_MAP := $(_map) +$(2): $(BUILD_LICENSE_METADATA) +$(2) : $(foreach d,$(_deps),$(call word-colon,1,$(d))) $(foreach n,$(_notices),$(call word-colon,1,$(n)) ) rm -f $$@ mkdir -p $$(dir $$@) $(BUILD_LICENSE_METADATA) \ @@ -627,7 +635,9 @@ $(_dir)/$(1).meta_lic : $(foreach d,$(_deps),$(call word-colon,1,$(d))) $(foreac -p '$$(PRIVATE_PACKAGE_NAME)' \ $$(addprefix -r ,$$(PRIVATE_PATH)) \ -o $$@ +endef +define notice-rule $(strip $(eval _mifs := $(sort $(ALL_MODULES.$(1).MODULE_INSTALLED_FILENAMES)))) $(strip $(eval _infs := $(sort $(ALL_MODULES.$(1).INSTALLED_NOTICE_FILE)))) @@ -636,7 +646,6 @@ $(if $(_infs),$(foreach inf,$(_infs), $(if $(strip $(filter $(1),$(INSTALLED_NOTICE_FILES.$(inf).MODULE))), $(strip $(eval _mif := $(firstword $(foreach m,$(_mifs),$(if $(filter %/src/$(m).txt,$(inf)),$(m)))))) -$(inf) : $(_dir)/$(1).meta_lic $(inf): PRIVATE_INSTALLED_MODULE := $(_mif) $(inf) : PRIVATE_NOTICES := $(sort $(foreach n,$(_notices),$(call word-colon,1,$(n) ))) @@ -831,14 +840,9 @@ $(strip \ $(foreach t,$(sort $(ALL_NON_MODULES)), \ $(eval ALL_TARGETS.$(t).META_LIC := $(_dir)/$(t).meta_lic) \ ) \ - $(foreach m,$(sort $(ALL_MODULES)), \ - $(foreach d,$(sort $(ALL_MODULES.$(m).BUILT) $(ALL_MODULES.$(m).INSTALLED)), \ - $(eval ALL_TARGETS.$(d).META_LIC := $(_dir)/$(m).meta_lic) \ - ) \ - ) \ -)$(foreach t,$(sort $(ALL_NON_MODULES)),$(eval $(call non-module-license-metadata-rule,$(t))))$(strip \ -)$(foreach m,$(sort $(ALL_MODULES)),$(eval $(call license-metadata-rule,$(m))))$(strip \ -)$(eval $(call report-missing-licenses-rule)) + $(foreach t,$(sort $(ALL_NON_MODULES)),$(eval $(call non-module-license-metadata-rule,$(t)))) \ + $(foreach m,$(sort $(ALL_MODULES)),$(eval $(call license-metadata-rule,$(m)))) \ + $(eval $(call report-missing-licenses-rule))) endef ########################################################### diff --git a/core/notice_files.mk b/core/notice_files.mk index 36f2c8f03b..b3eedc003c 100644 --- a/core/notice_files.mk +++ b/core/notice_files.mk @@ -125,16 +125,27 @@ endif local_path := $(LOCAL_PATH) + +module_license_metadata := + ifdef my_register_name -ALL_MODULES.$(my_register_name).LICENSE_PACKAGE_NAME := $(strip $(license_package_name)) -ALL_MODULES.$(my_register_name).MODULE_TYPE := $(strip $(ALL_MODULES.$(my_register_name).MODULE_TYPE) $(LOCAL_MODULE_TYPE)) -ALL_MODULES.$(my_register_name).MODULE_CLASS := $(strip $(ALL_MODULES.$(my_register_name).MODULE_CLASS) $(LOCAL_MODULE_CLASS)) -ALL_MODULES.$(my_register_name).LICENSE_KINDS := $(ALL_MODULES.$(my_register_name).LICENSE_KINDS) $(license_kinds) -ALL_MODULES.$(my_register_name).LICENSE_CONDITIONS := $(ALL_MODULES.$(my_register_name).LICENSE_CONDITIONS) $(license_conditions) -ALL_MODULES.$(my_register_name).LICENSE_INSTALL_MAP := $(ALL_MODULES.$(my_register_name).LICENSE_INSTALL_MAP) $(install_map) -ALL_MODULES.$(my_register_name).NOTICE_DEPS := $(ALL_MODULES.$(my_register_name).NOTICE_DEPS) $(notice_deps) -ALL_MODULES.$(my_register_name).IS_CONTAINER := $(strip $(filter-out false,$(ALL_MODULES.$(my_register_name).IS_CONTAINER) $(is_container))) -ALL_MODULES.$(my_register_name).PATH := $(strip $(ALL_MODULES.$(my_register_name).PATH) $(local_path)) + module_license_metadata := $(call local-intermediates-dir)/$(my_register_name).meta_lic + + $(foreach target,$(ALL_MODULES.$(my_register_name).BUILT) $(ALL_MODULES.$(my_register_name).INSTALLED),\ + $(eval ALL_TARGETS.$(target).META_LIC := $(module_license_metadata))) + + ALL_MODULES.$(my_register_name).META_LIC := $(strip $(ALL_MODULES.$(my_register_name).META_LIC) $(module_license_metadata)) + + ALL_MODULES.$(my_register_name).DELAYED_META_LIC := $(strip $(ALL_MODULES.$(my_register_name).DELAYED_META_LIC) $(module_license_metadata)) + ALL_MODULES.$(my_register_name).LICENSE_PACKAGE_NAME := $(strip $(license_package_name)) + ALL_MODULES.$(my_register_name).MODULE_TYPE := $(strip $(ALL_MODULES.$(my_register_name).MODULE_TYPE) $(LOCAL_MODULE_TYPE)) + ALL_MODULES.$(my_register_name).MODULE_CLASS := $(strip $(ALL_MODULES.$(my_register_name).MODULE_CLASS) $(LOCAL_MODULE_CLASS)) + ALL_MODULES.$(my_register_name).LICENSE_KINDS := $(ALL_MODULES.$(my_register_name).LICENSE_KINDS) $(license_kinds) + ALL_MODULES.$(my_register_name).LICENSE_CONDITIONS := $(ALL_MODULES.$(my_register_name).LICENSE_CONDITIONS) $(license_conditions) + ALL_MODULES.$(my_register_name).LICENSE_INSTALL_MAP := $(ALL_MODULES.$(my_register_name).LICENSE_INSTALL_MAP) $(install_map) + ALL_MODULES.$(my_register_name).NOTICE_DEPS := $(ALL_MODULES.$(my_register_name).NOTICE_DEPS) $(notice_deps) + ALL_MODULES.$(my_register_name).IS_CONTAINER := $(strip $(filter-out false,$(ALL_MODULES.$(my_register_name).IS_CONTAINER) $(is_container))) + ALL_MODULES.$(my_register_name).PATH := $(strip $(ALL_MODULES.$(my_register_name).PATH) $(local_path)) endif ifdef notice_file @@ -196,6 +207,8 @@ module_installed_filename := $(patsubst $(HOST_CROSS_OUT)/%,%,$(module_installed installed_notice_file := $($(my_prefix)OUT_NOTICE_FILES)/src/$(module_installed_filename).txt +$(installed_notice_file): $(module_license_metadata) + ifdef my_register_name ALL_MODULES.$(my_register_name).INSTALLED_NOTICE_FILE := $(ALL_MODULES.$(my_register_name).INSTALLED_NOTICE_FILE) $(installed_notice_file) ALL_MODULES.$(my_register_name).MODULE_INSTALLED_FILENAMES := $(ALL_MODULES.$(my_register_name).MODULE_INSTALLED_FILENAMES) $(module_installed_filename)