Loading core/Makefile +54 −10 Original line number Diff line number Diff line Loading @@ -1314,6 +1314,7 @@ endif # BUILDING_VENDOR_BOOT_IMAGE # $(5) - Directory to use. Notice files are all $(5)/src. Other # directories in there will be used for scratch # $(6) - Dependencies for the output files # $(7) - Directories to exclude # # The algorithm here is that we go collect a hash for each of the notice # files and write the names of the files that match that hash. Then Loading @@ -1331,7 +1332,7 @@ $(2) $(3): PRIVATE_MESSAGE := $(4) $(2) $(3): PRIVATE_DIR := $(5) $(2) : $(3) $(3) : $(6) $(BUILD_SYSTEM)/Makefile build/make/tools/generate-notice-files.py build/make/tools/generate-notice-files.py --text-output $(2) \ build/make/tools/generate-notice-files.py --text-output $(2) $(foreach xdir, $(7), -e $(xdir) )\ $(if $(filter $(1),xml_excluded_vendor_product_odm),-e vendor -e product -e system_ext -e odm --xml-output, \ $(if $(filter $(1),xml_excluded_system_product_odm),-e system -e product -e system_ext -e odm --xml-output, \ $(if $(filter $(1),xml_product),-i product --xml-output, \ Loading @@ -1356,6 +1357,11 @@ kernel_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/kernel.txt winpthreads_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/winpthreads.txt pdk_fusion_notice_files := $(filter $(TARGET_OUT_NOTICE_FILES)/%, $(ALL_PDK_FUSION_FILES)) # Some targets get included under $(PRODUCT_OUT) for debug symbols or other # reasons--not to be flashed onto any device. Targets under these directories # need no associated notice file on the device UI. exclude_target_dirs := apex # TODO(b/69865032): Make PRODUCT_NOTICE_SPLIT the default behavior. ifneq ($(PRODUCT_NOTICE_SPLIT),true) target_notice_file_html := $(TARGET_OUT_INTERMEDIATES)/NOTICE.html Loading @@ -1366,7 +1372,8 @@ $(eval $(call combine-notice-files, html, \ $(target_notice_file_html), \ "Notices for files contained in the filesystem images in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(ALL_DEFAULT_INSTALLED_MODULES) $(kernel_notice_file) $(pdk_fusion_notice_files))) $(ALL_DEFAULT_INSTALLED_MODULES) $(kernel_notice_file) $(pdk_fusion_notice_files), \ $(exclude_target_dirs))) $(target_notice_file_html_gz): $(target_notice_file_html) | $(MINIGZIP) $(hide) $(MINIGZIP) -9 < $< > $@ $(installed_notice_html_or_xml_gz): $(target_notice_file_html_gz) Loading Loading @@ -1400,10 +1407,13 @@ installed_odm_notice_xml_gz := $(TARGET_OUT_ODM)/etc/NOTICE.xml.gz # being built. A notice xml file must depend on all modules that could potentially # install a license file relevant to it. license_modules := $(ALL_DEFAULT_INSTALLED_MODULES) $(kernel_notice_file) $(pdk_fusion_notice_files) # Only files copied to a system image need system image notices. license_modules := $(filter $(PRODUCT_OUT)/%,$(license_modules)) # Phonys/fakes don't have notice files (though their deps might) license_modules := $(filter-out $(TARGET_OUT_FAKE)/%,$(license_modules)) # testcases are not relevant to the system image. license_modules := $(filter-out $(TARGET_OUT_TESTCASES)/%,$(license_modules)) # filesystem images: system, vendor, product, system_ext, and odm license_modules_system := $(filter $(TARGET_OUT)/%,$(license_modules)) license_modules_vendor := $(filter $(TARGET_OUT_VENDOR)/%,$(license_modules)) license_modules_product := $(filter $(TARGET_OUT_PRODUCT)/%,$(license_modules)) Loading @@ -1414,16 +1424,44 @@ license_modules_agg := $(license_modules_system) \ $(license_modules_product) \ $(license_modules_system_ext) \ $(license_modules_odm) # targets used for debug symbols only and do not get copied to the device license_modules_symbols_only := $(filter $(PRODUCT_OUT)/apex/%,$(license_modules)) license_modules_rest := $(filter-out $(license_modules_agg),$(license_modules)) license_modules_rest := $(filter-out $(license_modules_symbols_only),$(license_modules_rest)) # Identify the other targets we expect to have notices for: # targets copied to the device but are not readable by the UI (e.g. must boot # into a different partition to read or don't have an associated /etc # directory) must have their notices built somewhere readable. license_modules_rehomed := $(filter-out $(PRODUCT_OUT)/%/%,$(license_modules_rest)) # files in root have no /etc license_modules_rehomed += $(filter $(PRODUCT_OUT)/recovery/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/root/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/data/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/ramdisk/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/debug_ramdisk/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/vendor-ramdisk/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/persist/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/persist.img,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/system_other/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/kernel%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/%.img,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/%.bin,$(license_modules_rest)) # after removing targets in system images, targets reported in system images, and # targets used for debug symbols that do not need notices, nothing must remain. license_modules_rest := $(filter-out $(license_modules_rehomed),$(license_modules_rest)) $(call maybe-print-list-and-error, $(license_modules_rest), \ "Targets added under $(PRODUCT_OUT)/ unaccounted for notice handling.") # If we are building in a configuration that includes a prebuilt vendor.img, we can't # update its notice file, so include those notices in the system partition instead ifdef BOARD_PREBUILT_VENDORIMAGE license_modules_system += $(license_modules_rest) license_modules_system += $(license_modules_rehomed) system_xml_directories := xml_excluded_vendor_product_odm system_notice_file_message := "Notices for files contained in all filesystem images except vendor/system_ext/product/odm in this directory:" else license_modules_vendor += $(license_modules_rest) license_modules_vendor += $(license_modules_rehomed) system_xml_directories := xml_system system_notice_file_message := "Notices for files contained in the system filesystem image in this directory:" endif Loading @@ -1433,31 +1471,36 @@ $(eval $(call combine-notice-files, $(system_xml_directories), \ $(target_notice_file_xml), \ $(system_notice_file_message), \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_system))) $(license_modules_system), \ $(exclude_target_dirs))) $(eval $(call combine-notice-files, xml_excluded_system_product_odm, \ $(target_vendor_notice_file_txt), \ $(target_vendor_notice_file_xml), \ "Notices for files contained in all filesystem images except system/system_ext/product/odm in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_vendor))) $(license_modules_vendor), \ $(exclude_target_dirs))) $(eval $(call combine-notice-files, xml_product, \ $(target_product_notice_file_txt), \ $(target_product_notice_file_xml), \ "Notices for files contained in the product filesystem image in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_product))) $(license_modules_product), \ $(exclude_target_dirs))) $(eval $(call combine-notice-files, xml_system_ext, \ $(target_system_ext_notice_file_txt), \ $(target_system_ext_notice_file_xml), \ "Notices for files contained in the system_ext filesystem image in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_system_ext))) $(license_modules_system_ext), \ $(exclude_target_dirs))) $(eval $(call combine-notice-files, xml_odm, \ $(target_odm_notice_file_txt), \ $(target_odm_notice_file_xml), \ "Notices for files contained in the odm filesystem image in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_odm))) $(license_modules_odm), \ $(exclude_target_dirs))) $(target_notice_file_xml_gz): $(target_notice_file_xml) | $(MINIGZIP) $(hide) $(MINIGZIP) -9 < $< > $@ Loading Loading @@ -1495,7 +1538,8 @@ $(eval $(call combine-notice-files, html, \ "Notices for files contained in the tools directory:", \ $(HOST_OUT_NOTICE_FILES), \ $(ALL_DEFAULT_INSTALLED_MODULES) \ $(winpthreads_notice_file))) $(winpthreads_notice_file), \ $(exclude_target_dirs))) endif # TARGET_BUILD_APPS Loading Loading
core/Makefile +54 −10 Original line number Diff line number Diff line Loading @@ -1314,6 +1314,7 @@ endif # BUILDING_VENDOR_BOOT_IMAGE # $(5) - Directory to use. Notice files are all $(5)/src. Other # directories in there will be used for scratch # $(6) - Dependencies for the output files # $(7) - Directories to exclude # # The algorithm here is that we go collect a hash for each of the notice # files and write the names of the files that match that hash. Then Loading @@ -1331,7 +1332,7 @@ $(2) $(3): PRIVATE_MESSAGE := $(4) $(2) $(3): PRIVATE_DIR := $(5) $(2) : $(3) $(3) : $(6) $(BUILD_SYSTEM)/Makefile build/make/tools/generate-notice-files.py build/make/tools/generate-notice-files.py --text-output $(2) \ build/make/tools/generate-notice-files.py --text-output $(2) $(foreach xdir, $(7), -e $(xdir) )\ $(if $(filter $(1),xml_excluded_vendor_product_odm),-e vendor -e product -e system_ext -e odm --xml-output, \ $(if $(filter $(1),xml_excluded_system_product_odm),-e system -e product -e system_ext -e odm --xml-output, \ $(if $(filter $(1),xml_product),-i product --xml-output, \ Loading @@ -1356,6 +1357,11 @@ kernel_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/kernel.txt winpthreads_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/winpthreads.txt pdk_fusion_notice_files := $(filter $(TARGET_OUT_NOTICE_FILES)/%, $(ALL_PDK_FUSION_FILES)) # Some targets get included under $(PRODUCT_OUT) for debug symbols or other # reasons--not to be flashed onto any device. Targets under these directories # need no associated notice file on the device UI. exclude_target_dirs := apex # TODO(b/69865032): Make PRODUCT_NOTICE_SPLIT the default behavior. ifneq ($(PRODUCT_NOTICE_SPLIT),true) target_notice_file_html := $(TARGET_OUT_INTERMEDIATES)/NOTICE.html Loading @@ -1366,7 +1372,8 @@ $(eval $(call combine-notice-files, html, \ $(target_notice_file_html), \ "Notices for files contained in the filesystem images in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(ALL_DEFAULT_INSTALLED_MODULES) $(kernel_notice_file) $(pdk_fusion_notice_files))) $(ALL_DEFAULT_INSTALLED_MODULES) $(kernel_notice_file) $(pdk_fusion_notice_files), \ $(exclude_target_dirs))) $(target_notice_file_html_gz): $(target_notice_file_html) | $(MINIGZIP) $(hide) $(MINIGZIP) -9 < $< > $@ $(installed_notice_html_or_xml_gz): $(target_notice_file_html_gz) Loading Loading @@ -1400,10 +1407,13 @@ installed_odm_notice_xml_gz := $(TARGET_OUT_ODM)/etc/NOTICE.xml.gz # being built. A notice xml file must depend on all modules that could potentially # install a license file relevant to it. license_modules := $(ALL_DEFAULT_INSTALLED_MODULES) $(kernel_notice_file) $(pdk_fusion_notice_files) # Only files copied to a system image need system image notices. license_modules := $(filter $(PRODUCT_OUT)/%,$(license_modules)) # Phonys/fakes don't have notice files (though their deps might) license_modules := $(filter-out $(TARGET_OUT_FAKE)/%,$(license_modules)) # testcases are not relevant to the system image. license_modules := $(filter-out $(TARGET_OUT_TESTCASES)/%,$(license_modules)) # filesystem images: system, vendor, product, system_ext, and odm license_modules_system := $(filter $(TARGET_OUT)/%,$(license_modules)) license_modules_vendor := $(filter $(TARGET_OUT_VENDOR)/%,$(license_modules)) license_modules_product := $(filter $(TARGET_OUT_PRODUCT)/%,$(license_modules)) Loading @@ -1414,16 +1424,44 @@ license_modules_agg := $(license_modules_system) \ $(license_modules_product) \ $(license_modules_system_ext) \ $(license_modules_odm) # targets used for debug symbols only and do not get copied to the device license_modules_symbols_only := $(filter $(PRODUCT_OUT)/apex/%,$(license_modules)) license_modules_rest := $(filter-out $(license_modules_agg),$(license_modules)) license_modules_rest := $(filter-out $(license_modules_symbols_only),$(license_modules_rest)) # Identify the other targets we expect to have notices for: # targets copied to the device but are not readable by the UI (e.g. must boot # into a different partition to read or don't have an associated /etc # directory) must have their notices built somewhere readable. license_modules_rehomed := $(filter-out $(PRODUCT_OUT)/%/%,$(license_modules_rest)) # files in root have no /etc license_modules_rehomed += $(filter $(PRODUCT_OUT)/recovery/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/root/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/data/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/ramdisk/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/debug_ramdisk/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/vendor-ramdisk/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/persist/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/persist.img,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/system_other/%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/kernel%,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/%.img,$(license_modules_rest)) license_modules_rehomed += $(filter $(PRODUCT_OUT)/%.bin,$(license_modules_rest)) # after removing targets in system images, targets reported in system images, and # targets used for debug symbols that do not need notices, nothing must remain. license_modules_rest := $(filter-out $(license_modules_rehomed),$(license_modules_rest)) $(call maybe-print-list-and-error, $(license_modules_rest), \ "Targets added under $(PRODUCT_OUT)/ unaccounted for notice handling.") # If we are building in a configuration that includes a prebuilt vendor.img, we can't # update its notice file, so include those notices in the system partition instead ifdef BOARD_PREBUILT_VENDORIMAGE license_modules_system += $(license_modules_rest) license_modules_system += $(license_modules_rehomed) system_xml_directories := xml_excluded_vendor_product_odm system_notice_file_message := "Notices for files contained in all filesystem images except vendor/system_ext/product/odm in this directory:" else license_modules_vendor += $(license_modules_rest) license_modules_vendor += $(license_modules_rehomed) system_xml_directories := xml_system system_notice_file_message := "Notices for files contained in the system filesystem image in this directory:" endif Loading @@ -1433,31 +1471,36 @@ $(eval $(call combine-notice-files, $(system_xml_directories), \ $(target_notice_file_xml), \ $(system_notice_file_message), \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_system))) $(license_modules_system), \ $(exclude_target_dirs))) $(eval $(call combine-notice-files, xml_excluded_system_product_odm, \ $(target_vendor_notice_file_txt), \ $(target_vendor_notice_file_xml), \ "Notices for files contained in all filesystem images except system/system_ext/product/odm in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_vendor))) $(license_modules_vendor), \ $(exclude_target_dirs))) $(eval $(call combine-notice-files, xml_product, \ $(target_product_notice_file_txt), \ $(target_product_notice_file_xml), \ "Notices for files contained in the product filesystem image in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_product))) $(license_modules_product), \ $(exclude_target_dirs))) $(eval $(call combine-notice-files, xml_system_ext, \ $(target_system_ext_notice_file_txt), \ $(target_system_ext_notice_file_xml), \ "Notices for files contained in the system_ext filesystem image in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_system_ext))) $(license_modules_system_ext), \ $(exclude_target_dirs))) $(eval $(call combine-notice-files, xml_odm, \ $(target_odm_notice_file_txt), \ $(target_odm_notice_file_xml), \ "Notices for files contained in the odm filesystem image in this directory:", \ $(TARGET_OUT_NOTICE_FILES), \ $(license_modules_odm))) $(license_modules_odm), \ $(exclude_target_dirs))) $(target_notice_file_xml_gz): $(target_notice_file_xml) | $(MINIGZIP) $(hide) $(MINIGZIP) -9 < $< > $@ Loading Loading @@ -1495,7 +1538,8 @@ $(eval $(call combine-notice-files, html, \ "Notices for files contained in the tools directory:", \ $(HOST_OUT_NOTICE_FILES), \ $(ALL_DEFAULT_INSTALLED_MODULES) \ $(winpthreads_notice_file))) $(winpthreads_notice_file), \ $(exclude_target_dirs))) endif # TARGET_BUILD_APPS Loading