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?
188e6c0ef210ee6c62cf4c63d50c04f451d5fa505f5Elliott Hughesifeq ($(dvm_arch),arm)
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 += \
202ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/HeapSource.cpp \
203ae188c676c681e47a93ade7fdf0144099b470e03Carl Shapiro	alloc/MarkSweep.cpp.arm
204d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiroendif
205d28668cf8740d1f913b4e9140a8c685013c1ad18Carl Shapiro
2063f02aa4d3b68b28bbdb6fd1320b613a68dc91fb9Ben ChengWITH_JIT := $(strip $(WITH_JIT))
2074212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2084212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(WITH_JIT),true)
2094212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DWITH_JIT
2104212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_SRC_FILES += \
2115d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Compiler.cpp \
2125d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Frontend.cpp \
2135d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Utility.cpp \
2145d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/InlineTransformation.cpp \
2155d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/IntermediateRep.cpp \
2165d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Dataflow.cpp \
2175d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/SSATransformation.cpp \
2185d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Loop.cpp \
2195d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro	compiler/Ralloc.cpp \
2201813ab265f691e93401c7307c0b34247842ab35eCarl Shapiro	interp/Jit.cpp
2214212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
2224212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2234212241f98a49adcb955aee67a302cea57f3d984Dan BornsteinLOCAL_C_INCLUDES += \
2244212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	$(JNI_H_INCLUDE) \
2254212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	dalvik \
2264212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	dalvik/vm \
2274212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	external/zlib \
228db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro	libcore/include \
2294212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2304212241f98a49adcb955aee67a302cea57f3d984Dan BornsteinMTERP_ARCH_KNOWN := false
2314212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2324212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(dvm_arch),arm)
2334212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #dvm_arch_variant := armv7-a
2344212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  #LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfp
235cf7fa53b1410eb1033b94267d89867a416523cc6Carl Shapiro  LOCAL_CFLAGS += -Werror
2364212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  MTERP_ARCH_KNOWN := true
237dbe52e8f50c87cfd38bb738bb6edb6e18e11e720Elliott Hughes  # Select architecture-specific sources (armv5te, armv7-a, etc.)
2384212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_SRC_FILES += \
2394212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		arch/arm/CallOldABI.S \
2404212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		arch/arm/CallEABI.S \
241cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		arch/arm/HintsEABI.cpp \
242cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		mterp/out/InterpC-$(dvm_arch_variant).cpp.arm \
2434212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		mterp/out/InterpAsm-$(dvm_arch_variant).S
2444212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2454212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  ifeq ($(WITH_JIT),true)
2464212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein    LOCAL_SRC_FILES += \
2475d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/RallocUtil.cpp \
2485d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/$(dvm_arch_variant)/Codegen.cpp \
24924ac537cf8d214f7f1bcb07aace429521247d1ebBen Cheng		compiler/codegen/arm/$(dvm_arch_variant)/CallingConvention.S \
2505d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/Assemble.cpp \
2515d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/ArchUtility.cpp \
2525d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/LocalOptimizations.cpp \
2535d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/GlobalOptimizations.cpp \
2545d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/arm/ArmRallocUtil.cpp \
2554212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		compiler/template/out/CompilerTemplateAsm-$(dvm_arch_variant).S
2564212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  endif
2574212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
2584212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2594212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(dvm_arch),x86)
2604212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  ifeq ($(dvm_os),linux)
2614212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein    MTERP_ARCH_KNOWN := true
262a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee    LOCAL_CFLAGS += -DDVM_JMP_TABLE_MTERP=1
2634212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein    LOCAL_SRC_FILES += \
26422d404a75a00cda0b0ebed1034c2808ba060b05fJohnnie Birch		arch/$(dvm_arch_variant)/Call386ABI.S \
265cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		arch/$(dvm_arch_variant)/Hints386ABI.cpp \
266cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		mterp/out/InterpC-$(dvm_arch_variant).cpp \
26722d404a75a00cda0b0ebed1034c2808ba060b05fJohnnie Birch		mterp/out/InterpAsm-$(dvm_arch_variant).S
2687520ee7ff226e12e06818561b15741d2575072e3buzbee    ifeq ($(WITH_JIT),true)
2697520ee7ff226e12e06818561b15741d2575072e3buzbee      LOCAL_SRC_FILES += \
2705d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/x86/Assemble.cpp \
2715d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/x86/ArchUtility.cpp \
2725d5b94c8d14b166af580d5dd5906db4f9527d6caCarl Shapiro		compiler/codegen/x86/ia32/Codegen.cpp \
2737520ee7ff226e12e06818561b15741d2575072e3buzbee		compiler/codegen/x86/ia32/CallingConvention.S \
2747520ee7ff226e12e06818561b15741d2575072e3buzbee		compiler/template/out/CompilerTemplateAsm-ia32.S
2757520ee7ff226e12e06818561b15741d2575072e3buzbee    endif
2764212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  endif
2774212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
2784212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2794212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(dvm_arch),sh)
2804212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  MTERP_ARCH_KNOWN := true
2814212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_SRC_FILES += \
2824212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		arch/sh/CallSH4ABI.S \
283cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		arch/generic/Hints.cpp \
284cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		mterp/out/InterpC-allstubs.cpp \
2854212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein		mterp/out/InterpAsm-allstubs.S
2864212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
2874212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2884212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinifeq ($(MTERP_ARCH_KNOWN),false)
2894212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # unknown architecture, try to use FFI
2904212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_C_INCLUDES += external/libffi/$(dvm_os)-$(dvm_arch)
29193194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein
29293194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein  ifeq ($(dvm_os)-$(dvm_arch),darwin-x86)
29393194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein      # OSX includes libffi, so just make the linker aware of it directly.
29493194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein      LOCAL_LDLIBS += -lffi
29593194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein  else
29693194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein      LOCAL_SHARED_LIBRARIES += libffi
29793194e943d11e30ec459c514c824e0db7b20a438Dan Bornstein  endif
2984212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
2994212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_SRC_FILES += \
300cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		arch/generic/Call.cpp \
301cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		arch/generic/Hints.cpp \
302cd8f5e701547739f241594b43e9470c92d98e9cfCarl Shapiro		mterp/out/InterpC-allstubs.cpp
3034212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein
3044212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # The following symbols are usually defined in the asm file, but
3054212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # since we don't have an asm file in this case, we instead just
3064212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # peg them at 0 here, and we add an #ifdef'able define for good
3074212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  # measure, too.
3084212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein  LOCAL_CFLAGS += -DdvmAsmInstructionStart=0 -DdvmAsmInstructionEnd=0 \
3094212241f98a49adcb955aee67a302cea57f3d984Dan Bornstein	-DdvmAsmSisterStart=0 -DdvmAsmSisterEnd=0 -DDVM_NO_ASM_INTERP=1
3104212241f98a49adcb955aee67a302cea57f3d984Dan Bornsteinendif
311