blob: 530aa0900bed48d9193acd47883e318473bb56eb [file] [log] [blame]
David 'Digit' Turneraff94b82011-02-07 18:10:54 +01001# This file is included several times to build target-specific
2# modules for the Android emulator. It will be called several times
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -07003# for arm, x86 and mips
David 'Digit' Turneraff94b82011-02-07 18:10:54 +01004#
5
6ifndef EMULATOR_TARGET_ARCH
7$(error EMULATOR_TARGET_ARCH is not defined!)
8endif
9
10EMULATOR_TARGET_CPU := $(EMULATOR_TARGET_ARCH)
11ifeq ($(EMULATOR_TARGET_CPU),x86)
12 EMULATOR_TARGET_CPU := i386
13endif
14
15##############################################################################
16##############################################################################
17###
18### emulator-target-$CPU: target-specific emulation code.
19###
20### Used by both the core and standalone programs.
21###
22
23# Common compiler flags for all target-dependent libraries
24EMULATOR_TARGET_CFLAGS := \
25 -I$(LOCAL_PATH)/android/config/$(HOST_PREBUILT_TAG) \
26 -I$(LOCAL_PATH)/android/config/target-$(EMULATOR_TARGET_ARCH) \
27 -I$(LOCAL_PATH)/target-$(EMULATOR_TARGET_CPU) \
28 -I$(LOCAL_PATH)/fpu \
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -070029 -DNEED_CPU_H
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010030
31TCG_TARGET := $(HOST_ARCH)
David 'Digit' Turnerf1d9bf12011-05-11 18:19:41 +020032ifeq ($(HOST_ARCH),x86)
33 TCG_TARGET := i386
34endif
35ifeq ($(HOST_ARCH),x86_64)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010036 TCG_TARGET := i386
37endif
38
39EMULATOR_TARGET_CFLAGS += \
40 -I$(LOCAL_PATH)/tcg \
41 -I$(LOCAL_PATH)/tcg/$(TCG_TARGET) \
42 -DTARGET_ARCH=\"$(EMULATOR_TARGET_ARCH)\"
43
44
Andrew Hsiehc7389bd2012-03-13 02:13:40 -070045common_LOCAL_CFLAGS =
46common_LOCAL_SRC_FILES =
47
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010048
49# The following is to ensure that "config.h" will map to a target-specific
50# configuration file header.
Andrew Hsiehc7389bd2012-03-13 02:13:40 -070051common_LOCAL_CFLAGS += $(EMULATOR_TARGET_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010052
Andrew Hsiehc7389bd2012-03-13 02:13:40 -070053common_LOCAL_SRC_FILES += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010054 tcg/tcg.c \
55
56##############################################################################
57# Emulated hardware devices.
58#
59
60HW_SOURCES := \
David 'Digit' Turner4b6bb762013-12-17 10:26:45 +010061 bt/core.c \
62 bt/hci.c \
63 bt/hid.c \
64 bt/l2cap.c \
65 bt/sdp.c \
David 'Digit' Turner4023ec82013-12-17 11:35:40 +010066 block/cdrom.c \
David 'Digit' Turner2ec695a2013-12-17 10:03:39 +010067 core/irq.c \
David 'Digit' Turner10745422013-12-17 10:05:40 +010068 core/qdev.c \
David 'Digit' Turner291300f2013-12-17 10:06:47 +010069 core/sysbus.c \
David 'Digit' Turnerf7c8d822013-12-17 14:02:11 +010070 core/dma.c \
David 'Digit' Turnerf0665422013-12-17 10:47:09 +010071 android/goldfish/audio.c \
72 android/goldfish/device.c \
73 android/goldfish/events_device.c \
74 android/goldfish/fb.c \
75 android/goldfish/battery.c \
76 android/goldfish/mmc.c \
77 android/goldfish/memlog.c \
78 android/goldfish/nand.c \
79 android/goldfish/pipe.c \
80 android/goldfish/tty.c \
81 android/goldfish/vmem.c \
David 'Digit' Turner7977bd62013-12-17 11:17:24 +010082 pci/pci.c \
David 'Digit' Turnerbe5c9712013-12-17 13:56:10 +010083 scsi/scsi-disk.c \
David 'Digit' Turner704463f2013-12-17 11:33:57 +010084 usb/dev-hid.c \
85 usb/dev-hub.c \
86 usb/dev-storage.c \
87 usb/hcd-ohci.c \
88 usb/core.c \
David 'Digit' Turnere2f74052013-12-17 11:29:40 +010089 watchdog/watchdog.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010090
David 'Digit' Turner42fc4492011-06-29 13:16:16 +020091
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010092ifeq ($(EMULATOR_TARGET_ARCH),arm)
David 'Digit' Turnerd1298762013-12-17 10:22:24 +010093HW_SOURCES += \
David 'Digit' Turnerea066692013-12-17 14:03:28 +010094 android/android_arm.c \
David 'Digit' Turnerd1298762013-12-17 10:22:24 +010095 arm/pic.c \
96 arm/boot.c \
David 'Digit' Turnerf0665422013-12-17 10:47:09 +010097 android/goldfish/interrupt.c \
98 android/goldfish/switch.c \
99 android/goldfish/timer.c \
100 android/goldfish/trace.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100101
102# The following sources must be compiled with the final executables
103# because they contain device_init() or machine_init() statements.
David 'Digit' Turnerebf1de02013-12-17 13:57:47 +0100104HW_OBJ_SOURCES := hw/net/smc91c111.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100105HW_OBJ_CFLAGS := $(EMULATOR_TARGET_CFLAGS)
106
David 'Digit' Turnercc33b2d2013-12-15 00:09:42 +0100107common_LOCAL_SRC_FILES += disas/arm.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100108
109# smc91c111.c requires <zlib.h>
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700110common_LOCAL_CFLAGS += $(ZLIB_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100111endif
112
David 'Digit' Turner764a3c92011-05-05 12:40:49 +0200113# required to ensure we properly initialize virtual audio hardware
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700114common_LOCAL_CFLAGS += -DHAS_AUDIO
David 'Digit' Turner764a3c92011-05-05 12:40:49 +0200115
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100116ifeq ($(EMULATOR_TARGET_ARCH),x86)
117HW_SOURCES += \
David 'Digit' Turner3fbb6562013-12-17 10:08:21 +0100118 intc/apic.c \
David 'Digit' Turner91335252013-12-17 13:52:01 +0100119 intc/i8259.c \
David 'Digit' Turner6d7b5292013-12-17 13:53:17 +0100120 timer/mc146818rtc.c \
David 'Digit' Turnerbfa4dab2013-12-17 11:19:22 +0100121 pci-host/piix.c \
David 'Digit' Turner6459c4a2013-12-17 10:31:05 +0100122 timer/i8254.c \
David 'Digit' Turner7b769262013-12-17 13:54:37 +0100123 input/pckbd.c \
David 'Digit' Turner1079fa72013-12-17 13:55:27 +0100124 intc/ioapic.c \
David 'Digit' Turner4ecc3dd2013-12-17 11:16:00 +0100125 input/ps2.c \
David 'Digit' Turner343e9282013-12-17 13:56:48 +0100126 i386/smbios.c \
David 'Digit' Turnera367a102013-12-17 11:36:33 +0100127 nvram/fw_cfg.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100128
129# The following sources must be compiled with the final executables
130# because they contain device_init() or machine_init() statements.
131HW_OBJ_SOURCES := \
David 'Digit' Turner08405982013-12-17 11:35:00 +0100132 hw/net/ne2000.c \
David 'Digit' Turnerbb228542013-12-17 13:53:59 +0100133 hw/i386/pc.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100134
135HW_OBJ_CFLAGS := $(EMULATOR_TARGET_CFLAGS)
136
137endif
138
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700139ifeq ($(EMULATOR_TARGET_ARCH),mips)
140HW_SOURCES += \
David 'Digit' Turnerea066692013-12-17 14:03:28 +0100141 android/android_mips.c \
David 'Digit' Turneraf0fc432013-12-17 14:00:52 +0100142 mips/mips_pic.c \
David 'Digit' Turnerf0665422013-12-17 10:47:09 +0100143 android/goldfish/interrupt.c \
144 android/goldfish/switch.c \
145 android/goldfish/timer.c \
146 android/goldfish/trace.c \
David 'Digit' Turneraf0fc432013-12-17 14:00:52 +0100147 mips/cputimer.c \
148 mips/mips_int.c
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700149
150# The following sources must be compiled with the final executables
151# because they contain device_init() or machine_init() statements.
David 'Digit' Turnerebf1de02013-12-17 13:57:47 +0100152HW_OBJ_SOURCES := hw/net/smc91c111.c
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700153HW_OBJ_CFLAGS := $(EMULATOR_TARGET_CFLAGS)
154
David 'Digit' Turnercc33b2d2013-12-15 00:09:42 +0100155common_LOCAL_SRC_FILES += disas/mips.c
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700156
157# smc91c111.c requires <zlib.h>
158LOCAL_CFLAGS += $(ZLIB_CFLAGS)
159ifeq ($(ARCH_HAS_BIGENDIAN),true)
160 LOCAL_CFLAGS += -DTARGET_WORDS_BIGENDIAN
161endif
162
163endif
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700164common_LOCAL_SRC_FILES += $(HW_SOURCES:%=hw/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100165
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700166common_LOCAL_SRC_FILES += \
David 'Digit' Turner2a0488a2013-12-17 11:22:12 +0100167 backends/msmouse.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100168 cpu-exec.c \
David 'Digit' Turner317c9d52011-05-10 06:38:21 +0200169 exec.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100170 translate-all.c \
David 'Digit' Turnerd4e803c2013-12-14 23:45:50 +0100171 android/trace.c \
David 'Digit' Turner13209b92013-12-17 09:54:09 +0100172 android/varint.c \
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700173 softmmu_outside_jit.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100174
175##############################################################################
176# CPU-specific emulation.
177#
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700178common_LOCAL_CFLAGS += -fno-PIC -fomit-frame-pointer -Wno-sign-compare
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100179
180ifeq ($(HOST_ARCH),ppc)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700181 common_LOCAL_CFLAGS += -D__powerpc__
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100182endif
183
184ifeq ($(EMULATOR_TARGET_ARCH),arm)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700185common_LOCAL_SRC_FILES += \
David 'Digit' Turner82a591c2013-12-17 09:10:58 +0100186 target-arm/arm-semi.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100187 target-arm/op_helper.c \
188 target-arm/iwmmxt_helper.c \
189 target-arm/neon_helper.c \
190 target-arm/helper.c \
David 'Digit' Turner288208c2011-05-11 19:37:35 +0200191 target-arm/helper-android.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100192 target-arm/translate.c \
193 target-arm/machine.c \
David 'Digit' Turnercd0c34b2013-12-17 10:19:44 +0100194 hw/arm/armv7m.c \
195 hw/arm/armv7m_nvic.c
David 'Digit' Turnere2288402014-01-09 18:35:14 +0100196endif # EMULATOR_TARGET_ARCH == arm
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100197
198ifeq ($(EMULATOR_TARGET_ARCH), x86)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700199common_LOCAL_SRC_FILES += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100200 target-i386/op_helper.c \
201 target-i386/helper.c \
202 target-i386/translate.c \
203 target-i386/machine.c \
204
Jun Nakajimae4a3c782011-12-17 19:22:12 -0800205ifeq ($(HOST_OS),darwin)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700206common_LOCAL_SRC_FILES += \
Jun Nakajimae4a3c782011-12-17 19:22:12 -0800207 target-i386/hax-all.c \
208 target-i386/hax-darwin.c
209endif
210
211ifeq ($(HOST_OS),windows)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700212common_LOCAL_SRC_FILES += \
Jun Nakajimae4a3c782011-12-17 19:22:12 -0800213 target-i386/hax-all.c \
214 target-i386/hax-windows.c
215endif
David 'Digit' Turnere2288402014-01-09 18:35:14 +0100216endif # EMULATOR_TARGET_ARCH == x86
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100217
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700218ifeq ($(EMULATOR_TARGET_ARCH), mips)
219common_LOCAL_SRC_FILES += \
220 target-mips/op_helper.c \
221 target-mips/helper.c \
222 target-mips/translate.c \
223 target-mips/machine.c
David 'Digit' Turnere2288402014-01-09 18:35:14 +0100224endif # EMULATOR_TARGET_ARCH == mips
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700225
226common_LOCAL_SRC_FILES += fpu/softfloat.c
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700227
Jun Nakajima1321c762011-03-04 17:17:45 -0800228# compile KVM only if target is x86 on x86 Linux
David 'Digit' Turner36597752011-05-20 01:18:01 +0200229QEMU_KVM_TAG := $(QEMU_HOST_TAG)-$(EMULATOR_TARGET_ARCH)
230QEMU_DO_KVM := $(if $(filter linux-x86-x86 linux-x86_64-x86,$(QEMU_KVM_TAG)),true,false)
231ifeq ($(QEMU_DO_KVM),true)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700232 common_LOCAL_SRC_FILES += \
David 'Digit' Turner36597752011-05-20 01:18:01 +0200233 target-i386/kvm.c \
Jun Nakajimabb0140b2011-05-27 18:24:21 -0700234 target-i386/kvm-gs-restore.c \
David 'Digit' Turner36597752011-05-20 01:18:01 +0200235 kvm-all.c \
236 kvm-android.c
Jun Nakajima1321c762011-03-04 17:17:45 -0800237endif
238
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100239##############################################################################
240# Memory-access checking support.
241# Memory access checker uses information collected by instrumented code in
242# libc.so in order to keep track of memory blocks allocated from heap. Memory
243# checker then uses this information to make sure that every access to allocated
244# memory is within allocated block. This information also allows detecting
245# memory leaks and attempts to free/realloc invalid pointers.
246#
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700247common_LOCAL_CFLAGS += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100248 -I$(LOCAL_PATH)/memcheck \
249 -I$(LOCAL_PATH)/elff
250
251MCHK_SOURCES := \
252 memcheck.c \
253 memcheck_proc_management.c \
254 memcheck_malloc_map.c \
255 memcheck_mmrange_map.c \
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700256 memcheck_util.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100257
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700258common_LOCAL_SRC_FILES += $(MCHK_SOURCES:%=memcheck/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100259
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700260common_LOCAL_SRC_FILES += \
David 'Digit' Turnerae3098a2011-05-11 16:01:57 +0200261 cpus.c \
262 arch_init.c
263
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200264# What a mess, os-posix.c depends on the exact values of options
265# which are target specific.
266ifeq ($(HOST_OS),windows)
David 'Digit' Turner1c31e3e2013-12-14 20:07:17 +0100267 common_LOCAL_SRC_FILES += os-win32.c util/oslib-win32.c
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200268else
David 'Digit' Turner1c31e3e2013-12-14 20:07:17 +0100269 common_LOCAL_SRC_FILES += os-posix.c util/oslib-posix.c
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200270endif
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100271
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700272
273## one for 32-bit
274$(call start-emulator-library, emulator-target-$(EMULATOR_TARGET_CPU))
275LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
276LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
277$(call gen-hw-config-defs)
278$(call gen-hx-header,qemu-options.hx,qemu-options.def,os-posix.c os-win32.c)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100279$(call end-emulator-library)
280
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700281## another for 64-bit, see note in file Makefile.common emulator64-common
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700282ifneq ($(filter linux darwin,$(HOST_OS)),)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700283 ifneq ($(BUILD_STANDALONE_EMULATOR),true)
284 $(call start-emulator-library, emulator64-target-$(EMULATOR_TARGET_CPU))
285 LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -m64
286 LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
287 $(call gen-hw-config-defs)
288 $(call gen-hx-header,qemu-options.hx,qemu-options.def,os-posix.c os-win32.c)
289 $(call end-emulator-library)
290 endif # BUILD_STANDALONE_EMULATOR == nil
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700291endif # HOST_OS == linux || darwin
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700292
293
294
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100295##############################################################################
296##############################################################################
297###
298### qemu-android-$CPU: headless emulator core program
299###
300###
301$(call start-emulator-program, qemu-android-$(EMULATOR_TARGET_ARCH))
302
303LOCAL_CFLAGS += \
304 $(EMULATOR_COMMON_CFLAGS) \
305 $(ELFF_CFLAGS) \
306 $(EMULATOR_LIBQEMU_CFLAGS) \
307 $(EMULATOR_TARGET_CFLAGS) \
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700308 -DCONFIG_STANDALONE_CORE
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100309
Jesse Hall183e9272012-04-26 15:13:27 -0700310ifneq ($(QEMU_OPENGLES_INCLUDE),)
311 LOCAL_CFLAGS += -I$(QEMU_OPENGLES_INCLUDE)
312endif
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100313
Raphael Moll9e319a92012-11-28 13:48:25 -0800314LOCAL_CFLAGS += $(GCC_W_NO_MISSING_FIELD_INITIALIZERS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100315
316LOCAL_STATIC_LIBRARIES := \
317 emulator-libqemu \
318 emulator-target-$(EMULATOR_TARGET_CPU) \
Lars Poeschel33da99a2012-08-22 09:42:42 +0200319 emulator-libjpeg \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100320 emulator-libelff \
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700321 emulator-common
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100322
323LOCAL_LDLIBS += \
324 $(EMULATOR_COMMON_LDLIBS) \
325 $(EMULATOR_LIBQEMU_LDLIBS) \
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700326 $(ELFF_LDLIBS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100327
328LOCAL_SRC_FILES := \
329 audio/audio.c \
330 disas.c \
331 dma-helpers.c \
332 gdbstub.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100333 monitor.c \
334 qemu-timer.c \
David 'Digit' Turner317c9d52011-05-10 06:38:21 +0200335 qemu-timer-common.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100336 vl-android.c \
337 android/console.c \
David 'Digit' Turnercb88e792011-08-26 01:35:14 +0200338 android/opengles.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100339 android/display-core.c \
340 android/protocol/attach-ui-proxy.c \
341 android/protocol/fb-updates-proxy.c \
342 android/protocol/user-events-impl.c \
343 android/protocol/ui-commands-proxy.c \
344 android/protocol/core-commands-impl.c \
David 'Digit' Turner852088c2013-12-14 23:04:12 +0100345 android/protocol/core-commands-qemu.c \
David 'Digit' Turnerd4e803c2013-12-14 23:45:50 +0100346 android/user-events-qemu.c \
David 'Digit' Turner70a98202013-12-17 09:30:04 +0100347 hw/core/loader.c \
David 'Digit' Turner852088c2013-12-14 23:04:12 +0100348 ui/keymaps.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100349
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200350$(call gen-hx-header,qemu-monitor.hx,qemu-monitor.h,monitor.c)
David 'Digit' Turner317c9d52011-05-10 06:38:21 +0200351$(call gen-hx-header,qemu-options.hx,qemu-options.def,vl-android.c qemu-options.h)
David 'Digit' Turner42fc4492011-06-29 13:16:16 +0200352$(call gen-hw-config-defs)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100353
354ifeq ($(HOST_OS),darwin)
355 FRAMEWORKS := OpenGL Cocoa QuickTime ApplicationServices Carbon IOKit
356 LOCAL_LDLIBS += $(FRAMEWORKS:%=-Wl,-framework,%)
357endif
358
359# Generate a completely static executable if needed.
360# Note that this means no sound and graphics on Linux.
361#
Andrew Hsieh632a0e12012-04-28 00:48:53 +0800362ifneq ($(strip $(CONFIG_STATIC_EXECUTABLE)$(BUILD_HOST_static)),)
David 'Digit' Turner1634ff52013-12-14 23:31:41 +0100363 LOCAL_SRC_FILES += android/dynlink-static.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100364 LOCAL_LDLIBS += -static
365endif
366
367# The following files cannot be in static libraries because they contain
368# constructor functions that are otherwise stripped by the final linker
369LOCAL_SRC_FILES += $(HW_OBJ_SOURCES)
370LOCAL_CFLAGS += $(HW_OBJ_CFLAGS)
371
372LOCAL_SRC_FILES += $(BLOCK_SOURCES)
373LOCAL_CFLAGS += $(BLOCK_CFLAGS)
374
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100375$(call end-emulator-program)
376
377##############################################################################
378##############################################################################
379###
380### emulator-$ARCH: Standalone emulator program
381###
382###
383
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700384common_LOCAL_LDLIBS =
385common_LOCAL_CFLAGS =
386common_LOCAL_SRC_FILES =
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100387
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700388
389common_LOCAL_STATIC_LIBRARIES := \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100390 emulator-libui \
391 emulator-libqemu \
392 emulator-target-$(EMULATOR_TARGET_CPU) \
393 emulator-libelff \
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700394 emulator-common
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100395
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700396common_LOCAL_LDLIBS += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100397 $(EMULATOR_COMMON_LDLIBS) \
398 $(EMULATOR_LIBQEMU_LDLIBS) \
399 $(EMULATOR_LIBUI_LDLIBS) \
Bhanu Chetlapalli741dc132012-05-08 17:16:03 -0700400 $(ELFF_LDLIBS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100401
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700402common_LOCAL_CFLAGS += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100403 $(EMULATOR_TARGET_CFLAGS) \
404 $(EMULATOR_COMMON_CFLAGS) \
405 $(EMULATOR_LIBQEMU_CFLAGS) \
406 $(EMULATOR_LIBUI_CFLAGS)
407
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700408common_LOCAL_SRC_FILES := \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100409 audio/audio.c \
410 disas.c \
411 dma-helpers.c \
412 gdbstub.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100413 monitor.c \
414 qemu-timer.c \
David 'Digit' Turner317c9d52011-05-10 06:38:21 +0200415 qemu-timer-common.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100416 vl-android.c \
417 android/cmdline-option.c \
418 android/console.c \
419 android/display.c \
420 android/display-core.c \
421 android/help.c \
422 android/main-common.c \
423 android/main.c \
David 'Digit' Turnercb88e792011-08-26 01:35:14 +0200424 android/opengles.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100425 android/protocol/core-commands-qemu.c \
426 android/protocol/ui-commands-qemu.c \
David 'Digit' Turnerd4e803c2013-12-14 23:45:50 +0100427 android/user-events-qemu.c \
David 'Digit' Turner70a98202013-12-17 09:30:04 +0100428 hw/core/loader.c \
David 'Digit' Turner852088c2013-12-14 23:04:12 +0100429 ui/keymaps.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100430
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100431
432# The following files cannot be in static libraries because they contain
433# constructor functions that are otherwise stripped by the final linker
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700434common_LOCAL_SRC_FILES += $(HW_OBJ_SOURCES)
435common_LOCAL_CFLAGS += $(HW_OBJ_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100436
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700437common_LOCAL_SRC_FILES += $(BLOCK_SOURCES)
438common_LOCAL_CFLAGS += $(BLOCK_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100439
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700440common_LOCAL_SRC_FILES += $(SDLMAIN_SOURCES)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100441
442# Generate a completely static executable if needed.
443# Note that this means no sound and graphics on Linux.
444#
Andrew Hsieh632a0e12012-04-28 00:48:53 +0800445ifneq ($(strip $(CONFIG_STATIC_EXECUTABLE)$(BUILD_HOST_static)),)
David 'Digit' Turner1634ff52013-12-14 23:31:41 +0100446 common_LOCAL_SRC_FILES += android/dynlink-static.c
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700447 common_LOCAL_LDLIBS += -static
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100448endif
449
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700450## one for 32-bit
451$(call start-emulator-program, emulator-$(EMULATOR_TARGET_ARCH))
452LOCAL_STATIC_LIBRARIES += \
453 emulator-libui \
454 emulator-libqemu \
455 emulator-target-$(EMULATOR_TARGET_CPU) \
Lars Poeschel33da99a2012-08-22 09:42:42 +0200456 emulator-libjpeg \
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700457 emulator-libelff \
458 emulator-common \
459 $(SDL_STATIC_LIBRARIES)
460LOCAL_LDLIBS += $(common_LOCAL_LDLIBS)
461LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
462LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
463$(call gen-hx-header,qemu-monitor.hx,qemu-monitor.h,monitor.c)
464$(call gen-hx-header,qemu-options.hx,qemu-options.def,vl-android.c qemu-options.h)
465$(call gen-hw-config-defs)
Raphael Mollcdbea232012-05-04 15:04:27 -0700466
467ifeq ($(HOST_OS),windows)
468$(eval $(call insert-windows-icon))
469endif
470
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100471$(call end-emulator-program)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700472
473
474## another for 64-bit, see note in file Makefile.common emulator64-common
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700475ifneq ($(filter linux darwin,$(HOST_OS)),)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700476 ifneq ($(BUILD_STANDALONE_EMULATOR),true)
477 $(call start-emulator-program, emulator64-$(EMULATOR_TARGET_ARCH))
478 LOCAL_STATIC_LIBRARIES += \
479 emulator64-libui \
480 emulator64-libqemu \
481 emulator64-target-$(EMULATOR_TARGET_CPU) \
Lars Poeschel33da99a2012-08-22 09:42:42 +0200482 emulator64-libjpeg \
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700483 emulator64-libelff \
484 emulator64-common \
485 $(SDL_STATIC_LIBRARIES_64)
486 LOCAL_LDLIBS += $(common_LOCAL_LDLIBS) -m64
487 LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -m64
488 LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
489 $(call gen-hx-header,qemu-monitor.hx,qemu-monitor.h,monitor.c)
490 $(call gen-hx-header,qemu-options.hx,qemu-options.def,vl-android.c qemu-options.h)
491 $(call gen-hw-config-defs)
492 $(call end-emulator-program)
493 endif # BUILD_STANDALONE_EMULATOR == nil
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700494endif # HOST_OS == linux || darwin
Raphael Mollcdbea232012-05-04 15:04:27 -0700495