1# 2# Copyright (C) 2012 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17LOCAL_PATH := $(call my-dir) 18 19include art/build/Android.common_build.mk 20 21LIBART_DISASSEMBLER_SRC_FILES := \ 22 disassembler.cc \ 23 disassembler_arm.cc \ 24 disassembler_arm64.cc \ 25 disassembler_mips.cc \ 26 disassembler_x86.cc 27 28# $(1): target or host 29# $(2): ndebug or debug 30define build-libart-disassembler 31 ifneq ($(1),target) 32 ifneq ($(1),host) 33 $$(error expected target or host for argument 1, received $(1)) 34 endif 35 endif 36 ifneq ($(2),ndebug) 37 ifneq ($(2),debug) 38 $$(error expected ndebug or debug for argument 2, received $(2)) 39 endif 40 endif 41 42 art_target_or_host := $(1) 43 art_ndebug_or_debug := $(2) 44 45 include $(CLEAR_VARS) 46 ifeq ($$(art_target_or_host),host) 47 LOCAL_IS_HOST_MODULE := true 48 endif 49 LOCAL_CPP_EXTENSION := $(ART_CPP_EXTENSION) 50 ifeq ($$(art_ndebug_or_debug),ndebug) 51 LOCAL_MODULE := libart-disassembler 52 else # debug 53 LOCAL_MODULE := libartd-disassembler 54 endif 55 56 LOCAL_MODULE_TAGS := optional 57 LOCAL_MODULE_CLASS := SHARED_LIBRARIES 58 59 LOCAL_SRC_FILES := $$(LIBART_DISASSEMBLER_SRC_FILES) 60 61 ifeq ($$(art_target_or_host),target) 62 $(call set-target-local-clang-vars) 63 $(call set-target-local-cflags-vars,$(2)) 64 else # host 65 LOCAL_CLANG := $(ART_HOST_CLANG) 66 LOCAL_LDLIBS := $(ART_HOST_LDLIBS) 67 LOCAL_CFLAGS += $(ART_HOST_CFLAGS) 68 LOCAL_ASFLAGS += $(ART_HOST_ASFLAGS) 69 ifeq ($$(art_ndebug_or_debug),debug) 70 LOCAL_CFLAGS += $(ART_HOST_DEBUG_CFLAGS) 71 else 72 LOCAL_CFLAGS += $(ART_HOST_NON_DEBUG_CFLAGS) 73 endif 74 endif 75 76 LOCAL_SHARED_LIBRARIES += liblog 77 ifeq ($$(art_ndebug_or_debug),debug) 78 LOCAL_SHARED_LIBRARIES += libartd 79 else 80 LOCAL_SHARED_LIBRARIES += libart 81 endif 82 83 LOCAL_C_INCLUDES += $(ART_C_INCLUDES) art/runtime 84 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) 85 LOCAL_MULTILIB := both 86 87 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk 88 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk 89 LOCAL_NATIVE_COVERAGE := $(ART_COVERAGE) 90 # For disassembler_arm64. 91 ifeq ($$(art_ndebug_or_debug),debug) 92 LOCAL_SHARED_LIBRARIES += libvixl 93 else 94 LOCAL_SHARED_LIBRARIES += libvixl 95 endif 96 ifeq ($$(art_target_or_host),target) 97 include $(BUILD_SHARED_LIBRARY) 98 else # host 99 include $(BUILD_HOST_SHARED_LIBRARY) 100 endif 101endef 102 103ifeq ($(ART_BUILD_TARGET_NDEBUG),true) 104 $(eval $(call build-libart-disassembler,target,ndebug)) 105endif 106ifeq ($(ART_BUILD_TARGET_DEBUG),true) 107 $(eval $(call build-libart-disassembler,target,debug)) 108endif 109# We always build dex2oat and dependencies, even if the host build is otherwise disabled, since they are used to cross compile for the target. 110ifeq ($(ART_BUILD_HOST_NDEBUG),true) 111 $(eval $(call build-libart-disassembler,host,ndebug)) 112endif 113ifeq ($(ART_BUILD_HOST_DEBUG),true) 114 $(eval $(call build-libart-disassembler,host,debug)) 115endif 116