Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd128891 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes from topic "tproto"

* changes:
  Convert .meta_lic files to textproto
  Add macros for non-module license metadata and deps
parents fcdbafa7 1ee26cae
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -87,6 +87,24 @@ define word-colon
$(word $(1),$(subst :,$(space),$(2)))
endef

###########################################################
## Read a colon-separated sublist out of a colon-separated
## list of words.
## This has similar behavior to the built-in function
## $(wordlist s,e,str) except both the input and output
## word lists are colon-separated.
##
## The individual words may not contain spaces.
##
## $(1): 1 based index start
## $(2): 1 based index end (can be 0)
## $(3): value of the form a:b:c...
###########################################################

define wordlist-colon
$(subst $(space),:,$(wordlist $(1),$(2),$(subst :,$(space),$(3))))
endef

###########################################################
## Convert "a=b c= d e = f = g h=" into "a=b c=d e= f=g h="
##
+34 −0
Original line number Diff line number Diff line
@@ -1291,6 +1291,9 @@ $(target_notice_file_html_gz): $(target_notice_file_html) | $(MINIGZIP)
	$(hide) $(MINIGZIP) -9 < $< > $@
$(installed_notice_html_or_xml_gz): $(target_notice_file_html_gz)
	$(copy-file-to-target)

$(call declare-0p-target,$(target_notice_file_html_gz))
$(call declare-0p-target,$(installed_notice_html_or_xml_gz))
else
target_notice_file_xml := $(TARGET_OUT_INTERMEDIATES)/NOTICE.xml
target_notice_file_xml_gz := $(TARGET_OUT_INTERMEDIATES)/NOTICE.xml.gz
@@ -1474,6 +1477,28 @@ $(installed_vendor_dlkm_notice_xml_gz): $(target_vendor_dlkm_notice_file_xml_gz)
$(installed_odm_dlkm_notice_xml_gz): $(target_odm_dlkm_notice_file_xml_gz)
	$(copy-file-to-target)

$(call declare-0p-target,$(target_notice_file_xml))
$(call declare-0p-target,$(target_notice_file_xml_gz))
$(call declare-0p-target,$(target_vendor_notice_file_xml))
$(call declare-0p-target,$(target_vendor_notice_file_xml_gz))
$(call declare-0p-target,$(target_product_notice_file_xml))
$(call declare-0p-target,$(target_product_notice_file_xml_gz))
$(call declare-0p-target,$(target_system_ext_notice_file_xml))
$(call declare-0p-target,$(target_system_ext_notice_file_xml_gz))
$(call declare-0p-target,$(target_odm_notice_file_xml))
$(call declare-0p-target,$(target_odm_notice_file_xml_gz))
$(call declare-0p-target,$(target_vendor_dlkm_notice_file_xml))
$(call declare-0p-target,$(target_vendor_dlkm_notice_file_xml_gz))
$(call declare-0p-target,$(target_odm_dlkm_notice_file_xml))
$(call declare-0p-target,$(target_odm_dlkm_notice_file_xml_gz))
$(call declare-0p-target,$(installed_notice_html_or_xml_gz))
$(call declare-0p-target,$(installed_vendor_notice_xml_gz))
$(call declare-0p-target,$(installed_product_notice_xml_gz))
$(call declare-0p-target,$(installed_system_ext_notice_xml_gz))
$(call declare-0p-target,$(installed_odm_notice_xml_gz))
$(call declare-0p-target,$(installed_vendor_dlkm_notice_xml_gz))
$(call declare-0p-target,$(installed_odm_dlkm_notice_xml_gz))

ALL_DEFAULT_INSTALLED_MODULES += $(installed_notice_html_or_xml_gz)
ALL_DEFAULT_INSTALLED_MODULES += $(installed_vendor_notice_xml_gz)
ALL_DEFAULT_INSTALLED_MODULES += $(installed_product_notice_xml_gz)
@@ -2751,6 +2776,9 @@ endif
$(BUILT_SYSTEMIMAGE): $(FULL_SYSTEMIMAGE_DEPS) $(INSTALLED_FILES_FILE)
	$(call build-systemimage-target,$@)

