blob: c3f6820ee2bf61fdb73b023a2c8ba069c00c9b20 [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#
David 'Digit' Turner6ddf8732014-06-12 10:29:23 +020091EMULATOR_COMMON_CFLAGS += -I$(ZLIB_INCLUDES)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +010092
93###########################################################
David 'Digit' Turner1d1a2af2014-01-10 16:17:40 +010094# GLib sources
95#
David 'Digit' Turner99c07e72014-01-13 12:34:52 +010096GLIB_DIR := distrib/mini-glib
David 'Digit' Turner1d1a2af2014-01-10 16:17:40 +010097include $(LOCAL_PATH)/$(GLIB_DIR)/sources.make
98EMULATOR_COMMON_CFLAGS += -I$(GLIB_INCLUDE_DIR)
99
100common_LOCAL_SRC_FILES += $(GLIB_SOURCES)
101
102###########################################################
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100103# Android utility functions
104#
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700105common_LOCAL_SRC_FILES += \
David 'Digit' Turnerd1744342014-07-11 14:03:25 +0200106 android/android-constants.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100107 android/async-console.c \
108 android/async-utils.c \
109 android/charmap.c \
110 android/framebuffer.c \
David 'Digit' Turnerd413fa52013-12-14 23:35:20 +0100111 android/iolooper-select.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100112 android/keycode-array.c \
113 android/avd/hw-config.c \
114 android/avd/info.c \
David 'Digit' Turner2d238fd2011-03-25 10:34:47 +0100115 android/avd/util.c \
David 'Digit' Turnercc330d42013-12-14 23:26:42 +0100116 android/sockets.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100117 android/sync-utils.c \
David 'Digit' Turnerd3f2c272014-02-19 22:39:08 +0100118 android/base/containers/PodVector.cpp \
119 android/base/containers/StringVector.cpp \
David 'Digit' Turner11823982014-02-11 23:48:52 +0100120 android/base/files/PathUtils.cpp \
David 'Digit' Turner7a41eef2014-02-07 15:56:41 +0100121 android/base/Log.cpp \
David 'Digit' Turnerd3f2c272014-02-19 22:39:08 +0100122 android/base/String.cpp \
David 'Digit' Turner97502fa2014-04-28 22:05:28 +0200123 android/base/StringFormat.cpp \
David 'Digit' Turneref457d22014-02-07 18:46:49 +0100124 android/base/StringView.cpp \
David 'Digit' Turner045bdbe2014-04-28 22:26:52 +0200125 android/emulation/CpuAccelerator.cpp \
David 'Digit' Turner890f4642014-02-24 11:53:03 +0100126 android/filesystems/ext4_utils.cpp \
David 'Digit' Turnerc8e89b52014-06-23 17:32:20 +0200127 android/filesystems/fstab_parser.cpp \
David 'Digit' Turner83942732014-06-17 11:06:12 +0200128 android/filesystems/partition_types.cpp \
David 'Digit' Turner716e5e12014-06-21 01:11:13 +0200129 android/filesystems/ramdisk_extractor.cpp \
David 'Digit' Turnerc6e0cae2014-03-07 23:08:30 +0100130 android/kernel/kernel_utils.cpp \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100131 android/utils/assert.c \
132 android/utils/bufprint.c \
133 android/utils/debug.c \
David 'Digit' Turner816e53c2011-08-17 18:33:45 +0200134 android/utils/dll.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100135 android/utils/dirscanner.c \
David 'Digit' Turner52e99422014-02-03 17:11:18 +0100136 android/utils/eintr_wrapper.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100137 android/utils/filelock.c \
David 'Digit' Turner5ea91482014-02-13 18:02:56 +0100138 android/utils/file_data.c \
David 'Digit' Turneree573752014-06-17 09:59:41 +0200139 android/utils/host_bitness.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100140 android/utils/ini.c \
David 'Digit' Turnerbbb81042011-03-17 14:48:44 +0100141 android/utils/intmap.c \
David 'Digit' Turner0a879bf2011-05-12 18:45:18 +0200142 android/utils/lineinput.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100143 android/utils/mapfile.c \
144 android/utils/misc.c \
145 android/utils/panic.c \
146 android/utils/path.c \
David 'Digit' Turner5ea91482014-02-13 18:02:56 +0100147 android/utils/property_file.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100148 android/utils/reflist.c \
149 android/utils/refset.c \
150 android/utils/stralloc.c \
151 android/utils/system.c \
152 android/utils/tempfile.c \
153 android/utils/vector.c \
David 'Digit' Turner60d0a152014-01-22 01:09:57 +0100154 android/utils/win32_cmdline_quote.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100155
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700156common_LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS)
157
David 'Digit' Turnerdddfa642014-06-12 18:48:17 +0200158common_LOCAL_CFLAGS += -I$(LIBEXT4_UTILS_INCLUDES)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700159
160## one for 32-bit
161$(call start-emulator-library, emulator-common)
162LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
163LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
David 'Digit' Turner42fc4492011-06-29 13:16:16 +0200164$(call gen-hw-config-defs)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100165$(call end-emulator-library)
166
David 'Digit' Turner9669d492014-06-12 01:20:53 +0200167$(call start-emulator64-library, emulator64-common)
168LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
169LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
170$(call gen-hw-config-defs)
171$(call end-emulator-library)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700172
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100173##############################################################################
174##############################################################################
175###
176### emulator-libui: LIBRARY OF UI-RELATED FUNCTIONS
177###
178### THESE ARE USED BY 'emulator-ui' AND THE STANDALONE PROGRAMS
179###
180
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700181common_LOCAL_CFLAGS =
182common_LOCAL_SRC_FILES =
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700183common_LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100184
185###########################################################
186# Libpng configuration
187#
David 'Digit' Turnerc7702eb2014-02-26 12:41:50 +0100188LIBPNG_DIR := distrib/libpng-1.2.46
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100189include $(LOCAL_PATH)/$(LIBPNG_DIR)/sources.make
190
191EMULATOR_LIBUI_CFLAGS += \
192 $(LIBPNG_CFLAGS) \
193 -I$(LOCAL_PATH)/$(LIBPNG_DIR)
194
David 'Digit' Turner1634ff52013-12-14 23:31:41 +0100195common_LOCAL_SRC_FILES += $(LIBPNG_SOURCES) android/loadpng.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100196
197##############################################################################
198# SDL-related definitions
199#
200
201# Build SDL from sources except in certain cases where we use
202# prebuilt libraries instead.
203#
204BUILD_SDL_FROM_SOURCES := true
205
206# On linux-x86, using the prebuilts avoid installing all the X11
David 'Digit' Turner425c53b2014-05-02 18:13:28 +0200207# development packages on our build servers. Note: When building 64-bit
208# host binaries, don't use 32-bit SDL prebuilts.
Ying Wang52e9ecf2014-04-23 18:24:30 -0700209ifeq ($(strip $(QEMU_HOST_TAG)$(HOST_IS_64_BIT)),linux-x86)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100210 BUILD_SDL_FROM_SOURCES := false
211endif
212
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100213# If we're building with android-configure.sh && make, always build from
214# sources to catch regressions as soon as they happen.
215#
216ifeq ($(BUILD_STANDALONE_EMULATOR),true)
217 BUILD_SDL_FROM_SOURCES := true
218endif
219
220# Except if we used android-configure.sh --sdl-config=<script>
221#
David 'Digit' Turnera4026682011-08-24 12:54:01 +0200222ifneq ($(QEMU_SDL_CONFIG),)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100223 BUILD_SDL_FROM_SOURCES := false
David 'Digit' Turnera4026682011-08-24 12:54:01 +0200224 SDL_CONFIG := $(QEMU_SDL_CONFIG)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100225endif
226
227ifneq ($(BUILD_SDL_FROM_SOURCES),true)
228
Xavier Ducrohet20821322012-04-03 16:39:24 -0700229 SDL_CONFIG ?= prebuilts/tools/$(QEMU_HOST_TAG)/sdl/bin/sdl-config
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100230 SDL_CFLAGS := $(shell $(SDL_CONFIG) --cflags)
231
232 # We need to filter out the _GNU_SOURCE variable because it breaks recent
233 # releases of Cygwin when using the -mno-cygwin option. Moreover, we don't
234 # need this macro at all to build the Android emulator.
235 SDL_CFLAGS := $(filter-out -D_GNU_SOURCE=1,$(SDL_CFLAGS))
236 SDL_LDLIBS := $(filter-out %.a %.lib,$(shell $(SDL_CONFIG) --static-libs))
237
238 # Circular dependencies between libSDL and libSDLmain
239 # We repeat the libraries in the final link to work around it
240 SDL_STATIC_LIBRARIES := libSDL libSDLmain libSDL libSDLmain
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700241 SDL_STATIC_LIBRARIES_64 := lib64SDL lib64SDLmain lib64SDL lib64SDLmain
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100242
243else # BUILD_SDL_FROM_SOURCES
244
Jesse Hallc60b1142012-07-17 17:01:04 -0700245 SDL_DIR := distrib/sdl-1.2.15
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100246 include $(LOCAL_PATH)/$(SDL_DIR)/sources.make
David 'Digit' Turneraf061c52014-02-28 23:33:54 +0100247
248 SDL_STATIC_LIBRARIES := emulator_libSDL emulator_libSDLmain emulator_libSDL emulator_libSDLmain
249 SDL_STATIC_LIBRARIES_64 := emulator_lib64SDL emulator_lib64SDLmain emulator_lib64SDL emulator_lib64SDLmain
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100250
251 EMULATOR_LIBUI_CFLAGS += \
252 -I$(LOCAL_PATH)/$(SDL_DIR)/include
253
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100254endif # BUILD_SDL_FROM_SOURCES
255
256EMULATOR_LIBUI_CFLAGS += $(SDL_CFLAGS)
257EMULATOR_LIBUI_LDLIBS += $(SDL_LDLIBS)
258
259# The following is needed by SDL_LoadObject
260ifneq ($(HOST_OS),windows)
261 EMULATOR_LIBUI_LDLIBS += -ldl
262endif
263
264# the skin support sources
265#
266SKIN_SOURCES := rect.c \
267 region.c \
268 image.c \
269 trackball.c \
270 keyboard.c \
271 keyset.c \
272 file.c \
273 window.c \
274 scaler.c \
275 composer.c \
276 surface.c \
277
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700278common_LOCAL_SRC_FILES += $(SKIN_SOURCES:%=android/skin/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100279
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700280common_LOCAL_SRC_FILES += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100281 android/user-config.c \
282 android/resource.c \
283 android/qemulator.c \
284 android/keycode.c \
285
286# enable MMX code for our skin scaler
287ifeq ($(HOST_ARCH),x86)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700288common_LOCAL_CFLAGS += -DUSE_MMX=1 -mmmx
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100289endif
290
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700291common_LOCAL_CFLAGS += $(EMULATOR_LIBUI_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100292
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700293
294## one for 32-bit
295$(call start-emulator-library, emulator-libui)
296LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
297LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
298$(call gen-hw-config-defs)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100299$(call end-emulator-library)
300
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700301
David 'Digit' Turner9669d492014-06-12 01:20:53 +0200302$(call start-emulator64-library, emulator64-libui)
303LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
304LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
305$(call gen-hw-config-defs)
306$(call end-emulator-library)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700307
308
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100309##############################################################################
310##############################################################################
311###
312### emulator-libqemu: TARGET-INDEPENDENT QEMU FUNCTIONS
313###
314### THESE ARE USED BY EVERYTHING EXCEPT 'emulator-ui'
315###
316
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700317common_LOCAL_CFLAGS =
318common_LOCAL_SRC_FILES =
319
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100320
321EMULATOR_LIBQEMU_CFLAGS :=
322
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700323common_LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100324
325AUDIO_SOURCES := noaudio.c wavaudio.c wavcapture.c mixeng.c
326AUDIO_CFLAGS := -I$(LOCAL_PATH)/audio -DHAS_AUDIO
327AUDIO_LDLIBS :=
328
Raphael Moll9e319a92012-11-28 13:48:25 -0800329common_LOCAL_CFLAGS += -Wall $(GCC_W_NO_MISSING_FIELD_INITIALIZERS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100330
331ifeq ($(HOST_OS),darwin)
332 CONFIG_COREAUDIO ?= yes
333 AUDIO_CFLAGS += -DHOST_BSD=1
334endif
335
336ifeq ($(HOST_OS),windows)
337 CONFIG_WINAUDIO ?= yes
338endif
339
340ifeq ($(HOST_OS),linux)
341 CONFIG_OSS ?= yes
342 CONFIG_ALSA ?= yes
343 CONFIG_PULSEAUDIO ?= yes
344 CONFIG_ESD ?= yes
345endif
346
347ifeq ($(HOST_OS),freebsd)
348 CONFIG_OSS ?= yes
349endif
350
351ifeq ($(CONFIG_COREAUDIO),yes)
352 AUDIO_SOURCES += coreaudio.c
353 AUDIO_CFLAGS += -DCONFIG_COREAUDIO
354 AUDIO_LDLIBS += -Wl,-framework,CoreAudio
355endif
356
357ifeq ($(CONFIG_WINAUDIO),yes)
358 AUDIO_SOURCES += winaudio.c
359 AUDIO_CFLAGS += -DCONFIG_WINAUDIO
360endif
361
362ifeq ($(CONFIG_PULSEAUDIO),yes)
363 AUDIO_SOURCES += paaudio.c audio_pt_int.c
364 AUDIO_CFLAGS += -DCONFIG_PULSEAUDIO
365endif
366
367ifeq ($(CONFIG_ALSA),yes)
368 AUDIO_SOURCES += alsaaudio.c audio_pt_int.c
369 AUDIO_CFLAGS += -DCONFIG_ALSA
370endif
371
372ifeq ($(CONFIG_ESD),yes)
373 AUDIO_SOURCES += esdaudio.c
374 AUDIO_CFLAGS += -DCONFIG_ESD
375endif
376
377ifeq ($(CONFIG_OSS),yes)
378 AUDIO_SOURCES += ossaudio.c
379 AUDIO_CFLAGS += -DCONFIG_OSS
380endif
381
382AUDIO_SOURCES := $(call sort,$(AUDIO_SOURCES:%=audio/%))
383
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700384common_LOCAL_CFLAGS += -Wno-sign-compare \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100385 -fno-strict-aliasing -W -Wall -Wno-unused-parameter \
386
387# this is very important, otherwise the generated binaries may
388# not link properly on our build servers
389ifeq ($(HOST_OS),linux)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700390common_LOCAL_CFLAGS += -fno-stack-protector
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100391endif
392
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700393common_LOCAL_SRC_FILES += $(AUDIO_SOURCES)
394common_LOCAL_SRC_FILES += \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100395 android/audio-test.c
396
397# other flags
398ifneq ($(HOST_OS),windows)
399 AUDIO_LDLIBS += -ldl
400else
401endif
402
403
404EMULATOR_LIBQEMU_CFLAGS += $(AUDIO_CFLAGS)
405EMULATOR_LIBQEMU_LDLIBS += $(AUDIO_LDLIBS)
406
Raphael Moll9e319a92012-11-28 13:48:25 -0800407common_LOCAL_CFLAGS += $(GCC_W_NO_MISSING_FIELD_INITIALIZERS)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100408
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100409# misc. sources
410#
411CORE_MISC_SOURCES = \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100412 aio-android.c \
413 async.c \
David 'Digit' Turner8354d2d2011-05-11 00:19:06 +0200414 iohandler.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100415 ioport.c \
David 'Digit' Turnerdc7a2b62014-01-28 04:57:43 +0100416 migration-dummy-android.c \
David 'Digit' Turner3b2846a2011-05-11 01:34:40 +0200417 qemu-char.c \
David 'Digit' Turner67c35562014-01-16 18:24:09 +0100418 qemu-log.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100419 savevm.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100420 android/boot-properties.c \
David 'Digit' Turnere1e03df2013-12-15 00:42:21 +0100421 android/cbuffer.c \
422 android/charpipe.c \
David 'Digit' Turner73dd5fc2014-02-04 12:50:55 +0100423 android/config-file.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100424 android/core-init-utils.c \
425 android/gps.c \
426 android/hw-kmsg.c \
427 android/hw-lcd.c \
428 android/hw-events.c \
429 android/hw-control.c \
430 android/hw-sensors.c \
431 android/hw-qemud.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100432 android/looper-qemu.c \
David 'Digit' Turnerc0ac7332011-05-02 15:05:35 +0200433 android/hw-pipe-net.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100434 android/qemu-setup.c \
David 'Digit' Turner6e2eb782013-12-15 00:54:21 +0100435 android/qemu-tcpdump.c \
David 'Digit' Turnercc330d42013-12-14 23:26:42 +0100436 android/shaper.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100437 android/snapshot.c \
Vladimir Chtchetkine9d36fe72012-03-26 10:29:20 -0700438 android/async-socket-connector.c \
Vladimir Chtchetkinea7383ef2012-03-29 07:34:07 -0700439 android/async-socket.c \
Vladimir Chtchetkinec8aa2c52012-04-05 16:22:55 -0700440 android/sdk-controller-socket.c \
Vladimir Chtchetkinedb611d52011-11-01 17:35:07 -0700441 android/sensors-port.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100442 android/utils/timezone.c \
Vladimir Chtchetkinec646f5e2011-09-03 15:17:13 -0700443 android/camera/camera-format-converters.c \
Vladimir Chtchetkined86c7242011-12-09 15:45:46 -0800444 android/camera/camera-service.c \
445 android/adb-server.c \
Vladimir Chtchetkinedb450d72012-01-12 13:37:40 -0800446 android/adb-qemud.c \
Vladimir Chtchetkine8dd31e82012-02-15 17:16:04 -0800447 android/snaphost-android.c \
448 android/multitouch-screen.c \
449 android/multitouch-port.c \
David 'Digit' Turner84569132013-12-13 17:34:07 +0100450 android/utils/jpeg-compress.c \
David 'Digit' Turnercc330d42013-12-14 23:26:42 +0100451 net/net-android.c \
David 'Digit' Turner1c31e3e2013-12-14 20:07:17 +0100452 qobject/qerror.c \
David 'Digit' Turner2e36f052014-01-16 16:22:47 +0100453 qom/container.c \
454 qom/object.c \
455 qom/qom-qobject.c \
David 'Digit' Turner1c31e3e2013-12-14 20:07:17 +0100456 ui/console.c \
457 ui/d3des.c \
David 'Digit' Turnerd7088e92013-12-17 09:25:19 +0100458 ui/input.c \
David 'Digit' Turner1c31e3e2013-12-14 20:07:17 +0100459 ui/vnc-android.c \
David 'Digit' Turner37dc41a2013-12-14 14:45:51 +0100460 util/aes.c \
David 'Digit' Turnere90d6652013-12-14 14:55:12 +0100461 util/cutils.c \
David 'Digit' Turner910aea92014-01-15 16:53:38 +0100462 util/error.c \
David 'Digit' Turner1befd342014-01-15 17:56:45 +0100463 util/hexdump.c \
464 util/iov.c \
David 'Digit' Turnere90d6652013-12-14 14:55:12 +0100465 util/module.c \
466 util/notify.c \
David 'Digit' Turner84569132013-12-13 17:34:07 +0100467 util/osdep.c \
David 'Digit' Turner1c31e3e2013-12-14 20:07:17 +0100468 util/path.c \
469 util/qemu-config.c \
470 util/qemu-error.c \
471 util/qemu-option.c \
472 util/qemu-sockets-android.c \
David 'Digit' Turner910aea92014-01-15 16:53:38 +0100473 util/unicode.c \
David 'Digit' Turnerc79de3c2014-01-23 04:17:24 +0100474 util/yield-android.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100475
476ifeq ($(HOST_ARCH),x86)
David 'Digit' Turnercc33b2d2013-12-15 00:09:42 +0100477 CORE_MISC_SOURCES += disas/i386.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100478endif
479ifeq ($(HOST_ARCH),x86_64)
David 'Digit' Turnercc33b2d2013-12-15 00:09:42 +0100480 CORE_MISC_SOURCES += disas/i386.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100481endif
482ifeq ($(HOST_ARCH),ppc)
David 'Digit' Turnercc33b2d2013-12-15 00:09:42 +0100483 CORE_MISC_SOURCES += disas/ppc.c \
David 'Digit' Turner37dc41a2013-12-14 14:45:51 +0100484 util/cache-utils.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100485endif
486
487ifeq ($(HOST_OS),linux)
David 'Digit' Turner9f82bbb2014-04-14 16:57:38 +0200488 CORE_MISC_SOURCES += util/compatfd.c \
David 'Digit' Turner086e66e2014-02-04 22:24:36 +0100489 util/qemu-thread-posix.c \
Vladimir Chtchetkine4ed09fd2011-08-18 09:42:40 -0700490 android/camera/camera-capture-linux.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100491endif
492
493ifeq ($(HOST_OS),windows)
Vladimir Chtchetkine4ed09fd2011-08-18 09:42:40 -0700494 CORE_MISC_SOURCES += tap-win32.c \
David 'Digit' Turner086e66e2014-02-04 22:24:36 +0100495 android/camera/camera-capture-windows.c \
496 util/qemu-thread-win32.c
Vladimir Chtchetkine4ed09fd2011-08-18 09:42:40 -0700497
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)
David 'Digit' Turner086e66e2014-02-04 22:24:36 +0100503 CORE_MISC_SOURCES += android/camera/camera-capture-mac.m \
David 'Digit' Turner76bc27e2014-02-12 20:48:04 +0100504 util/compatfd.c \
David 'Digit' Turner086e66e2014-02-04 22:24:36 +0100505 util/qemu-thread-posix.c
Vladimir Chtchetkineb92b3032011-09-12 15:29:32 -0700506endif
507
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700508common_LOCAL_SRC_FILES += $(CORE_MISC_SOURCES)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100509
510# Required
Lars Poeschel33da99a2012-08-22 09:42:42 +0200511common_LOCAL_CFLAGS += -D_XOPEN_SOURCE=600 -D_BSD_SOURCE=1 -I$(LOCAL_PATH)/distrib/jpeg-6b
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100512
513SLIRP_SOURCES := \
514 bootp.c \
515 cksum.c \
516 debug.c \
517 if.c \
518 ip_icmp.c \
519 ip_input.c \
520 ip_output.c \
521 mbuf.c \
522 misc.c \
523 sbuf.c \
524 slirp.c \
525 socket.c \
526 tcp_input.c \
527 tcp_output.c \
528 tcp_subr.c \
529 tcp_timer.c \
530 tftp.c \
531 udp.c
532
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700533common_LOCAL_SRC_FILES += $(SLIRP_SOURCES:%=slirp-android/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100534EMULATOR_LIBQEMU_CFLAGS += -I$(LOCAL_PATH)/slirp-android
535
536# socket proxy support
537#
538PROXY_SOURCES := \
539 proxy_common.c \
540 proxy_http.c \
541 proxy_http_connector.c \
542 proxy_http_rewriter.c \
543
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700544common_LOCAL_SRC_FILES += $(PROXY_SOURCES:%=proxy/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100545EMULATOR_LIBQEMU_CFLAGS += -I$(LOCAL_PATH)/proxy
546
547# include telephony stuff
548#
549TELEPHONY_SOURCES := \
550 android_modem.c \
551 modem_driver.c \
552 gsm.c \
553 sim_card.c \
554 sysdeps_qemu.c \
555 sms.c \
556 remote_call.c
557
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700558common_LOCAL_SRC_FILES += $(TELEPHONY_SOURCES:%=telephony/%)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100559EMULATOR_LIBQEMU_CFLAGS += -I$(LOCAL_PATH)/telephony
560
561# sources inherited from upstream, but not fully
562# integrated into android emulator
563#
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700564common_LOCAL_SRC_FILES += \
David 'Digit' Turner1c31e3e2013-12-14 20:07:17 +0100565 qobject/json-lexer.c \
566 qobject/json-parser.c \
567 qobject/json-streamer.c \
568 qobject/qjson.c \
569 qobject/qbool.c \
570 qobject/qdict.c \
571 qobject/qfloat.c \
572 qobject/qint.c \
573 qobject/qlist.c \
574 qobject/qstring.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100575
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100576ifeq ($(QEMU_TARGET_XML_SOURCES),)
577 QEMU_TARGET_XML_SOURCES := arm-core arm-neon arm-vfp arm-vfp3
578 QEMU_TARGET_XML_SOURCES := $(QEMU_TARGET_XML_SOURCES:%=$(LOCAL_PATH)/gdb-xml/%.xml)
579endif
580
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700581common_LOCAL_CFLAGS += $(EMULATOR_LIBQEMU_CFLAGS)
582
583
584## one for 32-bit
585$(call start-emulator-library, emulator-libqemu)
586# gdbstub-xml.c contains C-compilable arrays corresponding to the content
587# of $(LOCAL_PATH)/gdb-xml/, and is generated with the 'feature_to_c.sh' script.
588#
589intermediates = $(call intermediates-dir-for,STATIC_LIBRARIES,$(LOCAL_MODULE),true)
590QEMU_GDBSTUB_XML_C = $(intermediates)/gdbstub-xml.c
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100591$(QEMU_GDBSTUB_XML_C): PRIVATE_PATH := $(LOCAL_PATH)
592$(QEMU_GDBSTUB_XML_C): PRIVATE_SOURCES := $(TARGET_XML_SOURCES)
593$(QEMU_GDBSTUB_XML_C): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/feature_to_c.sh $@ $(QEMU_TARGET_XML_SOURCES)
594$(QEMU_GDBSTUB_XML_C): $(QEMU_TARGET_XML_SOURCES) $(LOCAL_PATH)/feature_to_c.sh
595 $(hide) rm -f $@
596 $(transform-generated-source)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100597LOCAL_GENERATED_SOURCES += $(QEMU_GDBSTUB_XML_C)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700598LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -I$(intermediates)
599LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
600$(call gen-hw-config-defs)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100601$(call end-emulator-library)
602
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700603
604## another for 64-bit, see note in emulator64-common
David 'Digit' Turner9669d492014-06-12 01:20:53 +0200605$(call start-emulator64-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#
609intermediates = $(call intermediates-dir-for,STATIC_LIBRARIES,$(LOCAL_MODULE),true)
610QEMU_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
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700615 $(hide) rm -f $@
616 $(transform-generated-source)
David 'Digit' Turner9669d492014-06-12 01:20:53 +0200617LOCAL_GENERATED_SOURCES += $(QEMU_GDBSTUB_XML_C)
618LOCAL_CFLAGS += $(common_LOCAL_CFLAGS) -I$(intermediates)
619LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
620$(call gen-hw-config-defs)
621$(call end-emulator-library)
Andrew Hsiehc7389bd2012-03-13 02:13:40 -0700622
623
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100624# Block sources, we must compile them with each executable because they
625# are only referenced by the rest of the code using constructor functions.
626# If their object files are put in a static library, these are never compiled
627# into the final linked executable that uses them.
628#
629# Normally, one would solve thus using LOCAL_WHOLE_STATIC_LIBRARIES, but
630# the Darwin linker doesn't support -Wl,--whole-archive or equivalent :-(
631#
632BLOCK_SOURCES += \
633 block.c \
634 blockdev.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100635 block/qcow2.c \
636 block/qcow2-refcount.c \
637 block/qcow2-snapshot.c \
638 block/qcow2-cluster.c \
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100639 block/raw.c
640
641ifeq ($(HOST_OS),windows)
642 BLOCK_SOURCES += block/raw-win32.c
643else
644 BLOCK_SOURCES += block/raw-posix.c
645endif
646
647BLOCK_CFLAGS += $(EMULATOR_COMMON_CFLAGS)
David 'Digit' Turnercef730b2014-02-04 01:02:30 +0100648BLOCK_CFLAGS += -DCONFIG_BDRV_WHITELIST=\"\"
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100649
Lars Poeschel33da99a2012-08-22 09:42:42 +0200650##############################################################################
651##############################################################################
652###
653### emulator-libjpeg: TARGET-INDEPENDENT QEMU FUNCTIONS
654###
655### THESE ARE USED BY EVERYTHING EXCEPT 'emulator-ui'
656###
657
658common_LOCAL_CFLAGS =
659common_LOCAL_SRC_FILES =
660
661###########################################################
662# Jpeg configuration
663#
664LIBJPEG_DIR := distrib/jpeg-6b
665include $(LOCAL_PATH)/$(LIBJPEG_DIR)/sources.make
666
667common_LOCAL_SRC_FILES += $(LIBJPEG_SOURCES)
668
669common_LOCAL_CFLAGS += \
670 $(LIBJPEG_CFLAGS) \
671 -I$(LOCAL_PATH)/$(LIBJPEG_DIR)
672
673## one for 32-bit
674$(call start-emulator-library, emulator-libjpeg)
675LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
676LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
677$(call end-emulator-library)
678
679
680## another for 64-bit, see note in emulator64-common
David 'Digit' Turner9669d492014-06-12 01:20:53 +0200681$(call start-emulator64-library, emulator64-libjpeg)
682LOCAL_CFLAGS += $(common_LOCAL_CFLAGS)
683LOCAL_SRC_FILES += $(common_LOCAL_SRC_FILES)
684$(call end-emulator-library)
Lars Poeschel33da99a2012-08-22 09:42:42 +0200685
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100686
687##############################################################################
688##############################################################################
689###
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100690### gen-hx-header: Generate headers from .hx file with "hxtool" script.
691###
692### The 'hxtool' script is used to generate header files from an input
693### file with the .hx suffix. I.e. foo.hx --> foo.h
694###
695### Due to the way the Android build system works, we need to regenerate
696### it for each module (the output will go into a module-specific directory).
697###
698### This defines a function that can be used inside a module definition
699###
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200700### $(call gen-hx-header,<input>,<output>,<source-files>)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100701###
702### Where: <input> is the input file, with a .hx suffix (e.g. foo.hx)
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200703### <output> is the output file, with a .h or .def suffix
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100704### <source-files> is a list of source files that include the header
705###
706
707
708gen-hx-header = $(eval $(call gen-hx-header-ev,$1,$2,$3))
709
710define gen-hx-header-ev
David 'Digit' Turner42fc4492011-06-29 13:16:16 +0200711intermediates := $$(call intermediates-dir-for,$$(LOCAL_MODULE_CLASS),$$(LOCAL_MODULE),true)
David 'Digit' Turner317c9d52011-05-10 06:38:21 +0200712
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200713QEMU_HEADER_H := $$(intermediates)/$$2
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100714$$(QEMU_HEADER_H): PRIVATE_PATH := $$(LOCAL_PATH)
715$$(QEMU_HEADER_H): PRIVATE_CUSTOM_TOOL = $$(PRIVATE_PATH)/hxtool -h < $$< > $$@
716$$(QEMU_HEADER_H): $$(LOCAL_PATH)/$$1 $$(LOCAL_PATH)/hxtool
717 $$(transform-generated-source)
718
719LOCAL_GENERATED_SOURCES += $$(QEMU_HEADER_H)
David 'Digit' Turner088edf82011-05-09 15:59:28 +0200720LOCAL_C_INCLUDES += $$(intermediates)
David 'Digit' Turneraff94b82011-02-07 18:10:54 +0100721endef