From a7808accf4e3cfd4877ee0718f1b0efab8cb665e Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Fri, 4 Mar 2016 12:40:25 -0800 Subject: [PATCH] Reexport include dirs for whole static libs When a static library uses LOCAL_EXPORT_C_INCLUDE_DIRS, then is included entirely in another library with LOCAL_WHOLE_STATIC_LIBRARIES, all the symbols are reexported, so reexport the headers too. Change-Id: I92cf17894fc991a5b5ecb59ca5e095e407c98de4 --- core/binary.mk | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/core/binary.mk b/core/binary.mk index 54dc474c3..4e5bee9b1 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -1398,19 +1398,26 @@ $(LOCAL_INSTALLED_MODULE): | $(installed_static_library_notice_file_targets) ########################################################### export_includes := $(intermediates)/export_includes $(export_includes): PRIVATE_EXPORT_C_INCLUDE_DIRS := $(my_export_c_include_dirs) +export_include_deps := $(strip \ + $(foreach l,$(my_whole_static_libraries), \ + $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) +$(export_includes): PRIVATE_REEXPORTED_INCLUDES := $(export_include_deps) # Make sure .pb.h are already generated before any dependent source files get compiled. # Similarly, the generated DBus headers need to exist before we export their location. # People are not going to consume the aidl generated cpp file, but the cpp file is # generated after the headers, so this is a convenient way to ensure the headers exist. -$(export_includes) : $(proto_generated_headers) $(dbus_generated_headers) $(aidl_gen_cpp) +$(export_includes) : $(proto_generated_headers) $(dbus_generated_headers) $(aidl_gen_cpp) $(export_include_deps) @echo Export includes file: $< -- $@ - $(hide) mkdir -p $(dir $@) && rm -f $@.tmp + $(hide) mkdir -p $(dir $@) && rm -f $@.tmp && touch $@.tmp ifdef my_export_c_include_dirs $(hide) for d in $(PRIVATE_EXPORT_C_INCLUDE_DIRS); do \ echo "-I $$d" >> $@.tmp; \ done -else - $(hide) touch $@.tmp +endif +ifdef export_include_deps + $(hide) for f in $(PRIVATE_REEXPORTED_INCLUDES); do \ + cat $$f >> $@.tmp; \ + done endif $(hide) if cmp -s $@.tmp $@ ; then \ rm $@.tmp ; \ -- 2.11.0