bab0fa6928
Add BOARD_VNDK_VERSION and LOCAL_USE_VNDK to specify the version of the VNDK that will be used globally, and whether to use the VNDK on a module basis. If the board is using the VNDK: * LOCAL_COPY_HEADERS may only be used by modules defining LOCAL_USE_VNDK * LOCAL_USE_VNDK modules will compile against the NDK headers and stub libraries, but continue to use the platform libc++. * LOCAL_USE_VNDK modules will not have the global includes like system/core/include, but it will use device-specific kernel headers. This change does not attempt to enforce any linking constraints, that will come in a later patch. Test: out/build-aosp_arm.ninja is identical before/after Change-Id: Icce65d4974f085093d500b5b2516983788fe2905
50 lines
1.7 KiB
Makefile
50 lines
1.7 KiB
Makefile
ifneq (,$(strip $(LOCAL_COPY_HEADERS)))
|
|
###########################################################
|
|
## Copy headers to the install tree
|
|
###########################################################
|
|
$(call record-module-type,COPY_HEADERS)
|
|
ifneq ($(strip $(LOCAL_IS_HOST_MODULE)),)
|
|
my_prefix := HOST_
|
|
else
|
|
my_prefix := TARGET_
|
|
endif
|
|
|
|
# Modules linking against the SDK do not have the include path to use
|
|
# COPY_HEADERS, so prevent them from exporting any either.
|
|
ifdef LOCAL_SDK_VERSION
|
|
$(shell echo $(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): Modules using LOCAL_SDK_VERSION may not use LOCAL_COPY_HEADERS >&2)
|
|
$(error done)
|
|
endif
|
|
|
|
include $(BUILD_SYSTEM)/local_vndk.mk
|
|
|
|
# If we're using the VNDK, only vendor modules using the VNDK may use
|
|
# LOCAL_COPY_HEADERS. Platform libraries will not have the include path
|
|
# present.
|
|
ifdef BOARD_VNDK_VERSION
|
|
ifndef LOCAL_USE_VNDK
|
|
$(shell echo $(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): Only vendor modules using LOCAL_USE_VNDK may use LOCAL_COPY_HEADERS >&2)
|
|
$(error done)
|
|
endif
|
|
endif
|
|
|
|
# Create a rule to copy each header, and make the
|
|
# all_copied_headers phony target depend on each
|
|
# destination header. copy-one-header defines the
|
|
# actual rule.
|
|
#
|
|
$(foreach header,$(LOCAL_COPY_HEADERS), \
|
|
$(eval _chFrom := $(LOCAL_PATH)/$(header)) \
|
|
$(eval _chTo := \
|
|
$(if $(LOCAL_COPY_HEADERS_TO),\
|
|
$($(my_prefix)OUT_HEADERS)/$(LOCAL_COPY_HEADERS_TO)/$(notdir $(header)),\
|
|
$($(my_prefix)OUT_HEADERS)/$(notdir $(header)))) \
|
|
$(eval ALL_COPIED_HEADERS.$(_chTo).MAKEFILE += $(LOCAL_MODULE_MAKEFILE)) \
|
|
$(eval ALL_COPIED_HEADERS.$(_chTo).SRC += $(_chFrom)) \
|
|
$(if $(filter $(_chTo),$(ALL_COPIED_HEADERS)),, \
|
|
$(eval ALL_COPIED_HEADERS += $(_chTo))) \
|
|
)
|
|
_chFrom :=
|
|
_chTo :=
|
|
|
|
endif # LOCAL_COPY_HEADERS
|