$(call declare-1p-container,$(BUILT_SYSTEMIMAGE),system/extras)
$(call declare-container-license-deps,$(BUILT_SYSTEMIMAGE),$(FULL_SYSTEMIMAGE_DEPS),$(PRODUCT_OUT)/:)

INSTALLED_SYSTEMIMAGE_TARGET := $(PRODUCT_OUT)/system.img
SYSTEMIMAGE_SOURCE_DIR := $(TARGET_OUT)

@@ -2792,8 +2820,14 @@ $(INSTALLED_SYSTEMIMAGE_TARGET): $(BUILT_SYSTEMIMAGE)
	$(copy-file-to-target)
	$(hide) $(call assert-max-image-size,$@,$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))

$(call declare-1p-container,$(INSTALLED_SYSTEMIMAGE_TARGET),)
$(call declare-container-license-deps,$(INSTALLED_SYSTEMIMAGE_TARGET),$(BUILT_SYSTEMIMAGE),$(BUILT_SYSTEMIMAGE):/)

systemimage: $(INSTALLED_SYSTEMIMAGE_TARGET)

.PHONY: systemlicense
systemlicense: $(call license-metadata-dir)/$(INSTALLED_SYSTEMIMAGE_TARGET).meta_lic reportmissinglicenses

.PHONY: systemimage-nodeps snod
systemimage-nodeps snod: $(filter-out systemimage-nodeps snod,$(MAKECMDGOALS)) \
	            | $(INTERNAL_USERIMAGES_DEPS)
+2 −1
Original line number Diff line number Diff line
@@ -542,7 +542,8 @@ else ifneq (true,$(LOCAL_UNINSTALLABLE_MODULE))
  # Rule to install the module's companion symlinks
  my_installed_symlinks := $(addprefix $(my_module_path)/,$(LOCAL_MODULE_SYMLINKS) $(LOCAL_MODULE_SYMLINKS_$(my_32_64_bit_suffix)))
  $(foreach symlink,$(my_installed_symlinks),\
      $(call symlink-file,$(LOCAL_INSTALLED_MODULE),$(my_installed_module_stem),$(symlink)))
      $(call symlink-file,$(LOCAL_INSTALLED_MODULE),$(my_installed_module_stem),$(symlink))\
      $(call declare-0p-target,$(symlink)))

  $(my_all_targets) : | $(my_installed_symlinks)

+1 −0
Original line number Diff line number Diff line
@@ -187,6 +187,7 @@ LOCAL_MODULE_SYMLINKS:=
LOCAL_MODULE_TAGS:=
LOCAL_MODULE_TARGET_ARCH:=
LOCAL_MODULE_TARGET_ARCH_WARN:=
LOCAL_MODULE_TYPE:=
LOCAL_MODULE_UNSUPPORTED_HOST_ARCH:=
LOCAL_MODULE_UNSUPPORTED_HOST_ARCH_WARN:=
LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH:=
+230 −20
Original line number Diff line number Diff line
@@ -37,6 +37,10 @@ ALL_DOCS:=
# sub-variables.
ALL_MODULES:=

# The relative paths of the non-module targets in the system.
ALL_NON_MODULES:=
NON_MODULES_WITHOUT_LICENSE_METADATA:=

