Revert "Remove unused notice_files target"
This broke the PRODUCT-sdk-(win_)sdk target of SDK builds
This reverts commit 620a5270fc77431b773f3cfe948c467e03a2c72e.
Change-Id: I81afe68ae98b5daac5fe136ec8d04f6fba5af9b4
diff --git a/core/Makefile b/core/Makefile
index 0d3ddc8..819eb38 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -410,12 +410,15 @@
# ALL_DEFAULT_INSTALLED_MODULES, which those use to pick which files
# go into the systemimage.
+.PHONY: notice_files
+
# Create the rule to combine the files into text and html forms
-# $(1) - HTML output file
-# $(2) - File title
-# $(3) - Directory to use. Notice files are all $(3)/src. Other
+# $(1) - Plain text output file
+# $(2) - HTML output file
+# $(3) - File title
+# $(4) - Directory to use. Notice files are all $(4)/src. Other
# directories in there will be used for scratch
-# $(4) - Dependencies for the output files
+# $(5) - Dependencies for the output files
#
# 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
@@ -429,9 +432,9 @@
# original notice files instead of making rules to copy them somwehere.
# Then we could traverse that without quite as much bash drama.
define combine-notice-files
-$(1): PRIVATE_MESSAGE := $(2)
-$(1) $(3)/hash-timestamp: PRIVATE_DIR := $(3)
-$(3)/hash-timestamp: $(4) $(BUILD_SYSTEM)/Makefile
+$(1) $(2): PRIVATE_MESSAGE := $(3)
+$(1) $(2) $(4)/hash-timestamp: PRIVATE_DIR := $(4)
+$(4)/hash-timestamp: $(5) $(BUILD_SYSTEM)/Makefile
@echo Finding NOTICE files: $$@
$$(hide) rm -rf $$@ $$(PRIVATE_DIR)/hash
$$(hide) mkdir -p $$(PRIVATE_DIR)/hash
@@ -441,7 +444,32 @@
echo $$$$file >> $$$$hashfile; \
done
$$(hide) touch $$@
-$(1): $(3)/hash-timestamp
+$(1): $(4)/hash-timestamp
+ @echo Combining NOTICE files: $$@
+ $$(hide) mkdir -p $$(dir $$@)
+ $$(hide) echo $$(PRIVATE_MESSAGE) > $$@
+ $$(hide) find $$(PRIVATE_DIR)/hash -type f | xargs cat | sort | \
+ sed -e "s:$$(PRIVATE_DIR)/src\(.*\)\.txt: \1:" >> $$@
+ $$(hide) echo >> $$@
+ $$(hide) echo >> $$@
+ $$(hide) echo >> $$@
+ $$(hide) for hashfile in $$$$(find $$(PRIVATE_DIR)/hash -type f); do \
+ echo "============================================================"\
+ >> $$@; \
+ echo "Notices for file(s):" >> $$@; \
+ cat $$$$hashfile | sort | \
+ sed -e "s:$$(PRIVATE_DIR)/src\(.*\)\.txt: \1:" >> \
+ $$@; \
+ echo "------------------------------------------------------------"\
+ >> $$@; \
+ echo >> $$@; \
+ orig=$$$$(head -n 1 $$$$hashfile); \
+ cat $$$$orig >> $$@; \
+ echo >> $$@; \
+ echo >> $$@; \
+ echo >> $$@; \
+ done
+$(2): $(4)/hash-timestamp
@echo Combining NOTICE files: $$@
$$(hide) mkdir -p $$(dir $$@)
$$(hide) echo "<html><head>" > $$@
@@ -477,25 +505,30 @@
done
$$(hide) echo "</table>" >> $$@
$$(hide) echo "</body></html>" >> $$@
+notice_files: $(1) $(2)
endef
# TODO These intermediate NOTICE.txt/NOTICE.html files should go into
# TARGET_OUT_NOTICE_FILES now that the notice files are gathered from
# the src subdirectory.
+target_notice_file_txt := $(TARGET_OUT_INTERMEDIATES)/NOTICE.txt
target_notice_file_html := $(TARGET_OUT_INTERMEDIATES)/NOTICE.html
target_notice_file_html_gz := $(TARGET_OUT_INTERMEDIATES)/NOTICE.html.gz
+tools_notice_file_txt := $(HOST_OUT_INTERMEDIATES)/NOTICE.txt
tools_notice_file_html := $(HOST_OUT_INTERMEDIATES)/NOTICE.html
kernel_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/kernel.txt
$(eval $(call combine-notice-files, \
+ $(target_notice_file_txt), \
$(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)))
$(eval $(call combine-notice-files, \
+ $(tools_notice_file_txt), \
$(tools_notice_file_html), \
"Notices for files contained in the tools directory:", \
$(HOST_OUT_NOTICE_FILES), \
diff --git a/core/binary.mk b/core/binary.mk
index e729164..e488200 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -571,7 +571,7 @@
# We don't care about installed static libraries, since the
# libraries have already been linked into the module at that point.
# We do, however, care about the NOTICE files for any static
-# libraries that we use. (see notice_files.mk)
+# libraries that we use. (see notice_files.make)
installed_static_library_notice_file_targets := \
$(foreach lib,$(LOCAL_STATIC_LIBRARIES) $(LOCAL_WHOLE_STATIC_LIBRARIES), \