diff options
| -rw-r--r-- | build/apex/Android.bp | 42 | ||||
| -rwxr-xr-x | build/apex/art_apex_test.py | 42 | ||||
| -rw-r--r-- | dex2oat/Android.bp | 42 |
3 files changed, 79 insertions, 47 deletions
diff --git a/build/apex/Android.bp b/build/apex/Android.bp index 738a8700cb..22510ef5df 100644 --- a/build/apex/Android.bp +++ b/build/apex/Android.bp @@ -8,9 +8,12 @@ art_runtime_base_binaries_both = [ "dalvikvm", ] -// - Base requirements (binaries for which a 32-bit version is preferred). -art_runtime_base_binaries_prefer32 = [ +art_runtime_base_binaries_both_on_device_first_on_host = [ "dex2oat", +] +// - Base requirements (binaries for which a 32-bit version is preferred on device, but for which +// only the "first" (likely 64-bit) version is required on host). +art_runtime_base_binaries_prefer32_on_device_first_on_host = [ "dexoptanalyzer", "profman", ] @@ -61,16 +64,13 @@ bionic_binaries_both = [ "linker", ] -// - Debug variants (binaries for which a 32-bit version is preferred). -art_runtime_debug_binaries_prefer32 = [ +// - Debug variants (binaries for which a 32-bit version is preferred on device, but for which +// only the "first" (likely 64-bit) version is required on host). +art_runtime_debug_binaries_prefer32_on_device_first_on_host = [ "dexoptanalyzerd", "profmand", ] -art_runtime_debug_binaries_prefer32_device = [ - "dex2oatd", -] - -art_runtime_debug_binaries_both_host = [ +art_runtime_debug_binaries_both_on_device_first_on_host = [ "dex2oatd", ] @@ -218,10 +218,11 @@ apex_defaults { libcore_native_shared_libs, multilib: { both: { - binaries: art_runtime_base_binaries_both, + binaries: art_runtime_base_binaries_both + + art_runtime_base_binaries_both_on_device_first_on_host, }, prefer32: { - binaries: art_runtime_base_binaries_prefer32, + binaries: art_runtime_base_binaries_prefer32_on_device_first_on_host, }, first: { binaries: art_tools_common_binaries + @@ -246,11 +247,11 @@ apex_defaults { libcore_debug_native_shared_libs, multilib: { both: { - binaries: art_tools_debug_binaries_both, + binaries: art_tools_debug_binaries_both + + art_runtime_debug_binaries_both_on_device_first_on_host, }, prefer32: { - binaries: art_runtime_debug_binaries_prefer32 + - art_runtime_debug_binaries_prefer32_device, + binaries: art_runtime_debug_binaries_prefer32_on_device_first_on_host, }, first: { binaries: art_tools_debug_binaries + @@ -336,15 +337,16 @@ art_apex_test_host { multilib: { both: { binaries: art_runtime_base_binaries_both + - art_runtime_debug_binaries_both_host + art_tools_debug_binaries_both, }, first: { - binaries: art_tools_common_binaries + // Host APEX is always debug. - art_tools_debug_binaries + - art_tools_host_only_binaries + - art_runtime_base_binaries_prefer32 + - art_runtime_debug_binaries_prefer32, + binaries: art_runtime_base_binaries_prefer32_on_device_first_on_host + + art_runtime_base_binaries_both_on_device_first_on_host + + art_runtime_debug_binaries_prefer32_on_device_first_on_host + + art_runtime_debug_binaries_both_on_device_first_on_host + + art_tools_common_binaries + + art_tools_debug_binaries + // Host APEX is always debug. + art_tools_host_only_binaries, }, }, key: "com.android.art.key", diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py index bf0f543cb1..6bccdf5926 100755 --- a/build/apex/art_apex_test.py +++ b/build/apex/art_apex_test.py @@ -389,10 +389,18 @@ class Checker: """Check bin/filename32, and/or bin/filename64, with symlink bin/filename.""" raise NotImplementedError + def check_symlinked_first_executable(self, filename): + """Check bin/filename32, and/or bin/filename64, with symlink bin/filename.""" + raise NotImplementedError + def check_multilib_executable(self, filename): """Check bin/filename for 32 bit, and/or bin/filename64.""" raise NotImplementedError + def check_first_executable(self, filename): + """Check bin/filename for 32 bit, and/or bin/filename64.""" + raise NotImplementedError + def check_native_library(self, basename): """Check lib/basename.so, and/or lib64/basename.so.""" raise NotImplementedError @@ -411,8 +419,15 @@ class Arch32Checker(Checker): self.check_executable('%s32' % filename) self.check_executable_symlink(filename) + def check_symlinked_first_executable(self, filename): + self.check_executable('%s32' % filename) + self.check_executable_symlink(filename) + def check_multilib_executable(self, filename): - self.check_executable(filename) + self.check_executable('%s32' % filename) + + def check_first_executable(self, filename): + self.check_executable('%s32' % filename) def check_native_library(self, basename): # TODO: Use $TARGET_ARCH (e.g. check whether it is "arm" or "arm64") to improve @@ -431,9 +446,16 @@ class Arch64Checker(Checker): self.check_executable('%s64' % filename) self.check_executable_symlink(filename) + def check_symlinked_first_executable(self, filename): + self.check_executable('%s64' % filename) + self.check_executable_symlink(filename) + def check_multilib_executable(self, filename): self.check_executable('%s64' % filename) + def check_first_executable(self, filename): + self.check_executable('%s64' % filename) + def check_native_library(self, basename): # TODO: Use $TARGET_ARCH (e.g. check whether it is "arm" or "arm64") to improve # the precision of this test? @@ -452,9 +474,16 @@ class MultilibChecker(Checker): self.check_executable('%s64' % filename) self.check_executable_symlink(filename) + def check_symlinked_first_executable(self, filename): + self.check_executable('%s64' % filename) + self.check_executable_symlink(filename) + def check_multilib_executable(self, filename): self.check_executable('%s64' % filename) - self.check_executable(filename) + self.check_executable('%s32' % filename) + + def check_first_executable(self, filename): + self.check_executable('%s64' % filename) def check_native_library(self, basename): # TODO: Use $TARGET_ARCH (e.g. check whether it is "arm" or "arm64") to improve @@ -482,7 +511,7 @@ class ReleaseChecker: self._checker.check_file('apex_manifest.pb') # Check binaries for ART. - self._checker.check_executable('dex2oat') + self._checker.check_first_executable('dex2oat') self._checker.check_executable('dexdump') self._checker.check_executable('dexlist') self._checker.check_executable('dexoptanalyzer') @@ -579,6 +608,7 @@ class ReleaseTargetChecker: # Check binaries for ART. self._checker.check_executable('oatdump') + self._checker.check_multilib_executable('dex2oat') # Check internal libraries for ART. self._checker.check_prefer64_library('libart-disassembler') @@ -614,7 +644,8 @@ class ReleaseHostChecker: def run(self): # Check binaries for ART. self._checker.check_executable('hprof-conv') - self._checker.check_symlinked_multilib_executable('dex2oatd') + self._checker.check_symlinked_first_executable('dex2oatd') + self._checker.check_symlinked_first_executable('dex2oat') # Check exported native libraries for Managed Core Library. self._checker.check_native_library('libandroidicu-host') @@ -674,7 +705,8 @@ class DebugTargetChecker: def run(self): # Check ART debug binaries. - self._checker.check_executable('dex2oatd') + self._checker.check_multilib_executable('dex2oatd') + self._checker.check_multilib_executable('dex2oat') self._checker.check_executable('oatdumpd') # Check ART internal libraries. diff --git a/dex2oat/Android.bp b/dex2oat/Android.bp index 60d12c8fcb..fb76dd99d0 100644 --- a/dex2oat/Android.bp +++ b/dex2oat/Android.bp @@ -187,8 +187,7 @@ cc_defaults { target: { android: { - // Use the 32-bit version of dex2oat on devices. - compile_multilib: "prefer32", + compile_multilib: "both", }, }, header_libs: [ @@ -256,6 +255,15 @@ art_cc_binary { "libart-dex2oat", ], + multilib: { + lib32: { + suffix: "32", + }, + lib64: { + suffix: "64", + }, + }, + pgo: { // Additional cflags just for dex2oat during PGO instrumentation cflags: [ @@ -284,18 +292,9 @@ art_cc_binary { // account. Note that this override cannot be in cc_default because // it'd get overridden by the load hook even when it uses // PrependProperties. - compile_multilib: "both", + compile_multilib: "64", symlink_preferred_arch: true, }, - linux_glibc_x86: { - suffix: "32", - }, - linux_glibc_x86_64: { - suffix: "64", - }, - linux_bionic_x86_64: { - suffix: "64", - }, }, apex_available: [ "com.android.art.release", @@ -332,7 +331,6 @@ art_cc_binary { static_libs: [ "libz", ], - compile_multilib: "prefer32", }, host: { shared_libs: [ @@ -345,22 +343,22 @@ art_cc_binary { // account. Note that this override cannot be in cc_default because // it'd get overridden by the load hook even when it uses // PrependProperties. - compile_multilib: "both", + compile_multilib: "64", symlink_preferred_arch: true, }, - linux_glibc_x86: { + }, + apex_available: [ + "com.android.art.debug", + ], + + multilib: { + lib32: { suffix: "32", }, - linux_glibc_x86_64: { - suffix: "64", - }, - linux_bionic_x86_64: { + lib64: { suffix: "64", }, }, - apex_available: [ - "com.android.art.debug", - ], } cc_defaults { |