# Full paths to targets that should be added to the "make droid"
# set of installed targets.
ALL_DEFAULT_INSTALLED_MODULES:=
@@ -539,7 +543,7 @@ $(strip \
  $(eval _all_module_refs := \
    $(sort \
      $(foreach m,$(sort $(ALL_MODULES)), \
        $(ALL_MODULES.$(m).NOTICE_DEPS) \
        $(call word-colon,1,$(ALL_MODULES.$(m).NOTICE_DEPS)) \
      ) \
    ) \
  ) \
@@ -557,7 +561,7 @@ $(strip \
    $(eval ALL_MODULES.$(m).NOTICE_DEPS := \
      $(sort \
         $(foreach d,$(sort $(ALL_MODULES.$(m).NOTICE_DEPS)), \
           $(_lookup.$(d)) \
           $(foreach n,$(_lookup.$(call word-colon,1,$(d))),$(n):$(call wordlist-colon,2,9999,$(d))) \
        ) \
      ) \
    ) \
@@ -573,35 +577,56 @@ $(call generated-sources-dir-for,META,lic,)
endef

###########################################################
## License metadata build rule for my_register_name $1
## License metadata build rule for my_register_name $(1)
###########################################################
define license-metadata-rule
$(strip $(eval _dir := $(call license-metadata-dir)))
$(strip $(eval _deps := $(sort $(filter-out $(_dir)/$(1).meta_lic,$(foreach d,$(ALL_MODULES.$(1).NOTICE_DEPS), $(_dir)/$(d).meta_lic)))))
$(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 _notices := $(sort $(ALL_MODULES.$(1).NOTICES))))
$(strip $(eval _tgts := $(sort $(ALL_MODULES.$(1).BUILT) $(ALL_MODULES.$(1).INSTALLED))))
$(foreach b,$(_tgts),
$(_dir)/$(b).meta_module ::
	mkdir -p $$(dir $$@)
	echo $(_dir)/$(1).meta_lic >> $$@
	sort -u $$@ -o $$@
$(strip $(eval _tgts := $(sort $(ALL_MODULES.$(1).BUILT))))
$(strip $(eval _inst := $(sort $(ALL_MODULES.$(1).INSTALLED))))
$(strip $(eval _path := $(sort $(ALL_MODULES.$(1).PATH))))
$(strip $(eval _map := $(strip $(foreach _m,$(sort $(ALL_MODULES.$(1).LICENSE_INSTALL_MAP)), \
  $(eval _s := $(call word-colon,1,$(_m))) \
  $(eval _d := $(call word-colon,2,$(_m))) \
  $(eval _ns := $(if $(strip $(ALL_MODULES.$(_s).INSTALLED)),$(ALL_MODULES.$(_s).INSTALLED),$(if $(strip $(ALL_MODULES.$(_s).BUILT)),$(ALL_MODULES.$(_s).BUILT),$(_s)))) \
  $(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 := $(sort $(ALL_MODULES.$(1).LICENSE_INSTALL_MAP))
$(_dir)/$(1).meta_lic : $(_deps) $(_notices) $(foreach b,$(_tgts), $(_dir)/$(b).meta_module) build/make/tools/build-license-metadata.sh
$(_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)) )
	rm -f $$@
	mkdir -p $$(dir $$@)
	build/make/tools/build-license-metadata.sh -k $$(PRIVATE_KINDS) -c $$(PRIVATE_CONDITIONS) -n $$(PRIVATE_NOTICES) -d $$(PRIVATE_NOTICE_DEPS) -m $$(PRIVATE_INSTALL_MAP) -t $$(PRIVATE_TARGETS) $$(if $$(PRIVATE_IS_CONTAINER),-is_container) -p '$$(PRIVATE_PACKAGE_NAME)' -o $$@

.PHONY: $(1).meta_lic
$(1).meta_lic : $(_dir)/$(1).meta_lic
	$(BUILD_LICENSE_METADATA) \
	  $$(addprefix -mt ,$$(PRIVATE_MODULE_TYPE)) \
	  $$(addprefix -mc ,$$(PRIVATE_MODULE_CLASS)) \
	  $$(addprefix -k ,$$(PRIVATE_KINDS)) \
	  $$(addprefix -c ,$$(PRIVATE_CONDITIONS)) \
	  $$(addprefix -n ,$$(PRIVATE_NOTICES)) \
	  $$(addprefix -d ,$$(PRIVATE_NOTICE_DEPS)) \
	  $$(addprefix -s ,$$(PRIVATE_SOURCES)) \
	  $$(addprefix -m ,$$(PRIVATE_INSTALL_MAP)) \
	  $$(addprefix -t ,$$(PRIVATE_TARGETS)) \
	  $$(addprefix -i ,$$(PRIVATE_INSTALLED)) \
	  $$(if $$(PRIVATE_IS_CONTAINER),-is_container) \
	  -p '$$(PRIVATE_PACKAGE_NAME)' \
	  $$(addprefix -r ,$$(PRIVATE_PATH)) \
	  -o $$@

$(strip $(eval _mifs := $(sort $(ALL_MODULES.$(1).MODULE_INSTALLED_FILENAMES))))
$(strip $(eval _infs := $(sort $(ALL_MODULES.$(1).INSTALLED_NOTICE_FILE))))
@@ -613,9 +638,9 @@ $(strip $(eval _mif := $(firstword $(foreach m,$(_mifs),$(if $(filter %/src/$(m)

$(inf) : $(_dir)/$(1).meta_lic
$(inf): PRIVATE_INSTALLED_MODULE := $(_mif)
$(inf) : PRIVATE_NOTICES := $(_notices)
$(inf) : PRIVATE_NOTICES := $(sort $(foreach n,$(_notices),$(call word-colon,1,$(n) )))

$(inf): $(_notices)
$(inf): $(foreach n,$(_notices),$(call word-colon,1,$(n)) )
	@echo Notice file: $$< -- $$@
	mkdir -p $$(dir $$@)
	awk 'FNR==1 && NR > 1 {print "\n"} {print}' $$(PRIVATE_NOTICES) > $$@
@@ -624,11 +649,196 @@ $(inf): $(_notices)

endef

###########################################################
## License metadata build rule for non-module target $(1)
###########################################################
define non-module-license-metadata-rule
$(strip $(eval _dir := $(call license-metadata-dir)))
$(strip $(eval _tgt := $(strip $(1))))
$(strip $(eval _deps := $(sort $(filter-out 0p: :,$(foreach d,$(strip $(ALL_NON_MODULES.$(_tgt).DEPENDENCIES)),$(ALL_TARGETS.$(call word-colon,1,$(d)).META_LIC):$(call wordlist-colon,2,9999,$(d)))))))
$(strip $(eval _notices := $(sort $(ALL_NON_MODULES.$(_tgt).NOTICES))))
$(strip $(eval _path := $(sort $(ALL_NON_MODULES.$(_tgt).PATH))))
$(strip $(eval _install_map := $(ALL_NON_MODULES.$(_tgt).ROOT_MAPPINGS)))
$(strip \
  $(foreach d,$(strip $(ALL_NON_MODULES.$(_tgt).DEPENDENCIES)), \
    $(if $(strip $(ALL_TARGETS.$(d).META_LIC)), \
      , \
      $(eval NON_MODULES_WITHOUT_LICENSE_METADATA += $(d))) \
  ) \
)

$(_dir)/$(_tgt).meta_lic: PRIVATE_KINDS := $(sort $(ALL_NON_MODULES.$(_tgt).LICENSE_KINDS))
$(_dir)/$(_tgt).meta_lic: PRIVATE_CONDITIONS := $(sort $(ALL_NON_MODULES.$(_tgt).LICENSE_CONDITIONS))
$(_dir)/$(_tgt).meta_lic: PRIVATE_NOTICES := $(_notices)
$(_dir)/$(_tgt).meta_lic: PRIVATE_NOTICE_DEPS := $(_deps)
$(_dir)/$(_tgt).meta_lic: PRIVATE_SOURCES := $(ALL_NON_MODULES.$(_tgt).DEPENDENCIES)
$(_dir)/$(_tgt).meta_lic: PRIVATE_TARGETS := $(_tgt)
$(_dir)/$(_tgt).meta_lic: PRIVATE_PATH := $(_path)
$(_dir)/$(_tgt).meta_lic: PRIVATE_IS_CONTAINER := $(ALL_NON_MODULES.$(_tgt).IS_CONTAINER)
$(_dir)/$(_tgt).meta_lic: PRIVATE_PACKAGE_NAME := $(strip $(ALL_NON_MODULES.$(_tgt).LICENSE_PACKAGE_NAME))
$(_dir)/$(_tgt).meta_lic: PRIVATE_INSTALL_MAP := $(strip $(_install_map))
$(_dir)/$(_tgt).meta_lic: $(BUILD_LICENSE_METADATA)
$(_dir)/$(_tgt).meta_lic : $(foreach d,$(_deps),$(call word-colon,1,$(d))) $(foreach n,$(_notices),$(call word-colon,1,$(n)) )
	rm -f $$@
	mkdir -p $$(dir $$@)
	$(BUILD_LICENSE_METADATA) \
          -mt raw -mc unknown \
	  $$(addprefix -k ,$$(PRIVATE_KINDS)) \
	  $$(addprefix -c ,$$(PRIVATE_CONDITIONS)) \
	  $$(addprefix -n ,$$(PRIVATE_NOTICES)) \
	  $$(addprefix -d ,$$(PRIVATE_NOTICE_DEPS)) \
	  $$(addprefix -s ,$$(PRIVATE_SOURCES)) \
	  $$(addprefix -m ,$$(PRIVATE_INSTALL_MAP)) \
	  $$(addprefix -t ,$$(PRIVATE_TARGETS)) \
	  $$(if $$(PRIVATE_IS_CONTAINER),-is_container) \
	  -p '$$(PRIVATE_PACKAGE_NAME)' \
	  $$(addprefix -r ,$$(PRIVATE_PATH)) \
	  -o $$@

endef

###########################################################
## Declare the license metadata for non-module target $(1).
##
## $(2) -- license kinds e.g. SPDX-license-identifier-Apache-2.0
## $(3) -- license conditions e.g. notice by_exception_only
## $(4) -- license text filenames (notices)
## $(5) -- package name
## $(6) -- project path
###########################################################
define declare-license-metadata
$(strip \
  $(eval _tgt := $(strip $(1))) \
  $(eval ALL_NON_MODULES += $(_tgt)) \
  $(eval ALL_NON_MODULES.$(_tgt).LICENSE_KINDS := $(strip $(2))) \
  $(eval ALL_NON_MODULES.$(_tgt).LICENSE_CONDITIONS := $(strip $(3))) \
  $(eval ALL_NON_MODULES.$(_tgt).NOTICES := $(strip $(4))) \
  $(eval ALL_NON_MODULES.$(_tgt).LICENSE_PACKAGE_NAME := $(strip $(5))) \
  $(eval ALL_NON_MODULES.$(_tgt).PATH := $(strip $(6))) \
)
endef

###########################################################
## Declare the license metadata for non-module container-type target $(1).
##
## Container-type targets are targets like .zip files that
## merely aggregate other files.
##
## $(2) -- license kinds e.g. SPDX-license-identifier-Apache-2.0
## $(3) -- license conditions e.g. notice by_exception_only
## $(4) -- license text filenames (notices)
## $(5) -- package name
## $(6) -- project path
###########################################################
define declare-container-license-metadata
$(strip \
  $(eval _tgt := $(strip $(1))) \
  $(eval ALL_NON_MODULES += $(_tgt)) \
  $(eval ALL_NON_MODULES.$(_tgt).LICENSE_KINDS := $(strip $(2))) \
  $(eval ALL_NON_MODULES.$(_tgt).LICENSE_CONDITIONS := $(strip $(3))) \
  $(eval ALL_NON_MODULES.$(_tgt).NOTICES := $(strip $(4))) \
  $(eval ALL_NON_MODULES.$(_tgt).LICENSE_PACKAGE_NAME := $(strip $(5))) \
  $(eval ALL_NON_MODULES.$(_tgt).PATH := $(strip $(6))) \
  $(eval ALL_NON_MODULES.$(_tgt).IS_CONTAINER := true) \
)
endef

###########################################################
## Declare that non-module target $(1) is a non-copyrightable file.
##
## e.g. an information-only file merely listing other files.
###########################################################
define declare-0p-target
$(strip \
  $(eval _tgt := $(strip $(1))) \
  $(eval ALL_0P_TARGETS += $(_tgt)) \
)
endef

###########################################################
## Declare non-module target $(1) to have a first-party license
## (Android Apache 2.0)
##
## $(2) -- project path
###########################################################
define declare-1p-target
$(call declare-license-metadata,$(1),SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,Android,$(2))
endef

###########################################################
## Declare non-module container-type target $(1) to have a
## first-party license (Android Apache 2.0).
##
## Container-type targets are targets like .zip files that
## merely aggregate other files.
##
## $92) -- project path
###########################################################
define declare-1p-container
$(call declare-container-license-metadata,$(1),SPDX-license-identifier-Apache-2.0,notice,build/soong/licenses/LICENSE,Android,$(2))
endef

###########################################################
## Declare license dependencies $(2) for non-module target $(1)
###########################################################
define declare-license-deps
$(strip \
  $(eval _tgt := $(strip $(1))) \
  $(eval ALL_NON_MODULES += $(_tgt)) \
  $(eval ALL_NON_MODULES.$(_tgt).DEPENDENCIES := $(strip $(ALL_NON_MODULES.$(_tgt).DEPENDENCIES) $(2))) \
)
endef

###########################################################
## Declare license dependencies $(2) for non-module container-type target $(1)
##
## Container-type targets are targets like .zip files that
## merely aggregate other files.
##
## $(3) -- root mappings space-separated source:target
###########################################################
define declare-container-license-deps
$(strip \
  $(eval _tgt := $(strip $(1))) \
  $(eval ALL_NON_MODULES += $(_tgt)) \
  $(eval ALL_NON_MODULES.$(_tgt).DEPENDENCIES := $(strip $(ALL_NON_MODULES.$(_tgt).DEPENDENCIES) $(2))) \
  $(eval ALL_NON_MODULES.$(_tgt).IS_CONTAINER := true) \
  $(eval ALL_NON_MODULES.$(_tgt).ROOT_MAPPINGS := $(strip $(ALL_NON_MODULES.$(_tgt).ROOT_MAPPINGS) $(3))) \
)
endef

###########################################################
## Declares the rule to report targets with no license metadata.
###########################################################
define report-missing-licenses-rule
.PHONY: reportmissinglicenses
reportmissinglicenses: PRIVATE_NON_MODULES:=$(sort $(NON_MODULES_WITHOUT_LICENSE_METADATA))
reportmissinglicenses:
	@echo Reporting $$(words $$(PRIVATE_NON_MODULES)) targets without license metadata
	$$(foreach t,$$(PRIVATE_NON_MODULES),if ! [ -h $$(t) ]; then echo No license metadata for $$(t) >&2; fi;)

endef

###########################################################
## Declares a license metadata build rule for ALL_MODULES
###########################################################
define build-license-metadata
$(foreach m,$(sort $(ALL_MODULES)),$(eval $(call license-metadata-rule,$(m))))
$(strip \
  $(strip $(eval _dir := $(call license-metadata-dir))) \
  $(foreach t,$(sort $(ALL_0P_TARGETS)), \
    $(eval ALL_TARGETS.$(t).META_LIC := 0p) \
  ) \
  $(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))
endef

###########################################################
Loading