forked from openkylin/platform_build
Disable .toc optimization for host modules.
Host binaries may be run during the build process and the internal implementation of the shared libraries makes a difference for the build result. This change makes sure host tools get re-linked and re-run when any of its dependency libraries gets updated. DEX2OAT is such a host tool. We also changed DEX2OAT as full dependency of dex-preoptimization, so we rebuild the odex files if DEX2OAT itself, or any dependency libraries changed. Bug: 24597504 Change-Id: Idf0d9be82ccebd826d9c5b405a39cff437e0af29
This commit is contained in:
parent
542aa57f1d
commit
c01f2dcb10
|
@ -227,6 +227,9 @@ LOCAL_INTERMEDIATE_TARGETS += $(LOCAL_BUILT_MODULE)
|
|||
# dependent binaries of a .toc file will be rebuilt only when the content of
|
||||
# the .toc file is changed.
|
||||
###########################################################
|
||||
ifndef LOCAL_IS_HOST_MODULE
|
||||
# Disable .toc optimization for host modules: we may run the host binaries during the build process
|
||||
# and the libraries' implementation matters.
|
||||
ifeq ($(LOCAL_MODULE_CLASS),SHARED_LIBRARIES)
|
||||
LOCAL_INTERMEDIATE_TARGETS += $(LOCAL_BUILT_MODULE).toc
|
||||
$(LOCAL_BUILT_MODULE).toc: $(LOCAL_BUILT_MODULE)
|
||||
|
@ -236,6 +239,7 @@ $(LOCAL_BUILT_MODULE).toc: $(LOCAL_BUILT_MODULE)
|
|||
# Kati adds restat=1 to ninja. GNU make does nothing for this.
|
||||
.KATI_RESTAT: $(LOCAL_BUILT_MODULE).toc
|
||||
endif
|
||||
endif
|
||||
|
||||
###########################################################
|
||||
## logtags: Add .logtags files to global list
|
||||
|
|
|
@ -1202,7 +1202,7 @@ built_shared_libraries := \
|
|||
$(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \
|
||||
$(addsuffix $(so_suffix), \
|
||||
$(my_shared_libraries)))
|
||||
built_shared_library_tocs := $(addsuffix .toc, $(built_shared_libraries))
|
||||
built_shared_library_deps := $(addsuffix .toc, $(built_shared_libraries))
|
||||
|
||||
# Add the NDK libraries to the built module dependency
|
||||
my_system_shared_libraries_fullpath := \
|
||||
|
@ -1216,7 +1216,13 @@ built_shared_libraries := \
|
|||
$(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \
|
||||
$(addsuffix $(so_suffix), \
|
||||
$(installed_shared_library_module_names)))
|
||||
built_shared_library_tocs := $(addsuffix .toc, $(built_shared_libraries))
|
||||
ifdef LOCAL_IS_HOST_MODULE
|
||||
# Disable .toc optimization for host modules: we may run the host binaries during the build process
|
||||
# and the libraries' implementation matters.
|
||||
built_shared_library_deps := $(built_shared_libraries)
|
||||
else
|
||||
built_shared_library_deps := $(addsuffix .toc, $(built_shared_libraries))
|
||||
endif
|
||||
my_system_shared_libraries_fullpath :=
|
||||
endif
|
||||
|
||||
|
@ -1312,7 +1318,7 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ALL_OBJECTS := $(all_objects)
|
|||
###########################################################
|
||||
# all_libraries is used for the dependencies on LOCAL_BUILT_MODULE.
|
||||
all_libraries := \
|
||||
$(built_shared_library_tocs) \
|
||||
$(built_shared_library_deps) \
|
||||
$(my_system_shared_libraries_fullpath) \
|
||||
$(built_static_libraries) \
|
||||
$(built_whole_libraries)
|
||||
|
|
|
@ -11,11 +11,6 @@ else
|
|||
DEX2OAT := $(HOST_OUT_EXECUTABLES)/dex2oatd$(HOST_EXECUTABLE_SUFFIX)
|
||||
endif
|
||||
|
||||
# By default, do not run rerun dex2oat if the tool changes.
|
||||
# Comment out the | to force dex2oat to rerun on after all changes.
|
||||
DEX2OAT_DEPENDENCY := art/runtime/oat.cc # dependency on oat version number
|
||||
DEX2OAT_DEPENDENCY += art/runtime/image.cc # dependency on image version number
|
||||
DEX2OAT_DEPENDENCY += |
|
||||
DEX2OAT_DEPENDENCY += $(DEX2OAT)
|
||||
|
||||
# Use the first preloaded-classes file in PRODUCT_COPY_FILES.
|
||||
|
|
Loading…
Reference in New Issue