diff --git a/core/base_rules.mk b/core/base_rules.mk index 58d838d231..fce7a1f8ef 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -328,11 +328,7 @@ LOCAL_INTERMEDIATE_TARGETS += $(LOCAL_BUILT_MODULE) # As .KATI_RESTAT is specified to .toc files and commit-change-for-toc is used, # dependent binaries of a .toc file will be rebuilt only when the content of # the .toc file is changed. -# -# Don't create .toc files for Soong shared libraries, that is handled in -# Soong and soong_cc_prebuilt.mk ########################################################### -ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) ifeq ($(LOCAL_MODULE_CLASS),SHARED_LIBRARIES) LOCAL_INTERMEDIATE_TARGETS += $(LOCAL_BUILT_MODULE).toc $(LOCAL_BUILT_MODULE).toc: $(LOCAL_BUILT_MODULE) @@ -349,7 +345,6 @@ $(eval $(call copy-one-file,$(LOCAL_BUILT_MODULE).toc,$(OVERRIDE_BUILT_MODULE_PA $(OVERRIDE_BUILT_MODULE_PATH)/$(my_built_module_stem).toc: $(OVERRIDE_BUILT_MODULE_PATH)/$(my_built_module_stem) endif endif -endif ########################################################### ## logtags: Add .logtags files to global list diff --git a/core/binary.mk b/core/binary.mk index 440c32df1b..2ccdb4131e 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -372,7 +372,10 @@ my_static_libraries := $(LOCAL_STATIC_LIBRARIES_$($(my_prefix)$(LOCAL_2ND_ARCH_V my_whole_static_libraries := $(LOCAL_WHOLE_STATIC_LIBRARIES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_WHOLE_STATIC_LIBRARIES_$(my_32_64_bit_suffix)) $(my_whole_static_libraries) my_header_libraries := $(LOCAL_HEADER_LIBRARIES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_HEADER_LIBRARIES_$(my_32_64_bit_suffix)) $(my_header_libraries) +# soong defined modules already have done through this +ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) include $(BUILD_SYSTEM)/cxx_stl_setup.mk +endif # Add static HAL libraries ifdef LOCAL_HAL_STATIC_LIBRARIES @@ -389,6 +392,8 @@ else my_linker := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)LINKER) endif +# Modules from soong do not need this since the dependencies are already handled there. +ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) include $(BUILD_SYSTEM)/config_sanitizers.mk ifneq ($(LOCAL_NO_LIBCOMPILER_RT),true) @@ -402,6 +407,7 @@ endif ifeq ($($(my_prefix)OS),windows) my_static_libraries += libwinpthread endif +endif # this module is not from soong ifneq ($(filter ../%,$(my_src_files)),) my_soong_problems += dotdot_srcs @@ -1264,23 +1270,29 @@ ifneq ($(LOCAL_USE_VNDK),) ## switch all soong libraries over to the /vendor ## variant. #################################################### - my_whole_static_libraries := $(foreach l,$(my_whole_static_libraries),\ - $(if $(SPLIT_VENDOR.STATIC_LIBRARIES.$(l)),$(l).vendor,$(l))) - my_static_libraries := $(foreach l,$(my_static_libraries),\ - $(if $(SPLIT_VENDOR.STATIC_LIBRARIES.$(l)),$(l).vendor,$(l))) - my_shared_libraries := $(foreach l,$(my_shared_libraries),\ - $(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) - my_system_shared_libraries := $(foreach l,$(my_system_shared_libraries),\ - $(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) - my_header_libraries := $(foreach l,$(my_header_libraries),\ - $(if $(SPLIT_VENDOR.HEADER_LIBRARIES.$(l)),$(l).vendor,$(l))) + ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) + # We don't do this renaming for soong-defined modules since they already have correct + # names (with .vendor suffix when necessary) in their LOCAL_*_LIBRARIES. + my_whole_static_libraries := $(foreach l,$(my_whole_static_libraries),\ + $(if $(SPLIT_VENDOR.STATIC_LIBRARIES.$(l)),$(l).vendor,$(l))) + my_static_libraries := $(foreach l,$(my_static_libraries),\ + $(if $(SPLIT_VENDOR.STATIC_LIBRARIES.$(l)),$(l).vendor,$(l))) + my_shared_libraries := $(foreach l,$(my_shared_libraries),\ + $(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) + my_system_shared_libraries := $(foreach l,$(my_system_shared_libraries),\ + $(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) + my_header_libraries := $(foreach l,$(my_header_libraries),\ + $(if $(SPLIT_VENDOR.HEADER_LIBRARIES.$(l)),$(l).vendor,$(l))) + endif endif # Platform can use vendor public libraries. If a required shared lib is one of # the vendor public libraries, the lib is switched to the stub version of the lib. ifeq ($(LOCAL_USE_VNDK),) - my_shared_libraries := $(foreach l,$(my_shared_libraries),\ - $(if $(filter $(l),$(VENDOR_PUBLIC_LIBRARIES)),$(l).vendorpublic,$(l))) + ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) + my_shared_libraries := $(foreach l,$(my_shared_libraries),\ + $(if $(filter $(l),$(VENDOR_PUBLIC_LIBRARIES)),$(l).vendorpublic,$(l))) + endif endif ########################################################## @@ -1601,23 +1613,26 @@ ifeq ($(my_strict),true) endif # Check if -Werror or -Wno-error is used in C compiler flags. -# Header libraries do not need cflags. -ifneq (HEADER_LIBRARIES,$(LOCAL_MODULE_CLASS)) - # Prebuilt modules do not need cflags. - ifeq (,$(LOCAL_PREBUILT_MODULE_FILE)) - my_all_cflags := $(my_cflags) $(my_cppflags) $(my_cflags_no_override) - # Issue warning if -Wno-error is used. - ifneq (,$(filter -Wno-error,$(my_all_cflags))) - $(eval MODULES_USING_WNO_ERROR := $(MODULES_USING_WNO_ERROR) $(LOCAL_MODULE_MAKEFILE):$(LOCAL_MODULE)) - else - # Issue warning if -Werror is not used. Add it. - ifeq (,$(filter -Werror,$(my_all_cflags))) - # Add -Wall -Werror unless the project is in the WARNING_ALLOWED project list. - ifeq (,$(strip $(call find_warning_allowed_projects,$(LOCAL_PATH)))) - my_cflags := -Wall -Werror $(my_cflags) - else - $(eval MODULES_ADDED_WALL := $(MODULES_ADDED_WALL) $(LOCAL_MODULE_MAKEFILE):$(LOCAL_MODULE)) - my_cflags := -Wall $(my_cflags) +# Modules defined in $(SOONG_ANDROID_MK) are checked in soong's cc.go. +ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) + # Header libraries do not need cflags. + ifneq (HEADER_LIBRARIES,$(LOCAL_MODULE_CLASS)) + # Prebuilt modules do not need cflags. + ifeq (,$(LOCAL_PREBUILT_MODULE_FILE)) + my_all_cflags := $(my_cflags) $(my_cppflags) $(my_cflags_no_override) + # Issue warning if -Wno-error is used. + ifneq (,$(filter -Wno-error,$(my_all_cflags))) + $(eval MODULES_USING_WNO_ERROR := $(MODULES_USING_WNO_ERROR) $(LOCAL_MODULE_MAKEFILE):$(LOCAL_MODULE)) + else + # Issue warning if -Werror is not used. Add it. + ifeq (,$(filter -Werror,$(my_all_cflags))) + # Add -Wall -Werror unless the project is in the WARNING_ALLOWED project list. + ifeq (,$(strip $(call find_warning_allowed_projects,$(LOCAL_PATH)))) + my_cflags := -Wall -Werror $(my_cflags) + else + $(eval MODULES_ADDED_WALL := $(MODULES_ADDED_WALL) $(LOCAL_MODULE_MAKEFILE):$(LOCAL_MODULE)) + my_cflags := -Wall $(my_cflags) + endif endif endif endif @@ -1749,6 +1764,12 @@ all_libraries := \ ########################################################### export_includes := $(intermediates)/export_includes export_cflags := $(foreach d,$(my_export_c_include_dirs),-I $(d)) +# Soong exports cflags instead of include dirs, so that -isystem can be included. +ifeq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) +export_cflags += $(LOCAL_EXPORT_CFLAGS) +else ifdef LOCAL_EXPORT_CFLAGS +$(call pretty-error,LOCAL_EXPORT_CFLAGS can only be used by Soong, use LOCAL_EXPORT_C_INCLUDE_DIRS instead) +endif $(export_includes): PRIVATE_EXPORT_CFLAGS := $(export_cflags) # Headers exported by whole static libraries are also exported by this library. export_include_deps := $(strip \ @@ -1793,6 +1814,7 @@ export_cflags := # Make sure export_includes gets generated when you are running mm/mmm $(LOCAL_BUILT_MODULE) : | $(export_includes) +ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) ifneq (,$(filter-out $(LOCAL_PATH)/%,$(my_export_c_include_dirs))) my_soong_problems += non_local__export_c_include_dirs endif @@ -1808,6 +1830,7 @@ SOONG_CONV.$(LOCAL_MODULE).DEPS := \ $(my_system_shared_libraries)) SOONG_CONV.$(LOCAL_MODULE).TYPE := native SOONG_CONV := $(SOONG_CONV) $(LOCAL_MODULE) +endif ########################################################### # Coverage packaging. diff --git a/core/clear_vars.mk b/core/clear_vars.mk index f738ab409b..07c7e51f73 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -3,7 +3,6 @@ ########################################################### # '',true -LOCAL_2ND_ARCH_VAR_PREFIX:= LOCAL_32_BIT_ONLY:= LOCAL_AAPT2_ONLY:= LOCAL_AAPT_FLAGS:= @@ -67,16 +66,13 @@ LOCAL_DONT_DELETE_JAR_META_INF:= LOCAL_DONT_MERGE_MANIFESTS:= LOCAL_DPI_FILE_STEM:= LOCAL_DPI_VARIANTS:= -LOCAL_DROIDDOC_ANNOTATIONS_ZIP := LOCAL_DROIDDOC_ASSET_DIR:= LOCAL_DROIDDOC_CUSTOM_ASSET_DIR:= LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:= -LOCAL_DROIDDOC_DOC_ZIP := LOCAL_DROIDDOC_HTML_DIR:= LOCAL_DROIDDOC_OPTIONS:= LOCAL_DROIDDOC_SOURCE_PATH:= LOCAL_DROIDDOC_STUB_OUT_DIR:= -LOCAL_DROIDDOC_STUBS_SRCJAR := LOCAL_DROIDDOC_TEMPLATE_DIR:= LOCAL_DROIDDOC_USE_STANDARD_DOCLET:= LOCAL_DX_FLAGS:= @@ -111,7 +107,6 @@ LOCAL_GROUP_STATIC_LIBRARIES:= LOCAL_GTEST:=true LOCAL_HAL_STATIC_LIBRARIES:= LOCAL_HEADER_LIBRARIES:= -LOCAL_HOST_PREFIX:= LOCAL_HOST_REQUIRED_MODULES:= LOCAL_INIT_RC:= LOCAL_INSTALLED_MODULE:= @@ -257,13 +252,13 @@ LOCAL_SOONG_DEX_JAR := LOCAL_SOONG_EXPORT_PROGUARD_FLAGS := LOCAL_SOONG_HEADER_JAR := LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR := -LOCAL_SOONG_LINK_TYPE := LOCAL_SOONG_PROGUARD_DICT := LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE := LOCAL_SOONG_RRO_DIRS := LOCAL_SOONG_STATIC_LIBRARY_EXTRA_PACKAGES := -LOCAL_SOONG_TOC := -LOCAL_SOONG_UNSTRIPPED_BINARY := +LOCAL_DROIDDOC_STUBS_SRCJAR := +LOCAL_DROIDDOC_DOC_ZIP := +LOCAL_DROIDDOC_ANNOTATIONS_ZIP := # '',true LOCAL_SOURCE_FILES_ALL_GENERATED:= LOCAL_SRC_FILES:= diff --git a/core/header_library_internal.mk b/core/header_library_internal.mk index 35ee1bc032..3e4958fb41 100644 --- a/core/header_library_internal.mk +++ b/core/header_library_internal.mk @@ -11,6 +11,16 @@ ifneq ($(strip $(LOCAL_MODULE_STEM)$(LOCAL_BUILT_MODULE_STEM)),) $(error $(LOCAL_PATH): Cannot set module stem for a library) endif +ifeq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) + ifdef LOCAL_USE_VNDK + name_without_suffix := $(patsubst %.vendor,%,$(LOCAL_MODULE)) + ifneq ($(name_without_suffix),$(LOCAL_MODULE)) + SPLIT_VENDOR.$(LOCAL_MODULE_CLASS).$(name_without_suffix) := 1 + endif + name_without_suffix := + endif +endif + include $(BUILD_SYSTEM)/binary.mk ifneq ($(strip $(all_objects)),) diff --git a/core/prebuilt_internal.mk b/core/prebuilt_internal.mk index 256c598466..78da421bd5 100644 --- a/core/prebuilt_internal.mk +++ b/core/prebuilt_internal.mk @@ -68,6 +68,20 @@ else prebuilt_module_is_a_library := endif +ifeq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) + ifeq ($(prebuilt_module_is_a_library),true) + SOONG_ALREADY_CONV := $(SOONG_ALREADY_CONV) $(LOCAL_MODULE) + endif + + ifdef LOCAL_USE_VNDK + name_without_suffix := $(patsubst %.vendor,%,$(LOCAL_MODULE)) + ifneq ($(name_without_suffix),$(LOCAL_MODULE) + SPLIT_VENDOR.$(LOCAL_MODULE_CLASS).$(name_without_suffix) := 1 + endif + name_without_suffix := + endif +endif + # Don't install static libraries by default. ifndef LOCAL_UNINSTALLABLE_MODULE ifeq (STATIC_LIBRARIES,$(LOCAL_MODULE_CLASS)) @@ -142,6 +156,12 @@ else # my_strip_module not true ifdef prebuilt_module_is_a_library export_includes := $(intermediates)/export_includes export_cflags := $(foreach d,$(LOCAL_EXPORT_C_INCLUDE_DIRS),-I $(d)) +# Soong exports cflags instead of include dirs, so that -isystem can be included. +ifeq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) +export_cflags += $(LOCAL_EXPORT_CFLAGS) +else ifdef LOCAL_EXPORT_CFLAGS +$(call pretty-error,LOCAL_EXPORT_CFLAGS can only be used by Soong, use LOCAL_EXPORT_C_INCLUDE_DIRS instead) +endif $(export_includes): PRIVATE_EXPORT_CFLAGS := $(export_cflags) $(export_includes): $(LOCAL_EXPORT_C_INCLUDE_DEPS) @echo Export includes file: $< -- $@ @@ -190,8 +210,10 @@ my_shared_libraries := $(LOCAL_SHARED_LIBRARIES) # Extra shared libraries introduced by LOCAL_CXX_STL. include $(BUILD_SYSTEM)/cxx_stl_setup.mk ifdef LOCAL_USE_VNDK - my_shared_libraries := $(foreach l,$(my_shared_libraries),\ - $(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) + ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) + my_shared_libraries := $(foreach l,$(my_shared_libraries),\ + $(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) + endif endif $(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += \ $(my_register_name):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(my_shared_libraries)) diff --git a/core/soong_cc_prebuilt.mk b/core/soong_cc_prebuilt.mk deleted file mode 100644 index 3e0048fe8c..0000000000 --- a/core/soong_cc_prebuilt.mk +++ /dev/null @@ -1,207 +0,0 @@ -# Native prebuilt coming from Soong. -# Extra inputs: -# LOCAL_SOONG_LINK_TYPE -# LOCAL_SOONG_TOC -# LOCAL_SOONG_UNSTRIPPED_BINARY - -ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) - $(call pretty-error,soong_cc_prebuilt.mk may only be used from Soong) -endif - -skip_module := -ifdef LOCAL_IS_HOST_MODULE - ifneq ($(HOST_OS),$(LOCAL_MODULE_HOST_OS)) - my_prefix := HOST_CROSS_ - LOCAL_HOST_PREFIX := $(my_prefix) - else - my_prefix := HOST_ - LOCAL_HOST_PREFIX := - endif -else - my_prefix := TARGET_ -endif - -ifeq ($($(my_prefix)ARCH),$(LOCAL_MODULE_$(my_prefix)ARCH)) - # primary arch - LOCAL_2ND_ARCH_VAR_PREFIX := -else ifeq ($($(my_prefix)2ND_ARCH),$(LOCAL_MODULE_$(my_prefix)ARCH)) - # secondary arch - LOCAL_2ND_ARCH_VAR_PREFIX := $($(my_prefix)2ND_ARCH_VAR_PREFIX) -else - $(call pretty-error,Unsupported LOCAL_MODULE_$(my_prefix)ARCH=$(LOCAL_MODULE_$(my_prefix)ARCH)) -endif - -ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) - ifndef LOCAL_IS_HOST_MODULE - ifdef LOCAL_2ND_ARCH_VAR_PREFIX - # Only support shared and static libraries and tests for translated arch - ifeq ($(filter SHARED_LIBRARIES STATIC_LIBRARIES HEADER_LIBRARIES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),) - skip_module := true - endif - endif - endif -endif - -ifndef skip_module - -# Don't install static libraries by default. -ifndef LOCAL_UNINSTALLABLE_MODULE - ifeq (STATIC_LIBRARIES,$(LOCAL_MODULE_CLASS)) - LOCAL_UNINSTALLABLE_MODULE := true - endif -endif - -ifeq (SHARED_LIBRARIES,$(LOCAL_MODULE_CLASS)) - # LOCAL_COPY_TO_INTERMEDIATE_LIBRARIES indicates that this prebuilt should be - # installed to the common directory of libraries. This is needed for the NDK - # shared libraries built by soong, as we build many different versions of each - # library (one for each API level). Since they all have the same basename, - # they'd clobber each other (as well as any platform libraries by the same - # name). - ifneq ($(LOCAL_COPY_TO_INTERMEDIATE_LIBRARIES),false) - # Put the built targets of all shared libraries in a common directory - # to simplify the link line. - OVERRIDE_BUILT_MODULE_PATH := \ - $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES) - endif -endif - -####################################### -include $(BUILD_SYSTEM)/base_rules.mk -####################################### - -ifneq ($(filter STATIC_LIBRARIES SHARED_LIBRARIES HEADER_LIBRARIES,$(LOCAL_MODULE_CLASS)),) - # Soong module is a static or shared library - export_includes := $(intermediates)/export_includes - $(export_includes): PRIVATE_EXPORT_CFLAGS := $(LOCAL_EXPORT_CFLAGS) - $(export_includes): $(LOCAL_EXPORT_C_INCLUDE_DEPS) - @echo Export includes file: $< -- $@ - $(hide) mkdir -p $(dir $@) && rm -f $@ - ifdef LOCAL_EXPORT_CFLAGS - $(hide) echo "$(PRIVATE_EXPORT_CFLAGS)" >$@ - else - $(hide) touch $@ - endif - - ifdef LOCAL_SOONG_TOC - $(eval $(call copy-one-file,$(LOCAL_SOONG_TOC),$(LOCAL_BUILT_MODULE).toc)) - $(call add-dependency,$(LOCAL_BUILT_MODULE).toc,$(LOCAL_BUILT_MODULE)) - $(my_all_targets): $(LOCAL_BUILT_MODULE).toc - - ifdef OVERRIDE_BUILT_MODULE_PATH - $(eval $(call copy-one-file,$(LOCAL_BUILT_MODULE).toc,$(OVERRIDE_BUILT_MODULE_PATH)/$(my_built_module_stem).toc)) - $(call add-dependency,$(OVERRIDE_BUILT_MODULE_PATH)/$(my_built_module_stem).toc,$(OVERRIDE_BUILT_MODULE_PATH)/$(my_built_module_stem)) - $(my_all_targets): $(OVERRIDE_BUILT_MODULE_PATH)/$(my_built_module_stem).toc - endif - endif - - SOONG_ALREADY_CONV := $(SOONG_ALREADY_CONV) $(LOCAL_MODULE) - - my_link_type := $(LOCAL_SOONG_LINK_TYPE) - my_warn_types := - my_allowed_types := - my_link_deps := - my_2nd_arch_prefix := $(LOCAL_2ND_ARCH_VAR_PREFIX) - my_common := - include $(BUILD_SYSTEM)/link_type.mk -endif - -ifdef LOCAL_USE_VNDK - name_without_suffix := $(patsubst %.vendor,%,$(LOCAL_MODULE)) - ifneq ($(name_without_suffix),$(LOCAL_MODULE) - SPLIT_VENDOR.$(LOCAL_MODULE_CLASS).$(name_without_suffix) := 1 - endif - name_without_suffix := -endif - -# The real dependency will be added after all Android.mks are loaded and the install paths -# of the shared libraries are determined. -ifdef LOCAL_INSTALLED_MODULE - ifdef LOCAL_SHARED_LIBRARIES - my_shared_libraries := $(LOCAL_SHARED_LIBRARIES) - ifdef LOCAL_USE_VNDK - my_shared_libraries := $(foreach l,$(my_shared_libraries),\ - $(if $(SPLIT_VENDOR.SHARED_LIBRARIES.$(l)),$(l).vendor,$(l))) - endif - $(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += \ - $(my_register_name):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(my_shared_libraries)) - - # We also need the LOCAL_BUILT_MODULE dependency, - # since we use -rpath-link which points to the built module's path. - my_built_shared_libraries := \ - $(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \ - $(addsuffix $($(my_prefix)SHLIB_SUFFIX), \ - $(my_shared_libraries))) - $(LOCAL_BUILT_MODULE) : $(my_built_shared_libraries) - endif -endif - -$(LOCAL_BUILT_MODULE): $(LOCAL_PREBUILT_MODULE_FILE) - $(transform-prebuilt-to-target) -ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),) - $(hide) chmod +x $@ -endif - -ifdef LOCAL_SOONG_UNSTRIPPED_BINARY - # Store a copy with symbols for symbolic debugging - my_unstripped_path := $(TARGET_OUT_UNSTRIPPED)/$(patsubst $(PRODUCT_OUT)/%,%,$(my_module_path)) - symbolic_output := $(my_unstripped_path)/$(my_installed_module_stem) - $(eval $(call copy-one-file,$(LOCAL_SOONG_UNSTRIPPED_BINARY),$(symbolic_output))) - $(call add-dependency,$(LOCAL_BUILT_MODULE),$(symbolic_output)) - - ifeq ($(BREAKPAD_GENERATE_SYMBOLS),true) - my_breakpad_path := $(TARGET_OUT_BREAKPAD)/$(patsubst $(PRODUCT_OUT)/%,%,$(my_module_path)) - breakpad_output := $(my_breakpad_path)/$(my_installed_module_stem).sym - $(breakpad_output) : $(LOCAL_SOONG_UNSTRIPPED_BINARY) | $(BREAKPAD_DUMP_SYMS) $(PRIVATE_READELF) - @echo "target breakpad: $(PRIVATE_MODULE) ($@)" - @mkdir -p $(dir $@) - $(hide) if $(PRIVATE_READELF) -S $< > /dev/null 2>&1 ; then \ - $(BREAKPAD_DUMP_SYMS) -c $< > $@ ; \ - else \ - echo "skipped for non-elf file."; \ - touch $@; \ - fi - $(call add-dependency,$(LOCAL_BUILT_MODULE),$(breakpad_output)) -endif -endif - -ifeq ($(NATIVE_COVERAGE),true) - ifneq (,$(strip $(LOCAL_PREBUILT_COVERAGE_ARCHIVE))) - $(eval $(call copy-one-file,$(LOCAL_PREBUILT_COVERAGE_ARCHIVE),$(intermediates)/$(LOCAL_MODULE).gcnodir)) - ifneq ($(LOCAL_UNINSTALLABLE_MODULE),true) - ifdef LOCAL_IS_HOST_MODULE - my_coverage_path := $($(my_prefix)OUT_COVERAGE)/$(patsubst $($(my_prefix)OUT)/%,%,$(my_module_path)) - else - my_coverage_path := $(TARGET_OUT_COVERAGE)/$(patsubst $(PRODUCT_OUT)/%,%,$(my_module_path)) - endif - my_coverage_path := $(my_coverage_path)/$(patsubst %.so,%,$(my_installed_module_stem)).gcnodir - $(eval $(call copy-one-file,$(LOCAL_PREBUILT_COVERAGE_ARCHIVE),$(my_coverage_path))) - $(LOCAL_BUILT_MODULE): $(my_coverage_path) - endif - else - # Coverage information is needed when static lib is a dependency of another - # coverage-enabled module. - ifeq (STATIC_LIBRARIES, $(LOCAL_MODULE_CLASS)) - GCNO_ARCHIVE := $(LOCAL_MODULE).gcnodir - $(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_ALL_OBJECTS := - $(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_ALL_WHOLE_STATIC_LIBRARIES := - $(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_PREFIX := $(my_prefix) - $(intermediates)/$(GCNO_ARCHIVE) : PRIVATE_2ND_ARCH_VAR_PREFIX := $(LOCAL_2ND_ARCH_VAR_PREFIX) - $(intermediates)/$(GCNO_ARCHIVE) : - $(transform-o-to-static-lib) - endif - endif -endif - -# A product may be configured to strip everything in some build variants. -# We do the stripping as a post-install command so that LOCAL_BUILT_MODULE -# is still with the symbols and we don't need to clean it (and relink) when -# you switch build variant. -ifneq ($(filter $(STRIP_EVERYTHING_BUILD_VARIANTS),$(TARGET_BUILD_VARIANT)),) -$(LOCAL_INSTALLED_MODULE): PRIVATE_POST_INSTALL_CMD := \ - $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_STRIP) --strip-all $(LOCAL_INSTALLED_MODULE) -endif - -endif # !skip_module - -skip_module :=