1 # Copyright (C) 2008 The Android Open Source Project
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
16 # Android.mk for Dalvik VM.
18 # This makefile builds both for host and target, and so the very large
19 # swath of common definitions are factored out into a separate file to
20 # minimize duplication.
22 # If you enable or disable optional features here (or in Dvm.mk),
23 # rebuild the VM with:
25 # make clean-libdvm clean-libdvm_assert clean-libdvm_sv clean-libdvm_interp
29 LOCAL_PATH:= $(call my-dir)
32 # Build for the target (device).
35 ifeq ($(TARGET_ARCH_VARIANT),armv5te)
39 ifeq ($(TARGET_CPU_SMP),true)
40 target_smp_flag := -DANDROID_SMP=1
42 target_smp_flag := -DANDROID_SMP=0
44 host_smp_flag := -DANDROID_SMP=1
46 # Build the installed version (libdvm.so) first
47 include $(LOCAL_PATH)/ReconfigureDvm.mk
49 # Overwrite default settings
50 ifeq ($(TARGET_SIMULATOR),false)
51 LOCAL_PRELINK_MODULE := true
53 LOCAL_MODULE_TAGS := user
54 LOCAL_MODULE := libdvm
55 LOCAL_CFLAGS += $(target_smp_flag)
56 include $(BUILD_SHARED_LIBRARY)
58 # If WITH_JIT is configured, build multiple versions of libdvm.so to facilitate
59 # correctness/performance bugs triage
60 ifeq ($(WITH_JIT),true)
63 # Enable assert and JIT tuning
64 include $(LOCAL_PATH)/ReconfigureDvm.mk
66 # Enable assertions and JIT-tuning
67 LOCAL_CFLAGS += -UNDEBUG -DDEBUG=1 -DLOG_NDEBUG=1 -DWITH_DALVIK_ASSERT \
68 -DWITH_JIT_TUNING $(target_smp_flag)
69 LOCAL_MODULE := libdvm_assert
70 include $(BUILD_SHARED_LIBRARY)
73 # Enable assert and self-verification
74 include $(LOCAL_PATH)/ReconfigureDvm.mk
76 # Enable assertions and JIT self-verification
77 LOCAL_CFLAGS += -UNDEBUG -DDEBUG=1 -DLOG_NDEBUG=1 -DWITH_DALVIK_ASSERT \
78 -DWITH_SELF_VERIFICATION $(target_smp_flag)
79 LOCAL_MODULE := libdvm_sv
80 include $(BUILD_SHARED_LIBRARY)
85 include $(LOCAL_PATH)/ReconfigureDvm.mk
87 LOCAL_CFLAGS += $(target_smp_flag)
88 LOCAL_MODULE := libdvm_interp
89 include $(BUILD_SHARED_LIBRARY)
97 ifeq ($(WITH_HOST_DALVIK),true)
101 # Variables used in the included Dvm.mk.
103 dvm_arch := $(HOST_ARCH)
104 # Note: HOST_ARCH_VARIANT isn't defined.
105 dvm_arch_variant := $(HOST_ARCH)
106 dvm_simulator := false
108 include $(LOCAL_PATH)/Dvm.mk
110 # We need to include all of these libraries. The end result of this
111 # section is a static library, but LOCAL_STATIC_LIBRARIES doesn't
112 # actually cause any code from the specified libraries to be included,
113 # whereas LOCAL_WHOLE_STATIC_LIBRARIES does. No, I (danfuzz) am not
114 # entirely sure what LOCAL_STATIC_LIBRARIES is even supposed to mean
115 # in this context, but it is in (apparently) meaningfully used in
116 # other parts of the build.
117 LOCAL_WHOLE_STATIC_LIBRARIES += \
118 libnativehelper-host libdex liblog libcutils
120 # The libffi from the source tree should never be used by host builds.
121 # The recommendation is that host builds should always either
122 # have sufficient custom code so that libffi isn't needed at all,
123 # or they should use the platform's provided libffi. So, if the common
124 # build rules decided to include it, axe it back out here.
125 ifneq (,$(findstring libffi,$(LOCAL_SHARED_LIBRARIES)))
126 LOCAL_SHARED_LIBRARIES := \
127 $(patsubst libffi, ,$(LOCAL_SHARED_LIBRARIES))
130 LOCAL_CFLAGS += $(host_smp_flag)
131 LOCAL_MODULE := libdvm-host
133 include $(BUILD_HOST_STATIC_LIBRARY)