From 04147efc0621ce09fb4548cc482d42da2ff4e088 Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Tue, 6 Sep 2016 11:09:41 +0100 Subject: Add build rules for statically linked oatdump on host. Also extend oatdump_test to exercise oatdump(d)s. Test: ART_BUILD_HOST_STATIC=true m test-art-host-gtest-oatdump_test Bug: 29530992 Change-Id: I6eb6c96f385832733d18d0400abd9974a6d8e45c --- disassembler/Android.mk | 89 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 69 insertions(+), 20 deletions(-) (limited to 'disassembler') diff --git a/disassembler/Android.mk b/disassembler/Android.mk index db327fcdb6..630f3e4656 100644 --- a/disassembler/Android.mk +++ b/disassembler/Android.mk @@ -27,6 +27,7 @@ LIBART_DISASSEMBLER_SRC_FILES := \ # $(1): target or host # $(2): ndebug or debug +# $(3): static or shared (static is only valid for host) define build-libart-disassembler ifneq ($(1),target) ifneq ($(1),host) @@ -38,9 +39,19 @@ define build-libart-disassembler $$(error expected ndebug or debug for argument 2, received $(2)) endif endif + ifeq ($(3),static) + ifneq ($(1),host) + $$(error received static for argument 3, but argument 1 is not host) + endif + else + ifneq ($(3),shared) + $$(error expected static or shared for argument 3, received $(3)) + endif + endif art_target_or_host := $(1) art_ndebug_or_debug := $(2) + art_static_or_shared := $(3) include $(CLEAR_VARS) ifeq ($$(art_target_or_host),host) @@ -54,7 +65,11 @@ define build-libart-disassembler endif LOCAL_MODULE_TAGS := optional - LOCAL_MODULE_CLASS := SHARED_LIBRARIES + ifeq ($$(art_static_or_shared),static) + LOCAL_MODULE_CLASS := STATIC_LIBRARIES + else # shared + LOCAL_MODULE_CLASS := SHARED_LIBRARIES + endif LOCAL_SRC_FILES := $$(LIBART_DISASSEMBLER_SRC_FILES) @@ -74,11 +89,20 @@ define build-libart-disassembler endif endif - LOCAL_SHARED_LIBRARIES += liblog - ifeq ($$(art_ndebug_or_debug),debug) - LOCAL_SHARED_LIBRARIES += libartd - else - LOCAL_SHARED_LIBRARIES += libart + ifeq ($$(art_static_or_shared),static) + LOCAL_STATIC_LIBRARIES += liblog + ifeq ($$(art_ndebug_or_debug),debug) + LOCAL_STATIC_LIBRARIES += libartd + else + LOCAL_STATIC_LIBRARIES += libart + endif + else # shared + LOCAL_SHARED_LIBRARIES += liblog + ifeq ($$(art_ndebug_or_debug),debug) + LOCAL_SHARED_LIBRARIES += libartd + else + LOCAL_SHARED_LIBRARIES += libart + endif endif LOCAL_C_INCLUDES += $(ART_C_INCLUDES) art/runtime @@ -89,28 +113,53 @@ define build-libart-disassembler LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) # For disassembler_arm64. - ifeq ($$(art_ndebug_or_debug),debug) - LOCAL_SHARED_LIBRARIES += libvixld-arm64 - else - LOCAL_SHARED_LIBRARIES += libvixl-arm64 - endif - ifeq ($$(art_target_or_host),target) - include $(BUILD_SHARED_LIBRARY) - else # host - include $(BUILD_HOST_SHARED_LIBRARY) + ifeq ($$(art_static_or_shared),static) + ifeq ($$(art_ndebug_or_debug),debug) + LOCAL_STATIC_LIBRARIES += libvixld-arm64 + else + LOCAL_STATIC_LIBRARIES += libvixl-arm64 + endif + ifeq ($$(art_target_or_host),target) + $$(error libart-disassembler static builds for target are not supported) + else # host + include $(BUILD_HOST_STATIC_LIBRARY) + endif + else # shared + ifeq ($$(art_ndebug_or_debug),debug) + LOCAL_SHARED_LIBRARIES += libvixld-arm64 + else + LOCAL_SHARED_LIBRARIES += libvixl-arm64 + endif + ifeq ($$(art_target_or_host),target) + include $(BUILD_SHARED_LIBRARY) + else # host + include $(BUILD_HOST_SHARED_LIBRARY) + endif endif + + # Clear out local variables now that we're done with them. + art_target_or_host := + art_ndebug_or_debug := + art_static_or_shared := endef ifeq ($(ART_BUILD_TARGET_NDEBUG),true) - $(eval $(call build-libart-disassembler,target,ndebug)) + $(eval $(call build-libart-disassembler,target,ndebug,shared)) endif ifeq ($(ART_BUILD_TARGET_DEBUG),true) - $(eval $(call build-libart-disassembler,target,debug)) + $(eval $(call build-libart-disassembler,target,debug,shared)) endif -# We always build dex2oat and dependencies, even if the host build is otherwise disabled, since they are used to cross compile for the target. +# We always build dex2oat and dependencies, even if the host build is +# otherwise disabled, since they are used to cross compile for the target. ifeq ($(ART_BUILD_HOST_NDEBUG),true) - $(eval $(call build-libart-disassembler,host,ndebug)) + $(eval $(call build-libart-disassembler,host,ndebug,shared)) + ifeq ($(ART_BUILD_HOST_STATIC),true) + $(eval $(call build-libart-disassembler,host,ndebug,static)) + endif endif ifeq ($(ART_BUILD_HOST_DEBUG),true) - $(eval $(call build-libart-disassembler,host,debug)) + $(eval $(call build-libart-disassembler,host,debug,shared)) + ifeq ($(ART_BUILD_HOST_STATIC),true) + $(eval $(call build-libart-disassembler,host,debug,static)) + endif endif -- cgit v1.2.3-59-g8ed1b