14212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# Copyright (C) 2008 The Android Open Source Project
24212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
34212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# Licensed under the Apache License, Version 2.0 (the "License");
44212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# you may not use this file except in compliance with the License.
54212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# You may obtain a copy of the License at
64212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
74212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#      http://www.apache.org/licenses/LICENSE-2.0
84212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
94212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# Unless required by applicable law or agreed to in writing, software
104212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# distributed under the License is distributed on an "AS IS" BASIS,
114212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# See the License for the specific language governing permissions and
134212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# limitations under the License.
144212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
154212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
164212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# Common definitions for host or target builds of libdvm.
174212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
1812def722ecb5d5a1e2f800ef545d8019e443b293Andy McFadden# If you enable or disable optional features here, make sure you do
1912def722ecb5d5a1e2f800ef545d8019e443b293Andy McFadden# a "clean" build -- not everything depends on Dalvik.h.  (See Android.mk
2012def722ecb5d5a1e2f800ef545d8019e443b293Andy McFadden# for the exact command.)
214212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
224212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
234212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
244212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
254212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# Compiler defines.
264212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
274212241f98a49adcb955aee67a302cea57f3d984Dan BornsteinLOCAL_CFLAGS += -fstrict-aliasing -Wstrict-aliasing=2 -fno-align-jumps
28bbf31b58c50fb892423b7fef0d8c1093bd0c1a6cBrian CarlstromLOCAL_CFLAGS += -Wall -Wextra -Wno-unused-parameter
29ab961da1c0b29cbca354e6a71e1739df116afa52Ben ChengLOCAL_CFLAGS += -DARCH_VARIANT=\"$(dvm_arch_variant)\"
304212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
314212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
324212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# Optional features.  These may impact the size or performance of the VM.
334212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#
344212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
354212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# Make a debugging version when building the simulator (if not told
364212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# otherwise) and when explicitly asked.
374212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteindvm_make_debug_vm := false
38737e7c2b77b026ab44c6bbf775b77e953b6f79c6Jeff Brownifneq ($(strip $(DEBUG_DALVIK_VM)),)
394212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  dvm_make_debug_vm := $(DEBUG_DALVIK_VM)
404212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
414212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
424212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(dvm_make_debug_vm),true)
434212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #
444212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # "Debug" profile:
454212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - debugger enabled
464212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - profiling enabled
474212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - tracked-reference verification enabled
484212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - allocation limits enabled
494212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - GDB helpers enabled
504212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - LOGV
514212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - assert()
524212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #
534212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DWITH_INSTR_CHECKS
544212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DWITH_EXTRA_OBJECT_VALIDATION
554212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DWITH_TRACKREF_CHECKS
564212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DWITH_EXTRA_GC_CHECKS=1
574212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #LOCAL_CFLAGS += -DCHECK_MUTEX
584212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DDVM_SHOW_EXCEPTION=3
594212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # add some extra stuff to make it easier to examine with GDB
604212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DEASY_GDB
614212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # overall config may be for a "release" build, so reconfigure these
624212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -UNDEBUG -DDEBUG=1 -DLOG_NDEBUG=1 -DWITH_DALVIK_ASSERT
634212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinelse  # !dvm_make_debug_vm
644212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #
654212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # "Performance" profile:
664212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - all development features disabled
674212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - compiler optimizations enabled (redundant for "release" builds)
684212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # - (debugging and profiling still enabled)
694212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #
704212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #LOCAL_CFLAGS += -DNDEBUG -DLOG_NDEBUG=1
714212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # "-O2" is redundant for device (release) but useful for sim (debug)
724212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #LOCAL_CFLAGS += -O2 -Winline
734212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #LOCAL_CFLAGS += -DWITH_EXTRA_OBJECT_VALIDATION
744212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DDVM_SHOW_EXCEPTION=1
754212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # if you want to try with assertions on the device, add:
764212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #LOCAL_CFLAGS += -UNDEBUG -DDEBUG=1 -DLOG_NDEBUG=1 -DWITH_DALVIK_ASSERT
774212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif  # !dvm_make_debug_vm
784212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
794212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein# bug hunting: checksum and verify interpreted stack when making JNI calls
804212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein#LOCAL_CFLAGS += -DWITH_JNI_STACK_CHECK
814212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
824212241f98a49adcb955aee67a302cea57f3d984Dan BornsteinLOCAL_SRC_FILES := \
83d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	AllocTracker.cpp \
84d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Atomic.cpp.arm \
85d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	AtomicCache.cpp \
86d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	BitVector.cpp.arm \
870647d294bab9312be67a9032adfa4f0b9ba0984aElliott Hughes	CheckJni.cpp \
88d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Ddm.cpp \
89d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Debugger.cpp \
90d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	DvmDex.cpp \
91d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Exception.cpp \
92d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Hash.cpp \
93d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	IndirectRefTable.cpp.arm \
94d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Init.cpp \
95d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	InitRefs.cpp \
96d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	InlineNative.cpp.arm \
97d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Inlines.cpp \
98d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Intern.cpp \
990647d294bab9312be67a9032adfa4f0b9ba0984aElliott Hughes	Jni.cpp \
100d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	JarFile.cpp \
101d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	LinearAlloc.cpp \
102d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Misc.cpp \
103d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Native.cpp \
104d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	PointerSet.cpp \
105d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Profile.cpp \
106d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	RawDexFile.cpp \
107d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	ReferenceTable.cpp \
108d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	SignalCatcher.cpp \
109d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	StdioConverter.cpp \
110d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Sync.cpp \
111d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	Thread.cpp \
112d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	UtfString.cpp \
113ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/Alloc.cpp \
114ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/CardTable.cpp \
115ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/HeapBitmap.cpp.arm \
116ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/HeapDebug.cpp \
117ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/Heap.cpp.arm \
118ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/DdmHeap.cpp \
119ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/Verify.cpp \
120ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/Visit.cpp \
1211813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	analysis/CodeVerify.cpp \
1221813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	analysis/DexPrepare.cpp \
1231813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	analysis/DexVerify.cpp \
1241813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	analysis/Liveness.cpp \
1251813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	analysis/Optimize.cpp \
1261813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	analysis/RegisterMap.cpp \
1271813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	analysis/VerifySubs.cpp \
1281813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	analysis/VfyBasicBlock.cpp \
129ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	hprof/Hprof.cpp \
130ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	hprof/HprofClass.cpp \
131ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	hprof/HprofHeap.cpp \
132ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	hprof/HprofOutput.cpp \
133ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	hprof/HprofString.cpp \
1341813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	interp/Interp.cpp.arm \
1351813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	interp/Stack.cpp \
1362d63bc57d5fcbcd54f0bd3e9491e1704b98ec0bfCarl Shapiro	jdwp/ExpandBuf.cpp \
1372d63bc57d5fcbcd54f0bd3e9491e1704b98ec0bfCarl Shapiro	jdwp/JdwpAdb.cpp \
1382d63bc57d5fcbcd54f0bd3e9491e1704b98ec0bfCarl Shapiro	jdwp/JdwpConstants.cpp \
1392d63bc57d5fcbcd54f0bd3e9491e1704b98ec0bfCarl Shapiro	jdwp/JdwpEvent.cpp \
1402d63bc57d5fcbcd54f0bd3e9491e1704b98ec0bfCarl Shapiro	jdwp/JdwpHandler.cpp \
1412d63bc57d5fcbcd54f0bd3e9491e1704b98ec0bfCarl Shapiro	jdwp/JdwpMain.cpp \
1422d63bc57d5fcbcd54f0bd3e9491e1704b98ec0bfCarl Shapiro	jdwp/JdwpSocket.cpp \
143d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	mterp/Mterp.cpp.arm \
144cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro	mterp/out/InterpC-portable.cpp.arm \
145db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/InternalNative.cpp \
146db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/dalvik_bytecode_OpcodeInfo.cpp \
147db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/dalvik_system_DexFile.cpp \
148db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/dalvik_system_VMDebug.cpp \
149db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/dalvik_system_VMRuntime.cpp \
150db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/dalvik_system_VMStack.cpp \
151db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/dalvik_system_Zygote.cpp \
152db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_Class.cpp \
153db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_Double.cpp \
154db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_Float.cpp \
155db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_Math.cpp \
156db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_Object.cpp \
157db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_Runtime.cpp \
158db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_String.cpp \
159db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_System.cpp \
160db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_Throwable.cpp \
161db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_VMClassLoader.cpp \
162db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_VMThread.cpp \
163db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_reflect_AccessibleObject.cpp \
164db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_reflect_Array.cpp \
165db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_reflect_Constructor.cpp \
166db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_reflect_Field.cpp \
167db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_reflect_Method.cpp \
168db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_lang_reflect_Proxy.cpp \
169db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/java_util_concurrent_atomic_AtomicLong.cpp \
170db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/org_apache_harmony_dalvik_NativeTestTarget.cpp \
171db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/org_apache_harmony_dalvik_ddmc_DdmServer.cpp \
172db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/org_apache_harmony_dalvik_ddmc_DdmVmInternal.cpp \
173db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	native/sun_misc_Unsafe.cpp \
174dabd15a98449c6554579457aa4639bcdc3434eaaCarl Shapiro	oo/AccessCheck.cpp \
175dabd15a98449c6554579457aa4639bcdc3434eaaCarl Shapiro	oo/Array.cpp \
176dabd15a98449c6554579457aa4639bcdc3434eaaCarl Shapiro	oo/Class.cpp \
177dabd15a98449c6554579457aa4639bcdc3434eaaCarl Shapiro	oo/Object.cpp \
178dabd15a98449c6554579457aa4639bcdc3434eaaCarl Shapiro	oo/Resolve.cpp \
179dabd15a98449c6554579457aa4639bcdc3434eaaCarl Shapiro	oo/TypeCheck.cpp \
180056a24a06b2d166c8e8f380488253964db6d7dcdCarl Shapiro	reflect/Annotation.cpp \
181056a24a06b2d166c8e8f380488253964db6d7dcdCarl Shapiro	reflect/Proxy.cpp \
182056a24a06b2d166c8e8f380488253964db6d7dcdCarl Shapiro	reflect/Reflect.cpp \
183d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	test/AtomicTest.cpp.arm \
184d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	test/TestHash.cpp \
185d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro	test/TestIndirectRefTable.cpp
1864212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
187e6c0ef210ee6c62cf4c63d50c04f451d5fa505f5Elliott Hughes# TODO: this is the wrong test, but what's the right one?
188a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandhamifneq ($(filter arm mips,$(dvm_arch)),)
189e6c0ef210ee6c62cf4c63d50c04f451d5fa505f5Elliott Hughes  LOCAL_SRC_FILES += os/android.cpp
190e6c0ef210ee6c62cf4c63d50c04f451d5fa505f5Elliott Hugheselse
191e6c0ef210ee6c62cf4c63d50c04f451d5fa505f5Elliott Hughes  LOCAL_SRC_FILES += os/linux.cpp
192e6c0ef210ee6c62cf4c63d50c04f451d5fa505f5Elliott Hughesendif
193e6c0ef210ee6c62cf4c63d50c04f451d5fa505f5Elliott Hughes
194d28668cf8740d1f913b4e9140a8c685013c1ad18Carl ShapiroWITH_COPYING_GC := $(strip $(WITH_COPYING_GC))
195d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiro
196d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiroifeq ($(WITH_COPYING_GC),true)
197d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiro  LOCAL_CFLAGS += -DWITH_COPYING_GC
198d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiro  LOCAL_SRC_FILES += \
199ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/Copying.cpp.arm
200d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiroelse
201d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiro  LOCAL_SRC_FILES += \
202808a7c0e7e39b7ca3c7db1366e6e4089166052bbIan Rogers	alloc/DlMalloc.cpp \
203ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/HeapSource.cpp \
204ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/MarkSweep.cpp.arm
205d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiroendif
206d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiro
2073f02aa4d3b68b28bbdb6fd1320b613a68dc91fb9Ben ChengWITH_JIT := $(strip $(WITH_JIT))
2084212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2094212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(WITH_JIT),true)
2104212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DWITH_JIT
2114212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_SRC_FILES += \
2125d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Compiler.cpp \
2135d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Frontend.cpp \
2145d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Utility.cpp \
2155d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/InlineTransformation.cpp \
2165d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/IntermediateRep.cpp \
2175d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Dataflow.cpp \
2185d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/SSATransformation.cpp \
2195d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Loop.cpp \
2205d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Ralloc.cpp \
2211813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	interp/Jit.cpp
2224212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
2234212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2244212241f98a49adcb955aee67a302cea57f3d984Dan BornsteinLOCAL_C_INCLUDES += \
2254212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	$(JNI_H_INCLUDE) \
2264212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	dalvik \
2274212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	dalvik/vm \
2284212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	external/zlib \
229db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	libcore/include \
2304212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2314212241f98a49adcb955aee67a302cea57f3d984Dan BornsteinMTERP_ARCH_KNOWN := false
2324212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2334212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(dvm_arch),arm)
2344212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #dvm_arch_variant := armv7-a
2354212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfp
236cf7fa53b1410eb1033b94267d89867a416523cc6Carl Shapiro  LOCAL_CFLAGS += -Werror
2374212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  MTERP_ARCH_KNOWN := true
238dbe52e8f50c87cfd38bb738bb6edb6e18e11e720Elliott Hughes  # Select architecture-specific sources (armv5te, armv7-a, etc.)
2394212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_SRC_FILES += \
2404212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		arch/arm/CallOldABI.S \
2414212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		arch/arm/CallEABI.S \
242cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		arch/arm/HintsEABI.cpp \
243cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		mterp/out/InterpC-$(dvm_arch_variant).cpp.arm \
2444212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		mterp/out/InterpAsm-$(dvm_arch_variant).S
2454212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2464212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  ifeq ($(WITH_JIT),true)
2474212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein    LOCAL_SRC_FILES += \
2485d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/RallocUtil.cpp \
2495d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/$(dvm_arch_variant)/Codegen.cpp \
25024ac537cf8d214f7f1bcb07aace429521247d1ebBen Cheng		compiler/codegen/arm/$(dvm_arch_variant)/CallingConvention.S \
2515d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/Assemble.cpp \
2525d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/ArchUtility.cpp \
2535d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/LocalOptimizations.cpp \
2545d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/GlobalOptimizations.cpp \
2555d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/ArmRallocUtil.cpp \
2564212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		compiler/template/out/CompilerTemplateAsm-$(dvm_arch_variant).S
2574212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  endif
2584212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
2594212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
260a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandhamifeq ($(dvm_arch),mips)
261a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham  MTERP_ARCH_KNOWN := true
262a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham  LOCAL_C_INCLUDES += external/libffi/$(TARGET_OS)-$(TARGET_ARCH)
263a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham  LOCAL_SHARED_LIBRARIES += libffi
264a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham  LOCAL_SRC_FILES += \
265a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		arch/mips/CallO32.S \
266a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		arch/mips/HintsO32.cpp \
267a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		arch/generic/Call.cpp \
268a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		mterp/out/InterpC-mips.cpp \
269a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		mterp/out/InterpAsm-mips.S
270a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
271a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham  ifeq ($(WITH_JIT),true)
272a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    dvm_arch_variant := mips
273a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    LOCAL_SRC_FILES += \
274a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		compiler/codegen/mips/RallocUtil.cpp \
275a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		compiler/codegen/mips/$(dvm_arch_variant)/Codegen.cpp \
276a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		compiler/codegen/mips/$(dvm_arch_variant)/CallingConvention.S \
277a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		compiler/codegen/mips/Assemble.cpp \
278a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		compiler/codegen/mips/ArchUtility.cpp \
279a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		compiler/codegen/mips/LocalOptimizations.cpp \
280a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		compiler/codegen/mips/GlobalOptimizations.cpp \
281a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham		compiler/template/out/CompilerTemplateAsm-$(dvm_arch_variant).S
282a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham  endif
283a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandhamendif
284a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
2854212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(dvm_arch),x86)
2864212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  ifeq ($(dvm_os),linux)
2874212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein    MTERP_ARCH_KNOWN := true
2880c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen    LOCAL_CFLAGS += -DDVM_JMP_TABLE_MTERP=1 \
2890c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                    -DMTERP_STUB
2904212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein    LOCAL_SRC_FILES += \
29122d404a75a00cda0b0ebed1034c2808ba060b05fJohnnie Birch		arch/$(dvm_arch_variant)/Call386ABI.S \
292cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		arch/$(dvm_arch_variant)/Hints386ABI.cpp \
293cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		mterp/out/InterpC-$(dvm_arch_variant).cpp \
29422d404a75a00cda0b0ebed1034c2808ba060b05fJohnnie Birch		mterp/out/InterpAsm-$(dvm_arch_variant).S
2957520ee7ff226e12e06818561b15741d2575072e3buzbee    ifeq ($(WITH_JIT),true)
2960c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen      LOCAL_CFLAGS += -DARCH_IA32
2977520ee7ff226e12e06818561b15741d2575072e3buzbee      LOCAL_SRC_FILES += \
2980c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/LowerAlu.cpp \
2990c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/LowerConst.cpp \
3000c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/LowerMove.cpp \
3010c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/Lower.cpp \
3020c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/LowerHelper.cpp \
3030c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/LowerJump.cpp \
3040c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/LowerObject.cpp \
3050c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/AnalysisO1.cpp \
3060c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/BytecodeVisitor.cpp \
3070c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/NcgAot.cpp \
3080c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/CodegenInterface.cpp \
3090c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/LowerInvoke.cpp \
3100c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/LowerReturn.cpp \
3110c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/NcgHelper.cpp \
3120c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/LowerGetPut.cpp
3130c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3140c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen      # need apache harmony x86 encoder/decoder
3150c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen      LOCAL_C_INCLUDES += \
3160c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                dalvik/vm/compiler/codegen/x86/libenc
3170c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen      LOCAL_SRC_FILES += \
3180c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/libenc/enc_base.cpp \
3190c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/libenc/dec_base.cpp \
3200c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/libenc/enc_wrapper.cpp \
3210c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen                compiler/codegen/x86/libenc/enc_tabl.cpp
3220c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen
3237520ee7ff226e12e06818561b15741d2575072e3buzbee    endif
3244212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  endif
3254212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
3264212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
3274212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(MTERP_ARCH_KNOWN),false)
3284212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # unknown architecture, try to use FFI
3294212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_C_INCLUDES += external/libffi/$(dvm_os)-$(dvm_arch)
33093194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein
33193194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein  ifeq ($(dvm_os)-$(dvm_arch),darwin-x86)
33293194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein      # OSX includes libffi, so just make the linker aware of it directly.
33393194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein      LOCAL_LDLIBS += -lffi
33493194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein  else
33593194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein      LOCAL_SHARED_LIBRARIES += libffi
33693194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein  endif
3374212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
3384212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_SRC_FILES += \
339cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		arch/generic/Call.cpp \
340cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		arch/generic/Hints.cpp \
341cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		mterp/out/InterpC-allstubs.cpp
3424212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
3434212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # The following symbols are usually defined in the asm file, but
3444212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # since we don't have an asm file in this case, we instead just
3454212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # peg them at 0 here, and we add an #ifdef'able define for good
3464212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # measure, too.
3474212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DdvmAsmInstructionStart=0 -DdvmAsmInstructionEnd=0 \
3484212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	-DdvmAsmSisterStart=0 -DdvmAsmSisterEnd=0 -DDVM_NO_ASM_INTERP=1
3494212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
350