102ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers#
202ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# Copyright (C) 2012 The Android Open Source Project
302ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers#
402ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# Licensed under the Apache License, Version 2.0 (the "License");
502ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# you may not use this file except in compliance with the License.
602ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# You may obtain a copy of the License at
702ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers#
802ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers#      http://www.apache.org/licenses/LICENSE-2.0
902ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers#
1002ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# Unless required by applicable law or agreed to in writing, software
1102ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# distributed under the License is distributed on an "AS IS" BASIS,
1202ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1302ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# See the License for the specific language governing permissions and
1402ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# limitations under the License.
1502ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers#
1602ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
1702ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian RogersLOCAL_PATH := $(call my-dir)
1802ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
19afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersinclude art/build/Android.common_build.mk
2002ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
2102ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian RogersLIBART_DISASSEMBLER_SRC_FILES := \
2202ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers	disassembler.cc \
2302ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers	disassembler_arm.cc \
24e6622be6c353c7178f34adf814c58370a51c5ed7Serban Constantinescu	disassembler_arm64.cc \
2502ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers	disassembler_mips.cc \
2602ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers	disassembler_x86.cc
2702ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
2802ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# $(1): target or host
2902ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers# $(2): ndebug or debug
3002ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogersdefine build-libart-disassembler
3102ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  ifneq ($(1),target)
3202ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    ifneq ($(1),host)
3302ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers      $$(error expected target or host for argument 1, received $(1))
3402ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    endif
3502ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  endif
3602ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  ifneq ($(2),ndebug)
3702ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    ifneq ($(2),debug)
3802ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers      $$(error expected ndebug or debug for argument 2, received $(2))
3902ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    endif
4002ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  endif
4102ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
4202ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  art_target_or_host := $(1)
4302ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  art_ndebug_or_debug := $(2)
4402ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
4502ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  include $(CLEAR_VARS)
46bd5ea6a2f7c61c4cd7b66fead1bedd96e938369dIan Rogers  ifeq ($$(art_target_or_host),host)
47bd5ea6a2f7c61c4cd7b66fead1bedd96e938369dIan Rogers     LOCAL_IS_HOST_MODULE := true
4802ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  endif
4902ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  LOCAL_CPP_EXTENSION := $(ART_CPP_EXTENSION)
5002ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  ifeq ($$(art_ndebug_or_debug),ndebug)
5102ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    LOCAL_MODULE := libart-disassembler
5202ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  else # debug
5302ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    LOCAL_MODULE := libartd-disassembler
5402ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  endif
5502ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
5602ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  LOCAL_MODULE_TAGS := optional
5702ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  LOCAL_MODULE_CLASS := SHARED_LIBRARIES
5802ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
5902ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  LOCAL_SRC_FILES := $$(LIBART_DISASSEMBLER_SRC_FILES)
6002ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
6102ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  ifeq ($$(art_target_or_host),target)
625ca4eaace8ba513f97309bbdc2e156de4b1d648aAndreas Gampe  	$(call set-target-local-clang-vars)
635ca4eaace8ba513f97309bbdc2e156de4b1d648aAndreas Gampe  	$(call set-target-local-cflags-vars,$(2))
6402ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  else # host
6502ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    LOCAL_CLANG := $(ART_HOST_CLANG)
6602ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    LOCAL_CFLAGS += $(ART_HOST_CFLAGS)
675ca4eaace8ba513f97309bbdc2e156de4b1d648aAndreas Gampe    ifeq ($$(art_ndebug_or_debug),debug)
685ca4eaace8ba513f97309bbdc2e156de4b1d648aAndreas Gampe      LOCAL_CFLAGS += $(ART_HOST_DEBUG_CFLAGS)
695ca4eaace8ba513f97309bbdc2e156de4b1d648aAndreas Gampe    else
705ca4eaace8ba513f97309bbdc2e156de4b1d648aAndreas Gampe      LOCAL_CFLAGS += $(ART_HOST_NON_DEBUG_CFLAGS)
715ca4eaace8ba513f97309bbdc2e156de4b1d648aAndreas Gampe    endif
7202ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  endif
7302ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
7402ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  LOCAL_SHARED_LIBRARIES += liblog
7502ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  ifeq ($$(art_ndebug_or_debug),debug)
7602ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    LOCAL_SHARED_LIBRARIES += libartd
7702ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  else
7802ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    LOCAL_SHARED_LIBRARIES += libart
7902ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  endif
8002ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
8102ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  LOCAL_C_INCLUDES += $(ART_C_INCLUDES) art/runtime
8202ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
83afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk
8402ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
852a0e954ecf7c60e6ec62d64b9382cc4ee447e224Dan Albert  include external/libcxx/libcxx.mk
8602ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  ifeq ($$(art_target_or_host),target)
87e6622be6c353c7178f34adf814c58370a51c5ed7Serban Constantinescu    LOCAL_SHARED_LIBRARIES += libcutils libvixl
8802ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    include $(BUILD_SHARED_LIBRARY)
8902ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  else # host
90e6622be6c353c7178f34adf814c58370a51c5ed7Serban Constantinescu    LOCAL_STATIC_LIBRARIES += libcutils libvixl
9102ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers    include $(BUILD_HOST_SHARED_LIBRARY)
9202ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  endif
9302ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogersendef
9402ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers
9502ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogersifeq ($(ART_BUILD_TARGET_NDEBUG),true)
9602ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  $(eval $(call build-libart-disassembler,target,ndebug))
9702ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogersendif
9802ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogersifeq ($(ART_BUILD_TARGET_DEBUG),true)
9902ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogers  $(eval $(call build-libart-disassembler,target,debug))
10002ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogersendif
101c5f17732d8144491c642776b6b48c85dfadf4b52Ian Rogers# We always build dex2oat and dependencies, even if the host build is otherwise disabled, since they are used to cross compile for the target.
102c5f17732d8144491c642776b6b48c85dfadf4b52Ian Rogersifeq ($(ART_BUILD_NDEBUG),true)
103c5f17732d8144491c642776b6b48c85dfadf4b52Ian Rogers  $(eval $(call build-libart-disassembler,host,ndebug))
104c5f17732d8144491c642776b6b48c85dfadf4b52Ian Rogersendif
105c5f17732d8144491c642776b6b48c85dfadf4b52Ian Rogersifeq ($(ART_BUILD_DEBUG),true)
106c5f17732d8144491c642776b6b48c85dfadf4b52Ian Rogers  $(eval $(call build-libart-disassembler,host,debug))
10702ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4Ian Rogersendif
108