blob: e24dd337f3b5967584c710ecd325352997096574 [file] [log] [blame]
David 'Digit' Turneraff94b82011-02-07 18:10:54 +01001# When building this project, we actually generate several components which
2# are the following:
3#
4# - the emulator-ui program (which is target-agnostic)
5# - the target-specific qemu-android-$ARCH programs (headless emulation engines)
6# - the "standalone" emulator programs (embed both UI and engine in a single
7# binary and process), i.e. "emulator" for ARM and "emulator-x86" for x86.
8#
9# This file defines static host libraries that will be used by at least two
10# of these components.
11#
12
13##############################################################################
14##############################################################################
15###
David 'Digit' Turner42fc4492011-06-29 13:16:16 +020016### gen-hw-config-defs: Generate hardware configuration definitions header
17###
18### The 'gen-hw-config.py' script is used to generate the hw-config-defs.h
19### header from the an .ini file like android/avd/hardware-properties.ini
20###
21### Due to the way the Android build system works, we need to regenerate
22### it for each module (the output will go into a module-specific directory).
23###
24### This defines a function that can be used inside a module definition
25###
26### $(call gen-hw-config-defs)
27###
28
29# First, define a rule to generate a dummy "emulator_hw_config_defs" module
30# which purpose is simply to host the generated header in its output directory.
31intermediates := $(call intermediates-dir-for,SHARED_LIBRARIES,emulator_hw_config_defs,true)
32
33QEMU_HARDWARE_PROPERTIES_INI := $(LOCAL_PATH)/android/avd/hardware-properties.ini
34QEMU_HW_CONFIG_DEFS_H := $(intermediates)/android/avd/hw-config-defs.h
35$(QEMU_HW_CONFIG_DEFS_H): PRIVATE_PATH := $(LOCAL_PATH)
David 'Digit' Turner66241a62011-07-06 00:31:59 +020036$(QEMU_HW_CONFIG_DEFS_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/android/tools/gen-hw-config.py $< $@
David 'Digit' Turner42fc4492011-06-29 13:16:16 +020037$(QEMU_HW_CONFIG_DEFS_H): $(QEMU_HARDWARE_PROPERTIES_INI) $(LOCAL_PATH)/android/tools/gen-hw-config.py
38 $(hide) rm -f $@
39 $(transform-generated-source)
40
41QEMU_HW_CONFIG_DEFS_INCLUDES := $(intermediates)
42
43# Second, define a function that needs to be called inside each module that contains
44# a source file that includes the generated header file.
45gen-hw-config-defs = \
46 $(eval LOCAL_GENERATED_SOURCES += $(QEMU_HW_CONFIG_DEFS_H))\
47 $(eval LOCAL_C_INCLUDES += $(QEMU_HW_CONFIG_DEFS_INCLUDES))
48
49##############################################################################
50##############################################################################
51###
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010052### emulator-common: LIBRARY OF COMMON FUNCTIONS
53###
54### THESE ARE POTENTIALLY USED BY ALL COMPONENTS
55###
56
Andrew Hsiehc7389bd2012-03-13 02:13:40 -070057common_LOCAL_CFLAGS =
58common_LOCAL_SRC_FILES =
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010059
60EMULATOR_COMMON_CFLAGS :=
61
62# Needed by everything about the host
63EMULATOR_COMMON_CFLAGS += \
64 -I$(LOCAL_PATH)/android/config/$(QEMU_HOST_TAG)
65
66# add the build ID to the default macro definitions
67ifeq ($(BUILD_STANDALONE_EMULATOR),)
68EMULATOR_COMMON_CFLAGS += -DANDROID_BUILD_ID="$(strip $(BUILD_ID))-$(strip $(BUILD_NUMBER))"
69endif
70
71# For non-standalone builds, extract the major version number from the Android SDK
72# tools revision number.
73ifneq ($(BUILD_STANDALONE_EMULATOR),true)
74 ANDROID_SDK_TOOLS_REVISION := $(shell awk -F= '/Pkg.Revision/ { print $$2; }' sdk/files/tools_source.properties)
75endif
76
77ANDROID_SDK_TOOLS_REVISION := $(strip $(ANDROID_SDK_TOOLS_REVISION))
78ifdef ANDROID_SDK_TOOLS_REVISION
79 EMULATOR_COMMON_CFLAGS += -DANDROID_SDK_TOOLS_REVISION=$(ANDROID_SDK_TOOLS_REVISION)
80endif
81
82# Enable large-file support (i.e. make off_t a 64-bit value)
83ifeq ($(HOST_OS),linux)
84EMULATOR_COMMON_CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
85endif
86
Raphael Moll9e319a92012-11-28 13:48:25 -080087
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010088###########################################################
89# Zlib sources
90#
91ZLIB_DIR := distrib/zlib-1.2.3
92include $(LOCAL_PATH)/$(ZLIB_DIR)/sources.make
93EMULATOR_COMMON_CFLAGS += -I$(LOCAL_PATH)/$(ZLIB_DIR)
94
Andrew Hsiehc7389bd2012-03-13 02:13:40 -070095common_LOCAL_SRC_FILES += $(ZLIB_SOURCES)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010096
97###########################################################
98# Android utility functions
99#
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700100common_LOCAL_SRC_FILES += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100101 sockets.c \
102 iolooper-select.c \
103 android/async-console.c \
104 android/async-utils.c \
105 android/charmap.c \
106 android/framebuffer.c \
107 android/keycode-array.c \
108 android/avd/hw-config.c \
109 android/avd/info.c \
David 'Digit' Turner2d238fd2011-03-25 10:34:47 +0100110 android/avd/util.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100111 android/sync-utils.c \
112 android/utils/assert.c \
113 android/utils/bufprint.c \
114 android/utils/debug.c \
David 'Digit' Turner816e53c2011-08-17 18:33:45 +0200115 android/utils/dll.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100116 android/utils/dirscanner.c \
117 android/utils/filelock.c \
118 android/utils/ini.c \
David 'Digit' Turnerbbb81042011-03-17 14:48:44 +0100119 android/utils/intmap.c \
David 'Digit' Turner0a879bf2011-05-12 18:45:18 +0200120 android/utils/lineinput.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100121 android/utils/mapfile.c \
122 android/utils/misc.c \
123 android/utils/panic.c \
124 android/utils/path.c \
125 android/utils/reflist.c \
126 android/utils/refset.c \
127 android/utils/stralloc.c \
128 android/utils/system.c \
129 android/utils/tempfile.c \
130 android/utils/vector.c \
131
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700132common_LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS)
133
134
135## one for 32-bit
136$(call start-emulator-library, emulator-common)
137LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
138LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
David 'Digit' Turner42fc4492011-06-29 13:16:16 +0200139$(call gen-hw-config-defs)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100140$(call end-emulator-library)
141
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700142## another for 64-bit
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700143# NOTE: only linux and darwin in non-standalone mode is supported, because
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700144# 1) For Windows: amd64-mingw32msvc-gcc doesn't work, see http://b/issue?id=5949152.
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700145# 2) Standalone has --try-64
146ifneq ($(filter linux darwin,$(HOST_OS)),)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700147 ifneq ($(BUILD_STANDALONE_EMULATOR),true)
148 $(call start-emulator-library, emulator64-common)
149 LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -m64
150 LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
151 $(call gen-hw-config-defs)
152 $(call end-emulator-library)
153 endif # BUILD_STANDALONE_EMULATOR == nil
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700154endif # HOST_OS == linux || darwin
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700155
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100156##############################################################################
157##############################################################################
158###
159### emulator-libui: LIBRARY OF UI-RELATED FUNCTIONS
160###
161### THESE ARE USED BY 'emulator-ui' AND THE STANDALONE PROGRAMS
162###
163
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700164common_LOCAL_CFLAGS =
165common_LOCAL_SRC_FILES =
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100166
Jesse Hall183e9272012-04-26 15:13:27 -0700167ifneq ($(QEMU_OPENGLES_INCLUDE),)
168 EMULATOR_LIBUI_CFLAGS := -I$(QEMU_OPENGLES_INCLUDE)
169endif
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100170
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700171common_LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100172
173###########################################################
174# Libpng configuration
175#
176LIBPNG_DIR := distrib/libpng-1.2.19
177include $(LOCAL_PATH)/$(LIBPNG_DIR)/sources.make
178
179EMULATOR_LIBUI_CFLAGS += \
180 $(LIBPNG_CFLAGS) \
181 -I$(LOCAL_PATH)/$(LIBPNG_DIR)
182
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700183common_LOCAL_SRC_FILES += $(LIBPNG_SOURCES) loadpng.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100184
185##############################################################################
186# SDL-related definitions
187#
188
189# Build SDL from sources except in certain cases where we use
190# prebuilt libraries instead.
191#
192BUILD_SDL_FROM_SOURCES := true
193
194# On linux-x86, using the prebuilts avoid installing all the X11
195# development packages on our build servers.
196#
197ifeq ($(QEMU_HOST_TAG),linux-x86)
198 BUILD_SDL_FROM_SOURCES := false
199endif
200
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100201# If we're building with android-configure.sh && make, always build from
202# sources to catch regressions as soon as they happen.
203#
204ifeq ($(BUILD_STANDALONE_EMULATOR),true)
205 BUILD_SDL_FROM_SOURCES := true
206endif
207
208# Except if we used android-configure.sh --sdl-config=<script>
209#
David 'Digit' Turnera4026682011-08-24 12:54:01 +0200210ifneq ($(QEMU_SDL_CONFIG),)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100211 BUILD_SDL_FROM_SOURCES := false
David 'Digit' Turnera4026682011-08-24 12:54:01 +0200212 SDL_CONFIG := $(QEMU_SDL_CONFIG)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100213endif
214
215ifneq ($(BUILD_SDL_FROM_SOURCES),true)
216
Xavier Ducrohet20821322012-04-03 16:39:24 -0700217 SDL_CONFIG ?= prebuilts/tools/$(QEMU_HOST_TAG)/sdl/bin/sdl-config
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100218 SDL_CFLAGS := $(shell $(SDL_CONFIG) --cflags)
219
220 # We need to filter out the _GNU_SOURCE variable because it breaks recent
221 # releases of Cygwin when using the -mno-cygwin option. Moreover, we don't
222 # need this macro at all to build the Android emulator.
223 SDL_CFLAGS := $(filter-out -D_GNU_SOURCE=1,$(SDL_CFLAGS))
224 SDL_LDLIBS := $(filter-out %.a %.lib,$(shell $(SDL_CONFIG) --static-libs))
225
226 # Circular dependencies between libSDL and libSDLmain
227 # We repeat the libraries in the final link to work around it
228 SDL_STATIC_LIBRARIES := libSDL libSDLmain libSDL libSDLmain
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700229 SDL_STATIC_LIBRARIES_64 := lib64SDL lib64SDLmain lib64SDL lib64SDLmain
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100230
231else # BUILD_SDL_FROM_SOURCES
232
Jesse Hallc60b1142012-07-17 17:01:04 -0700233 SDL_DIR := distrib/sdl-1.2.15
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100234 include $(LOCAL_PATH)/$(SDL_DIR)/sources.make
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700235 common_LOCAL_SRC_FILES += $(SDL_SOURCES)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100236
237 EMULATOR_LIBUI_CFLAGS += \
238 -I$(LOCAL_PATH)/$(SDL_DIR)/include
239
240 SDL_STATIC_LIBRARIES :=
241
242endif # BUILD_SDL_FROM_SOURCES
243
244EMULATOR_LIBUI_CFLAGS += $(SDL_CFLAGS)
245EMULATOR_LIBUI_LDLIBS += $(SDL_LDLIBS)
246
247# The following is needed by SDL_LoadObject
248ifneq ($(HOST_OS),windows)
249 EMULATOR_LIBUI_LDLIBS += -ldl
250endif
251
252# the skin support sources
253#
254SKIN_SOURCES := rect.c \
255 region.c \
256 image.c \
257 trackball.c \
258 keyboard.c \
259 keyset.c \
260 file.c \
261 window.c \
262 scaler.c \
263 composer.c \
264 surface.c \
265
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700266common_LOCAL_SRC_FILES += $(SKIN_SOURCES:%=android/skin/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100267
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700268common_LOCAL_SRC_FILES += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100269 android/user-config.c \
270 android/resource.c \
271 android/qemulator.c \
272 android/keycode.c \
273
274# enable MMX code for our skin scaler
275ifeq ($(HOST_ARCH),x86)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700276common_LOCAL_CFLAGS += -DUSE_MMX=1 -mmmx
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100277endif
278
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700279common_LOCAL_CFLAGS += $(EMULATOR_LIBUI_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100280
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700281
282## one for 32-bit
283$(call start-emulator-library, emulator-libui)
284LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
285LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
286$(call gen-hw-config-defs)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100287$(call end-emulator-library)
288
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700289
290## another for 64-bit, see note in emulator64-common
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700291ifneq ($(filter linux darwin,$(HOST_OS)),)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700292 ifneq ($(BUILD_STANDALONE_EMULATOR),true)
293 $(call start-emulator-library, emulator64-libui)
294 LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -m64
295 LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
296 $(call gen-hw-config-defs)
297 $(call end-emulator-library)
298 endif # BUILD_STANDALONE_EMULATOR == nil
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700299endif # HOST_OS == linux || darwin
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700300
301
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100302##############################################################################
303##############################################################################
304###
305### emulator-libqemu: TARGET-INDEPENDENT QEMU FUNCTIONS
306###
307### THESE ARE USED BY EVERYTHING EXCEPT 'emulator-ui'
308###
309
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700310common_LOCAL_CFLAGS =
311common_LOCAL_SRC_FILES =
312
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100313
314EMULATOR_LIBQEMU_CFLAGS :=
315
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700316common_LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100317
318AUDIO_SOURCES := noaudio.c wavaudio.c wavcapture.c mixeng.c
319AUDIO_CFLAGS := -I$(LOCAL_PATH)/audio -DHAS_AUDIO
320AUDIO_LDLIBS :=
321
Raphael Moll9e319a92012-11-28 13:48:25 -0800322common_LOCAL_CFLAGS += -Wall $(GCC_W_NO_MISSING_FIELD_INITIALIZERS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100323
324ifeq ($(HOST_OS),darwin)
325 CONFIG_COREAUDIO ?= yes
326 AUDIO_CFLAGS += -DHOST_BSD=1
327endif
328
329ifeq ($(HOST_OS),windows)
330 CONFIG_WINAUDIO ?= yes
331endif
332
333ifeq ($(HOST_OS),linux)
334 CONFIG_OSS ?= yes
335 CONFIG_ALSA ?= yes
336 CONFIG_PULSEAUDIO ?= yes
337 CONFIG_ESD ?= yes
338endif
339
340ifeq ($(HOST_OS),freebsd)
341 CONFIG_OSS ?= yes
342endif
343
344ifeq ($(CONFIG_COREAUDIO),yes)
345 AUDIO_SOURCES += coreaudio.c
346 AUDIO_CFLAGS += -DCONFIG_COREAUDIO
347 AUDIO_LDLIBS += -Wl,-framework,CoreAudio
348endif
349
350ifeq ($(CONFIG_WINAUDIO),yes)
351 AUDIO_SOURCES += winaudio.c
352 AUDIO_CFLAGS += -DCONFIG_WINAUDIO
353endif
354
355ifeq ($(CONFIG_PULSEAUDIO),yes)
356 AUDIO_SOURCES += paaudio.c audio_pt_int.c
357 AUDIO_CFLAGS += -DCONFIG_PULSEAUDIO
358endif
359
360ifeq ($(CONFIG_ALSA),yes)
361 AUDIO_SOURCES += alsaaudio.c audio_pt_int.c
362 AUDIO_CFLAGS += -DCONFIG_ALSA
363endif
364
365ifeq ($(CONFIG_ESD),yes)
366 AUDIO_SOURCES += esdaudio.c
367 AUDIO_CFLAGS += -DCONFIG_ESD
368endif
369
370ifeq ($(CONFIG_OSS),yes)
371 AUDIO_SOURCES += ossaudio.c
372 AUDIO_CFLAGS += -DCONFIG_OSS
373endif
374
375AUDIO_SOURCES := $(call sort,$(AUDIO_SOURCES:%=audio/%))
376
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700377common_LOCAL_CFLAGS += -Wno-sign-compare \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100378 -fno-strict-aliasing -W -Wall -Wno-unused-parameter \
379
380# this is very important, otherwise the generated binaries may
381# not link properly on our build servers
382ifeq ($(HOST_OS),linux)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700383common_LOCAL_CFLAGS += -fno-stack-protector
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100384endif
385
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700386common_LOCAL_SRC_FILES += $(AUDIO_SOURCES)
387common_LOCAL_SRC_FILES += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100388 android/audio-test.c
389
390# other flags
391ifneq ($(HOST_OS),windows)
392 AUDIO_LDLIBS += -ldl
393else
394endif
395
396
397EMULATOR_LIBQEMU_CFLAGS += $(AUDIO_CFLAGS)
398EMULATOR_LIBQEMU_LDLIBS += $(AUDIO_LDLIBS)
399
Raphael Moll9e319a92012-11-28 13:48:25 -0800400common_LOCAL_CFLAGS += $(GCC_W_NO_MISSING_FIELD_INITIALIZERS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100401
402# migration sources
403#
404ifeq ($(HOST_OS),windows)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700405 common_LOCAL_SRC_FILES += migration-dummy-android.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100406else
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700407 common_LOCAL_SRC_FILES += migration.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100408 migration-exec.c \
409 migration-tcp-android.c
410endif
411
412# misc. sources
413#
414CORE_MISC_SOURCES = \
415 acl.c \
416 aes.c \
417 aio-android.c \
418 async.c \
419 bt-host.c \
420 bt-vhci.c \
421 buffered_file.c \
422 cbuffer.c \
423 charpipe.c \
424 console.c \
425 cutils.c \
426 d3des.c \
427 input.c \
David 'Digit' Turner8354d2d2011-05-11 00:19:06 +0200428 iohandler.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100429 ioport.c \
430 module.c \
431 net-android.c \
432 notify.c \
433 osdep.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100434 path.c \
David 'Digit' Turner3b2846a2011-05-11 01:34:40 +0200435 qemu-char.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100436 qemu-config.c \
437 qemu-error.c \
438 qemu-malloc.c \
439 qemu-option.c \
440 qemu-sockets-android.c \
441 qerror.c \
442 readline.c \
443 savevm.c \
444 shaper.c \
445 tcpdump.c \
446 vnc-android.c \
447 android/boot-properties.c \
448 android/config.c \
449 android/core-init-utils.c \
450 android/gps.c \
451 android/hw-kmsg.c \
452 android/hw-lcd.c \
453 android/hw-events.c \
454 android/hw-control.c \
455 android/hw-sensors.c \
456 android/hw-qemud.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100457 android/looper-qemu.c \
David 'Digit' Turnerc0ac7332011-05-02 15:05:35 +0200458 android/hw-pipe-net.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100459 android/qemu-setup.c \
460 android/snapshot.c \
Vladimir Chtchetkine9d36fe72012-03-26 10:29:20 -0700461 android/async-socket-connector.c \
Vladimir Chtchetkinea7383ef2012-03-29 07:34:07 -0700462 android/async-socket.c \
Vladimir Chtchetkinec8aa2c52012-04-05 16:22:55 -0700463 android/sdk-controller-socket.c \
Vladimir Chtchetkinedb611d52011-11-01 17:35:07 -0700464 android/sensors-port.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100465 android/utils/timezone.c \
Vladimir Chtchetkinec646f5e2011-09-03 15:17:13 -0700466 android/camera/camera-format-converters.c \
Vladimir Chtchetkined86c7242011-12-09 15:45:46 -0800467 android/camera/camera-service.c \
468 android/adb-server.c \
Vladimir Chtchetkinedb450d72012-01-12 13:37:40 -0800469 android/adb-qemud.c \
Vladimir Chtchetkine8dd31e82012-02-15 17:16:04 -0800470 android/snaphost-android.c \
471 android/multitouch-screen.c \
472 android/multitouch-port.c \
473 android/utils/jpeg-compress.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100474
475ifeq ($(HOST_ARCH),x86)
476 CORE_MISC_SOURCES += i386-dis.c
477endif
478ifeq ($(HOST_ARCH),x86_64)
479 CORE_MISC_SOURCES += i386-dis.c
480endif
481ifeq ($(HOST_ARCH),ppc)
482 CORE_MISC_SOURCES += ppc-dis.c \
483 cache-utils.c
484endif
485
486ifeq ($(HOST_OS),linux)
487 CORE_MISC_SOURCES += usb-linux.c \
Vladimir Chtchetkine4ed09fd2011-08-18 09:42:40 -0700488 qemu-thread.c \
489 android/camera/camera-capture-linux.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100490else
491 CORE_MISC_SOURCES += usb-dummy-android.c
492endif
493
494ifeq ($(HOST_OS),windows)
Vladimir Chtchetkine4ed09fd2011-08-18 09:42:40 -0700495 CORE_MISC_SOURCES += tap-win32.c \
496 android/camera/camera-capture-windows.c
497
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100498else
499 CORE_MISC_SOURCES += posix-aio-compat.c
500endif
501
Vladimir Chtchetkineb92b3032011-09-12 15:29:32 -0700502ifeq ($(HOST_OS),darwin)
Vladimir Chtchetkine955a9972011-10-12 15:40:17 -0700503 CORE_MISC_SOURCES += android/camera/camera-capture-mac.m
Vladimir Chtchetkineb92b3032011-09-12 15:29:32 -0700504endif
505
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700506common_LOCAL_SRC_FILES += $(CORE_MISC_SOURCES)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100507
508# Required
Lars Poeschel33da99a2012-08-22 09:42:42 +0200509common_LOCAL_CFLAGS += -D_XOPEN_SOURCE=600 -D_BSD_SOURCE=1 -I$(LOCAL_PATH)/distrib/jpeg-6b
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100510
511SLIRP_SOURCES := \
512 bootp.c \
513 cksum.c \
514 debug.c \
515 if.c \
516 ip_icmp.c \
517 ip_input.c \
518 ip_output.c \
519 mbuf.c \
520 misc.c \
521 sbuf.c \
522 slirp.c \
523 socket.c \
524 tcp_input.c \
525 tcp_output.c \
526 tcp_subr.c \
527 tcp_timer.c \
528 tftp.c \
529 udp.c
530
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700531common_LOCAL_SRC_FILES += $(SLIRP_SOURCES:%=slirp-android/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100532EMULATOR_LIBQEMU_CFLAGS += -I$(LOCAL_PATH)/slirp-android
533
534# socket proxy support
535#
536PROXY_SOURCES := \
537 proxy_common.c \
538 proxy_http.c \
539 proxy_http_connector.c \
540 proxy_http_rewriter.c \
541
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700542common_LOCAL_SRC_FILES += $(PROXY_SOURCES:%=proxy/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100543EMULATOR_LIBQEMU_CFLAGS += -I$(LOCAL_PATH)/proxy
544
545# include telephony stuff
546#
547TELEPHONY_SOURCES := \
548 android_modem.c \
549 modem_driver.c \
550 gsm.c \
551 sim_card.c \
552 sysdeps_qemu.c \
553 sms.c \
554 remote_call.c
555
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700556common_LOCAL_SRC_FILES += $(TELEPHONY_SOURCES:%=telephony/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100557EMULATOR_LIBQEMU_CFLAGS += -I$(LOCAL_PATH)/telephony
558
559# sources inherited from upstream, but not fully
560# integrated into android emulator
561#
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700562common_LOCAL_SRC_FILES += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100563 json-lexer.c \
564 json-parser.c \
565 json-streamer.c \
566 qjson.c \
567 qbool.c \
568 qdict.c \
569 qfloat.c \
570 qint.c \
571 qlist.c \
572 qstring.c \
573
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100574ifeq ($(QEMU_TARGET_XML_SOURCES),)
575 QEMU_TARGET_XML_SOURCES := arm-core arm-neon arm-vfp arm-vfp3
576 QEMU_TARGET_XML_SOURCES := $(QEMU_TARGET_XML_SOURCES:%=$(LOCAL_PATH)/gdb-xml/%.xml)
577endif
578
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700579common_LOCAL_CFLAGS += $(EMULATOR_LIBQEMU_CFLAGS)
580
581
582## one for 32-bit
583$(call start-emulator-library, emulator-libqemu)
584# gdbstub-xml.c contains C-compilable arrays corresponding to the content
585# of $(LOCAL_PATH)/gdb-xml/, and is generated with the 'feature_to_c.sh' script.
586#
587intermediates = $(call intermediates-dir-for,STATIC_LIBRARIES,$(LOCAL_MODULE),true)
588QEMU_GDBSTUB_XML_C = $(intermediates)/gdbstub-xml.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100589$(QEMU_GDBSTUB_XML_C): PRIVATE_PATH := $(LOCAL_PATH)
590$(QEMU_GDBSTUB_XML_C): PRIVATE_SOURCES := $(TARGET_XML_SOURCES)
591$(QEMU_GDBSTUB_XML_C): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/feature_to_c.sh $@ $(QEMU_TARGET_XML_SOURCES)
592$(QEMU_GDBSTUB_XML_C): $(QEMU_TARGET_XML_SOURCES) $(LOCAL_PATH)/feature_to_c.sh
593 $(hide) rm -f $@
594 $(transform-generated-source)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100595LOCAL_GENERATED_SOURCES += $(QEMU_GDBSTUB_XML_C)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700596LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -I$(intermediates)
597LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
598$(call gen-hw-config-defs)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100599$(call end-emulator-library)
600
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700601
602## another for 64-bit, see note in emulator64-common
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700603ifneq ($(filter linux darwin,$(HOST_OS)),)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700604 ifneq ($(BUILD_STANDALONE_EMULATOR),true)
605 $(call start-emulator-library, emulator64-libqemu)
606 # gdbstub-xml.c contains C-compilable arrays corresponding to the content
607 # of $(LOCAL_PATH)/gdb-xml/, and is generated with the 'feature_to_c.sh' script.
608 #
609 intermediates = $(call intermediates-dir-for,STATIC_LIBRARIES,$(LOCAL_MODULE),true)
610 QEMU_GDBSTUB_XML_C = $(intermediates)/gdbstub-xml.c
611 $(QEMU_GDBSTUB_XML_C): PRIVATE_PATH := $(LOCAL_PATH)
612 $(QEMU_GDBSTUB_XML_C): PRIVATE_SOURCES := $(TARGET_XML_SOURCES)
613 $(QEMU_GDBSTUB_XML_C): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/feature_to_c.sh $@ $(QEMU_TARGET_XML_SOURCES)
614 $(QEMU_GDBSTUB_XML_C): $(QEMU_TARGET_XML_SOURCES) $(LOCAL_PATH)/feature_to_c.sh
615 $(hide) rm -f $@
616 $(transform-generated-source)
617 LOCAL_GENERATED_SOURCES += $(QEMU_GDBSTUB_XML_C)
618 LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -I$(intermediates) -m64
619 LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
620 $(call gen-hw-config-defs)
621 $(call end-emulator-library)
622 endif # BUILD_STANDALONE_EMULATOR == nil
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700623endif # HOST_OS == linux || darwin
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700624
625
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100626# Block sources, we must compile them with each executable because they
627# are only referenced by the rest of the code using constructor functions.
628# If their object files are put in a static library, these are never compiled
629# into the final linked executable that uses them.
630#
631# Normally, one would solve thus using LOCAL_WHOLE_STATIC_LIBRARIES, but
632# the Darwin linker doesn't support -Wl,--whole-archive or equivalent :-(
633#
634BLOCK_SOURCES += \
635 block.c \
636 blockdev.c \
637 block/qcow.c \
638 block/qcow2.c \
639 block/qcow2-refcount.c \
640 block/qcow2-snapshot.c \
641 block/qcow2-cluster.c \
642 block/cloop.c \
643 block/dmg.c \
644 block/vvfat.c \
645 block/raw.c
646
647ifeq ($(HOST_OS),windows)
648 BLOCK_SOURCES += block/raw-win32.c
649else
650 BLOCK_SOURCES += block/raw-posix.c
651endif
652
653BLOCK_CFLAGS += $(EMULATOR_COMMON_CFLAGS)
654BLOCK_CFLAGS += -DCONFIG_BDRV_WHITELIST=""
655
Lars Poeschel33da99a2012-08-22 09:42:42 +0200656##############################################################################
657##############################################################################
658###
659### emulator-libjpeg: TARGET-INDEPENDENT QEMU FUNCTIONS
660###
661### THESE ARE USED BY EVERYTHING EXCEPT 'emulator-ui'
662###
663
664common_LOCAL_CFLAGS =
665common_LOCAL_SRC_FILES =
666
667###########################################################
668# Jpeg configuration
669#
670LIBJPEG_DIR := distrib/jpeg-6b
671include $(LOCAL_PATH)/$(LIBJPEG_DIR)/sources.make
672
673common_LOCAL_SRC_FILES += $(LIBJPEG_SOURCES)
674
675common_LOCAL_CFLAGS += \
676 $(LIBJPEG_CFLAGS) \
677 -I$(LOCAL_PATH)/$(LIBJPEG_DIR)
678
679## one for 32-bit
680$(call start-emulator-library, emulator-libjpeg)
681LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
682LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
683$(call end-emulator-library)
684
685
686## another for 64-bit, see note in emulator64-common
Andrew Hsieh6eb25c72012-08-24 08:18:22 +0800687ifneq ($(filter linux darwin,$(HOST_OS)),)
Lars Poeschel33da99a2012-08-22 09:42:42 +0200688 ifneq ($(BUILD_STANDALONE_EMULATOR),true)
689 $(call start-emulator-library, emulator64-libjpeg)
690 LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -m64
691 LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
692 $(call end-emulator-library)
693 endif # BUILD_STANDALONE_EMULATOR == nil
694endif # HOST_OS == linux
695
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100696
697##############################################################################
698##############################################################################
699###
700### emulator-libelff: TARGET-INDEPENDENT ELF/DWARD PARSER
701###
702### THESE ARE USED BY EVERYTHING EXCEPT 'emulator-ui', BUT WE CANNOT PUT
703### THEM IN emulator-libqemu SINCE THE SOURCES ARE C++
704###
705
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700706common_LOCAL_CFLAGS =
707common_LOCAL_SRC_FILES =
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100708
709ELFF_CFLAGS := -I$(LOCAL_PATH)/elff
710ELFF_LDLIBS := -lstdc++
711
712ELFF_SOURCES := \
713 dwarf_cu.cc \
714 dwarf_die.cc \
715 dwarf_utils.cc \
716 elf_alloc.cc \
717 elf_file.cc \
718 elf_mapped_section.cc \
719 elff_api.cc \
720
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700721common_LOCAL_SRC_FILES += $(ELFF_SOURCES:%=elff/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100722
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700723common_LOCAL_CFLAGS += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100724 -fno-exceptions \
725 $(ELFF_CFLAGS) \
726
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700727
728## one for 32-bit
729$(call start-emulator-library, emulator-libelff)
730LOCAL_CPP_EXTENSION := .cc
731LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
732LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100733$(call end-emulator-library)
734
735
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700736## another for 64-bit, see note in emulator64-common
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700737ifneq ($(filter linux darwin,$(HOST_OS)),)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700738 ifneq ($(BUILD_STANDALONE_EMULATOR),true)
739 $(call start-emulator-library, emulator64-libelff)
740 LOCAL_CPP_EXTENSION := .cc
741 LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -m64
742 LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
743 $(call end-emulator-library)
744 endif # BUILD_STANDALONE_EMULATOR == nil
Andrew Hsieh83df59c2012-07-24 16:06:28 -0700745endif # HOST_OS == linux || darwin
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700746
747
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100748##############################################################################
749##############################################################################
750###
751### gen-hx-header: Generate headers from .hx file with "hxtool" script.
752###
753### The 'hxtool' script is used to generate header files from an input
754### file with the .hx suffix. I.e. foo.hx --> foo.h
755###
756### Due to the way the Android build system works, we need to regenerate
757### it for each module (the output will go into a module-specific directory).
758###
759### This defines a function that can be used inside a module definition
760###
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200761### $(call gen-hx-header,<input>,<output>,<source-files>)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100762###
763### Where: <input> is the input file, with a .hx suffix (e.g. foo.hx)
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200764### <output> is the output file, with a .h or .def suffix
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100765### <source-files> is a list of source files that include the header
766###
767
768
769gen-hx-header = $(eval $(call gen-hx-header-ev,$1,$2,$3))
770
771define gen-hx-header-ev
David 'Digit' Turner42fc4492011-06-29 13:16:16 +0200772intermediates := $$(call intermediates-dir-for,$$(LOCAL_MODULE_CLASS),$$(LOCAL_MODULE),true)
David 'Digit' Turner317c9d52011-05-10 06:38:21 +0200773
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200774QEMU_HEADER_H := $$(intermediates)/$$2
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100775$$(QEMU_HEADER_H): PRIVATE_PATH := $$(LOCAL_PATH)
776$$(QEMU_HEADER_H): PRIVATE_CUSTOM_TOOL = $$(PRIVATE_PATH)/hxtool -h < $$< > $$@
777$$(QEMU_HEADER_H): $$(LOCAL_PATH)/$$1 $$(LOCAL_PATH)/hxtool
778 $$(transform-generated-source)
779
780LOCAL_GENERATED_SOURCES += $$(QEMU_HEADER_H)
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200781LOCAL_C_INCLUDES += $$(intermediates)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100782endef
783