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_CFLAGS += $(ART_HOST_CFLAGS) 67 ifeq ($$(art_ndebug_or_debug),debug) 68 LOCAL_CFLAGS += $(ART_HOST_DEBUG_CFLAGS) 69 else 70 LOCAL_CFLAGS += $(ART_HOST_NON_DEBUG_CFLAGS) 71 endif 72 endif 73 74 LOCAL_SHARED_LIBRARIES += liblog 75 ifeq ($$(art_ndebug_or_debug),debug) 76 LOCAL_SHARED_LIBRARIES += libartd 77 else 78 LOCAL_SHARED_LIBRARIES += libart 79 endif 80 81 LOCAL_C_INCLUDES += $(ART_C_INCLUDES) art/runtime 82 83 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk 84 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk 85 include external/libcxx/libcxx.mk 86 ifeq ($$(art_target_or_host),target) 87 LOCAL_SHARED_LIBRARIES += libcutils libvixl 88 include $(BUILD_SHARED_LIBRARY) 89 else # host 90 LOCAL_STATIC_LIBRARIES += libcutils libvixl 91 include $(BUILD_HOST_SHARED_LIBRARY) 92 endif 93endef 94 95ifeq ($(ART_BUILD_TARGET_NDEBUG),true) 96 $(eval $(call build-libart-disassembler,target,ndebug)) 97endif 98ifeq ($(ART_BUILD_TARGET_DEBUG),true) 99 $(eval $(call build-libart-disassembler,target,debug)) 100endif 101# We always build dex2oat and dependencies, even if the host build is otherwise disabled, since they are used to cross compile for the target. 102ifeq ($(ART_BUILD_NDEBUG),true) 103 $(eval $(call build-libart-disassembler,host,ndebug)) 104endif 105ifeq ($(ART_BUILD_DEBUG),true) 106 $(eval $(call build-libart-disassembler,host,debug)) 107endif 108