1ifneq (,$(strip $(LOCAL_COPY_HEADERS)))
2###########################################################
3## Copy headers to the install tree
4###########################################################
5$(call record-module-type,COPY_HEADERS)
6ifneq ($(strip $(LOCAL_IS_HOST_MODULE)),)
7  $(call pretty-error,LOCAL_COPY_HEADERS may not be used with host modules)
8endif
9
10# Modules linking against the SDK do not have the include path to use
11# COPY_HEADERS, so prevent them from exporting any either.
12ifdef LOCAL_SDK_VERSION
13  $(call pretty-error,Modules using LOCAL_SDK_VERSION may not use LOCAL_COPY_HEADERS)
14endif
15
16include $(BUILD_SYSTEM)/local_vndk.mk
17
18# If we're using the VNDK, only vendor modules using the VNDK may use
19# LOCAL_COPY_HEADERS. Platform libraries will not have the include path
20# present.
21ifdef BOARD_VNDK_VERSION
22ifndef LOCAL_USE_VNDK
23  $(call pretty-error,Only vendor modules using LOCAL_USE_VNDK may use LOCAL_COPY_HEADERS)
24endif
25endif
26
27# Clean up LOCAL_COPY_HEADERS_TO, since soong_ui will be comparing cleaned
28# paths to figure out which headers are obsolete and should be removed.
29LOCAL_COPY_HEADERS_TO := $(call clean-path,$(LOCAL_COPY_HEADERS_TO))
30ifneq ($(filter /% .. ../%,$(LOCAL_COPY_HEADERS_TO)),)
31  $(call pretty-error,LOCAL_COPY_HEADERS_TO may not start with / or ../ : $(LOCAL_COPY_HEADERS_TO))
32endif
33ifeq ($(LOCAL_COPY_HEADERS_TO),.)
34  LOCAL_COPY_HEADERS_TO :=
35endif
36
37# Create a rule to copy each header, and make the
38# all_copied_headers phony target depend on each
39# destination header.  copy-one-header defines the
40# actual rule.
41#
42$(foreach header,$(LOCAL_COPY_HEADERS), \
43  $(eval _chFrom := $(LOCAL_PATH)/$(header)) \
44  $(eval _chTo := \
45      $(if $(LOCAL_COPY_HEADERS_TO),\
46        $(TARGET_OUT_HEADERS)/$(LOCAL_COPY_HEADERS_TO)/$(notdir $(header)),\
47        $(TARGET_OUT_HEADERS)/$(notdir $(header)))) \
48  $(eval ALL_COPIED_HEADERS.$(_chTo).MAKEFILE += $(LOCAL_MODULE_MAKEFILE)) \
49  $(eval ALL_COPIED_HEADERS.$(_chTo).SRC += $(_chFrom)) \
50  $(if $(filter $(_chTo),$(ALL_COPIED_HEADERS)),, \
51      $(eval ALL_COPIED_HEADERS += $(_chTo))) \
52 )
53_chFrom :=
54_chTo :=
55
56endif # LOCAL_COPY_HEADERS
57