diff options
31 files changed, 1321 insertions, 1134 deletions
@@ -13,16 +13,6 @@ # limitations under the License. # -# disable implicit rules -.SUFFIXES: -%:: %,v -%:: RCS/% -%:: RCS/%,v -%:: s.% -%:: SCCS/s.% -%.c: %.w %.ch - - # this is a set of definitions that allow the usage of Makefile.android # even if we're not using the Android build system. # @@ -33,7 +23,7 @@ CONFIG_MAKE := $(OBJS_DIR)/config.make CONFIG_H := $(OBJS_DIR)/config-host.h ifeq ($(wildcard $(CONFIG_MAKE)),) - $(error "The configuration file '$(CONFIG_MAKE)' doesnt' exist, please run the "android-configure.sh" script) + $(error "The configuration file '$(CONFIG_MAKE)' doesnt' exist, please run the "rebuilt.sh" script) endif include $(CONFIG_MAKE) diff --git a/Makefile.android b/Makefile.android index c70f537..1b44140 100644 --- a/Makefile.android +++ b/Makefile.android @@ -17,6 +17,7 @@ endif # determine the location of platform-specific directories # CONFIG_DIRS := \ + $(LOCAL_PATH)/android/config \ $(LOCAL_PATH)/android/config/$(QEMU_HOST_TAG) ifeq ($(BUILD_STANDALONE_EMULATOR),true) @@ -25,9 +26,6 @@ endif CONFIG_INCLUDES := $(CONFIG_DIRS:%=-I%) -ifneq ($(BUILD_STANDALONE_EMULATOR),true) -endif # BUILD_STANDALONE_EMULATOR != true - MY_CC := $(HOST_CC) MY_OPTIM := -O2 -g -fno-PIC -falign-functions=0 -fomit-frame-pointer @@ -44,10 +42,12 @@ ifeq ($(BUILD_DEBUG_EMULATOR),true) -fno-PIC -falign-functions=0 endif +MY_CFLAGS += -DCONFIG_MEMCHECK + # prepare config.h for x86 -#ifeq ($(TARGET_ARCH),x86) -#MY_CFLAGS += -DARCH_FLAGS_x86 -#endif +ifeq ($(TARGET_ARCH),x86) +MY_CFLAGS += -DARCH_FLAGS_x86 +endif MY_LDLIBS := @@ -96,17 +96,6 @@ endif # adequate values for HOST_CC # ifneq ($(BUILD_STANDALONE_EMULATOR),true) - # On Linux, use our custom 32-bit host toolchain, which contains the - # relevant headers and 32-bit libraries for audio (The host 64-bit Lucid - # doesn't provide these anymore, only their 64-bit versions). - ifeq ($(HOST_OS),linux) - HOST_SDK_TOOLCHAIN_PREFIX := prebuilt/linux-x86/toolchain/i686-linux-glibc2.7-4.4.3/bin/i686-linux - # Don't do anything if the toolchain is not there - ifneq (,$(strip $(wildcard $(HOST_SDK_TOOLCHAIN_PREFIX)-gcc))) - MY_CC := $(HOST_SDK_TOOLCHAIN_PREFIX)-gcc - MY_CXX := $(HOST_SDK_TOOLCHAIN_PREFIX)-g++ - endif # $(HOST_SDK_TOOLCHAIN_PREFIX)-gcc exists - endif # HOST_OS == linux ifneq ($(USE_CCACHE),) ccache := prebuilt/$(HOST_PREBUILT_TAG)/ccache/ccache @@ -130,42 +119,751 @@ endif # MY_CFLAGS += -Wall -Wno-missing-field-initializers -# Needed to build fpu/softfloat-native.h properly -MY_CFLAGS += -D_GNU_SOURCE=1 +include $(CLEAR_VARS) + +########################################################### +# Zlib configuration +# +ZLIB_DIR := distrib/zlib-1.2.3 +include $(LOCAL_PATH)/$(ZLIB_DIR)/sources.make + +########################################################### +# Libpng configuration +# +LIBPNG_DIR := distrib/libpng-1.2.19 +include $(LOCAL_PATH)/$(LIBPNG_DIR)/sources.make + +############################################################################### +# build the TCG code generator +# +include $(CLEAR_VARS) + +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) +LOCAL_LDLIBS := $(MY_LDLIBS) +LOCAL_MODULE := emulator-tcg + +TCG_TARGET := $(HOST_ARCH) +ifeq ($(TCG_TARGET),x86) + TCG_TARGET := i386 +endif + +TCG_CFLAGS := -I$(LOCAL_PATH)/tcg -I$(LOCAL_PATH)/tcg/$(TCG_TARGET) + +LOCAL_CFLAGS += $(TCG_CFLAGS) -DNEED_CPU_H \ + -I$(LOCAL_PATH)/$(EMULATOR_TARGET_CPU) \ + -I$(LOCAL_PATH)/fpu \ + +LOCAL_SRC_FILES := \ + tcg/tcg.c \ + +include $(BUILD_HOST_STATIC_LIBRARY) + +############################################################################## +# build the HW emulation support +# +include $(CLEAR_VARS) + +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_LDLIBS := $(MY_LDLIBS) +LOCAL_MODULE := emulator-hw + +HW_CFLAGS := -I$(LOCAL_PATH)/hw + +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) -DNEED_CPU_H +LOCAL_CFLAGS += -I$(LOCAL_PATH)/$(EMULATOR_TARGET_CPU) -I$(LOCAL_PATH)/fpu $(HW_CFLAGS) +LOCAL_CFLAGS += $(ZLIB_CFLAGS) -I$(LOCAL_PATH)/$(ZLIB_DIR) + +HW_SOURCES := \ + bt.c \ + bt-hci.c \ + bt-hid.c \ + bt-l2cap.c \ + bt-sdp.c \ + cdrom.c \ + dma.c \ + irq.c \ + goldfish_device.c \ + goldfish_events_device.c \ + goldfish_fb.c \ + goldfish_battery.c \ + goldfish_mmc.c \ + goldfish_memlog.c \ + goldfish_nand.c \ + goldfish_tty.c \ + msmouse.c \ + pci.c \ + qdev.c \ + scsi-disk.c \ + sysbus.c \ + usb-hid.c \ + usb-hub.c \ + usb-msd.c \ + usb-ohci.c \ + usb.c \ + watchdog.c \ + +ifeq ($(TARGET_ARCH),arm) +HW_SOURCES += android_arm.c \ + arm_pic.c \ + smc91c111.c \ + goldfish_audio.c \ + goldfish_interrupt.c \ + goldfish_switch.c \ + goldfish_timer.c \ + goldfish_trace.c \ + +endif + +ifeq ($(TARGET_ARCH),x86) +HW_SOURCES += pc.c \ + apic.c \ + i8259.c \ + mc146818rtc.c \ + piix_pci.c \ + i8254.c \ + ne2000.c \ + pckbd.c \ + ioapic.c \ + ps2.c \ + smbios.c \ + fw_cfg.c \ + +endif + +LOCAL_SRC_FILES += $(HW_SOURCES:%=hw/%) + +include $(BUILD_HOST_STATIC_LIBRARY) + +############################################################################## +# build the ELF/DWARF stuff +# This library is used by emulator's memory checker to extract debug information +# from the symbol files when reporting memory allocation violations. In +# particular, this library is used to extract routine name and source file +# location for the code address where violation has been detected. +# +include $(CLEAR_VARS) + +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_LDLIBS := $(MY_LDLIBS) +LOCAL_MODULE := emulator-elff +LOCAL_CPP_EXTENSION := .cc + +ELFF_CFLAGS := -I$(LOCAL_PATH)/elff + +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) -fno-exceptions +LOCAL_CFLAGS += -I$(LOCAL_PATH)/$(EMULATOR_TARGET_CPU) -I$(LOCAL_PATH)/fpu $(ELFF_CFLAGS) +LOCAL_CFLAGS += $(ZLIB_CFLAGS) -I$(LOCAL_PATH)/$(ZLIB_DIR) + +ELFF_SOURCES := \ + dwarf_cu.cc \ + dwarf_die.cc \ + dwarf_utils.cc \ + elf_alloc.cc \ + elf_file.cc \ + elf_mapped_section.cc \ + elff_api.cc \ + +LOCAL_SRC_FILES += $(ELFF_SOURCES:%=elff/%) +ELFF_LDLIBS := -lstdc++ + +include $(BUILD_HOST_STATIC_LIBRARY) + +############################################################################## +# build the memory access checking support +# Memory access checker uses information collected by instrumented code in +# libc.so in order to keep track of memory blocks allocated from heap. Memory +# checker then uses this information to make sure that every access to allocated +# memory is within allocated block. This information also allows detecting +# memory leaks and attempts to free/realloc invalid pointers. +# +include $(CLEAR_VARS) + +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_LDLIBS := $(MY_LDLIBS) +LOCAL_MODULE := emulator-memcheck + +MCHK_CFLAGS := -I$(LOCAL_PATH)/memcheck -I$(LOCAL_PATH)/elff + +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) -DNEED_CPU_H +LOCAL_CFLAGS += -I$(LOCAL_PATH)/$(EMULATOR_TARGET_CPU) -I$(LOCAL_PATH)/fpu $(MCHK_CFLAGS) +LOCAL_CFLAGS += $(ZLIB_CFLAGS) -I$(LOCAL_PATH)/$(ZLIB_DIR) + +MCHK_SOURCES := \ + memcheck.c \ + memcheck_proc_management.c \ + memcheck_malloc_map.c \ + memcheck_mmrange_map.c \ + memcheck_util.c \ + +LOCAL_SRC_FILES += $(MCHK_SOURCES:%=memcheck/%) + +include $(BUILD_HOST_STATIC_LIBRARY) + +############################################################################## +# build the CPU-specific emulation engine sources +# +include $(CLEAR_VARS) + +ifeq ($(TARGET_ARCH),arm) +LOCAL_MODULE := emulator-arm +endif +ifeq ($(TARGET_ARCH),x86) +LOCAL_MODULE := emulator-i386 +LOCAL_MODULE_TAGS := optional +endif + +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_MODULE := $(LOCAL_MODULE) +LOCAL_LDLIBS := $(MY_LDLIBS) +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) +LOCAL_STATIC_LIBRARIES := emulator-hw + +LOCAL_CFLAGS := -fno-PIC -fomit-frame-pointer -Wno-sign-compare +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) + +LOCAL_CFLAGS += -I$(LOCAL_PATH) \ + -I$(LOCAL_PATH)/$(EMULATOR_TARGET_CPU) \ + -I$(LOCAL_PATH)/fpu \ + $(TCG_CFLAGS) \ + $(HW_CFLAGS) \ + -DNEED_CPU_H \ + +ifeq ($(HOST_ARCH),ppc) + LOCAL_CFLAGS += -D__powerpc__ +endif + +ifeq ($(TARGET_ARCH),arm) +LOCAL_SRC_FILES += exec.c cpu-exec.c \ + $(EMULATOR_TARGET_CPU)/op_helper.c \ + $(EMULATOR_TARGET_CPU)/iwmmxt_helper.c \ + $(EMULATOR_TARGET_CPU)/neon_helper.c \ + $(EMULATOR_TARGET_CPU)/helper.c \ + $(EMULATOR_TARGET_CPU)/translate.c \ + $(EMULATOR_TARGET_CPU)/machine.c \ + translate-all.c \ + hw/armv7m.c \ + hw/armv7m_nvic.c \ + arm-semi.c \ + trace.c \ + varint.c \ + dcache.c \ + softmmu_outside_jit.c \ + +LOCAL_SRC_FILES += fpu/softfloat.c +endif + +ifeq ($(TARGET_ARCH), x86) +LOCAL_SRC_FILES += exec.c cpu-exec.c \ + $(EMULATOR_TARGET_CPU)/op_helper.c \ + $(EMULATOR_TARGET_CPU)/helper.c \ + $(EMULATOR_TARGET_CPU)/translate.c \ + $(EMULATOR_TARGET_CPU)/machine.c \ + translate-all.c \ + trace.c \ + varint.c \ + dcache.c \ + softmmu_outside_jit.c \ + +LOCAL_SRC_FILES += fpu/softfloat-native.c +endif + +include $(BUILD_HOST_STATIC_LIBRARY) + +############################################################################## +# SDL-related definitions +# + +# Build SDL from sources except on linux-x86, to avoid installing all +# the X11 development packages on our build servers. +# +BUILD_SDL_FROM_SOURCES := true +ifeq ($(QEMU_HOST_TAG),linux-x86) + BUILD_SDL_FROM_SOURCES := false +endif +ifeq ($(QEMU_HOST_TAG),darwin-x86) + BUILD_SDL_FROM_SOURCES := false +endif +ifeq ($(BUILD_STANDALONE_EMULATOR),true) + BUILD_SDL_FROM_SOURCES := true +endif + +ifneq ($(SDL_CONFIG),) + BUILD_SDL_FROM_SOURCES := false +endif + +ifneq ($(BUILD_SDL_FROM_SOURCES),true) + +SDL_CONFIG ?= prebuilt/$(QEMU_HOST_TAG)/sdl/bin/sdl-config +SDL_CFLAGS := $(shell $(SDL_CONFIG) --cflags) + +# We need to filter out the _GNU_SOURCE variable because it breaks recent +# releases of Cygwin when using the -mno-cygwin option. Moreover, we don't +# need this macro at all to build the Android emulator. +SDL_CFLAGS := $(filter-out -D_GNU_SOURCE=1,$(SDL_CFLAGS)) +SDL_LDLIBS := $(filter-out %.a %.lib,$(shell $(SDL_CONFIG) --static-libs)) + +# Circular dependencies between libSDL and libSDLmain; +# We repeat the libraries in the final link to work around it. +SDL_STATIC_LIBRARIES := libSDL libSDLmain libSDL libSDLmain + +else # !BUILD_STANDALONE_EMULATOR + +SDL_DIR := distrib/sdl-1.2.12 +include $(LOCAL_PATH)/$(SDL_DIR)/sources.make + +endif # !BUILD_STANDALONE_EMULATOR + +############################################################################## +# determine audio sources, build the prebuilt audio-library if needed +# + +# determine AUDIO sources based on current configuration +# +AUDIO_SOURCES := audio.c noaudio.c wavaudio.c wavcapture.c mixeng.c +AUDIO_CFLAGS := -I$(LOCAL_PATH)/audio -DHAS_AUDIO +AUDIO_LDLIBS := + +ifeq ($(HOST_OS),darwin) + CONFIG_COREAUDIO ?= yes + AUDIO_CFLAGS += -DHOST_BSD=1 +endif + +ifeq ($(HOST_OS),windows) + CONFIG_WINAUDIO ?= yes +endif + +ifeq ($(HOST_OS),linux) + CONFIG_OSS ?= yes + CONFIG_ALSA ?= yes + CONFIG_PULSEAUDIO ?= yes + CONFIG_ESD ?= yes +endif + +ifeq ($(HOST_OS),freebsd) + CONFIG_OSS ?= yes +endif + +ifeq ($(CONFIG_COREAUDIO),yes) + AUDIO_SOURCES += coreaudio.c + AUDIO_CFLAGS += -DCONFIG_COREAUDIO + AUDIO_LDLIBS += -Wl,-framework,CoreAudio +endif + +ifeq ($(CONFIG_WINAUDIO),yes) + AUDIO_SOURCES += winaudio.c + AUDIO_CFLAGS += -DCONFIG_WINAUDIO +endif + +ifeq ($(CONFIG_PULSEAUDIO),yes) + AUDIO_SOURCES += paaudio.c audio_pt_int.c + AUDIO_CFLAGS += -DCONFIG_PULSEAUDIO +endif + +ifeq ($(CONFIG_ALSA),yes) + AUDIO_SOURCES += alsaaudio.c audio_pt_int.c + AUDIO_CFLAGS += -DCONFIG_ALSA +endif + +ifeq ($(CONFIG_ESD),yes) + AUDIO_SOURCES += esdaudio.c + AUDIO_CFLAGS += -DCONFIG_ESD +endif + +ifeq ($(CONFIG_OSS),yes) + AUDIO_SOURCES += ossaudio.c + AUDIO_CFLAGS += -DCONFIG_OSS +endif + +AUDIO_SOURCES := $(call sort,$(AUDIO_SOURCES:%=audio/%)) + +# determine whether we're going to use the prebuilt +# audio library (this is useful on Linux to avoid requiring +# all sound-related development packages to be installed on +# the build and developer machines). +# +# note that you can define BUILD_QEMU_AUDIO_LIB to true +# in your environment to force recompilation. +# +QEMU_AUDIO_LIB := + +ifneq ($(BUILD_STANDALONE_EMULATOR),true) + QEMU_AUDIO_LIB := $(wildcard \ + prebuilt/$(QEMU_HOST_TAG)/emulator/libqemu-audio.a) +endif + +ifeq ($(BUILD_QEMU_AUDIO_LIB),true) + include $(CLEAR_VARS) + LOCAL_NO_DEFAULT_COMPILER_FLAGS := true + LOCAL_CC := $(MY_CC) + LOCAL_MODULE := libqemu-audio + LOCAL_LDLIBS := $(MY_LDLIBS) + + LOCAL_CFLAGS := -Wno-sign-compare \ + -fno-strict-aliasing -W -Wall -Wno-unused-parameter \ + -I$(LOCAL_PATH) \ + -I$(LOCAL_PATH)/$(EMULATOR_TARGET_CPU) \ + -I$(LOCAL_PATH)/fpu \ + + # this is very important, otherwise the generated binaries may + # not link properly on our build servers + ifeq ($(HOST_OS),linux) + LOCAL_CFLAGS += -fno-stack-protector + endif + + LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) $(AUDIO_CFLAGS) + + LOCAL_CFLAGS += $(SDL_CFLAGS) + + LOCAL_SRC_FILES += $(AUDIO_SOURCES) + + include $(BUILD_HOST_STATIC_LIBRARY) + QEMU_AUDIO_LIB := $(LOCAL_BUILT_MODULE) + +endif # !QEMU_AUDIO_LIB + +############################################################################## +# Common CFLAGS for UI and Core builds + +# add the build ID to the default macro definitions +UI_AND_CORE_CFLAGS := -DANDROID_BUILD_ID="$(strip $(BUILD_ID))-$(strip $(BUILD_NUMBER))" + +# For non-standalone builds, extract the major version number from the Android SDK +# tools revision number. +ifneq ($(BUILD_STANDALONE_EMULATOR),true) + ANDROID_SDK_TOOLS_REVISION := $(shell awk -F= '/Pkg.Revision/ { print $$2; }' sdk/files/tools_source.properties) +endif + +ANDROID_SDK_TOOLS_REVISION := $(strip $(ANDROID_SDK_TOOLS_REVISION)) +ifdef ANDROID_SDK_TOOLS_REVISION + UI_AND_CORE_CFLAGS += -DANDROID_SDK_TOOLS_REVISION=$(ANDROID_SDK_TOOLS_REVISION) +endif + +UI_AND_CORE_CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE + + +############################################################################## +# Build emulator core library. +# This library contains "pure" emulation code separated from the intricacies +# of the UI. +# +include $(CLEAR_VARS) + +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_LDLIBS := $(MY_LDLIBS) +LOCAL_MODULE := emulator-core + +# don't remove the -fno-strict-aliasing, or you'll break things +# (e.g. slirp-android/network support) +# +EMULATOR_CORE_CFLAGS := -fno-PIC -Wno-sign-compare \ + -fno-strict-aliasing -g -W -Wall -Wno-unused-parameter + +# Needed by the upstream code +EMULATOR_CORE_CFLAGS += -DNEED_CPU_H + +# Common includes for the emulator +EMULATOR_CORE_CFLAGS += -I$(LOCAL_PATH)/ \ + -I$(LOCAL_PATH)/$(EMULATOR_TARGET_CPU) \ + -I$(LOCAL_PATH)/fpu \ + $(TCG_CFLAGS) \ + $(HW_CFLAGS) \ + +# Required by block.c, default value is empty in upstream +EMULATOR_CORE_CFLAGS += -DCONFIG_BDRV_WHITELIST="" + +# Required +EMULATOR_CORE_CFLAGS += -D_XOPEN_SOURCE=600 -D_BSD_SOURCE=1 +# include slirp-android code, i.e. the user-level networking stuff +# +SLIRP_SOURCES := bootp.c cksum.c debug.c if.c ip_icmp.c ip_input.c ip_output.c \ + mbuf.c misc.c sbuf.c slirp.c socket.c tcp_input.c tcp_output.c \ + tcp_subr.c tcp_timer.c tftp.c udp.c + +LOCAL_SRC_FILES += $(SLIRP_SOURCES:%=slirp-android/%) +EMULATOR_CORE_CFLAGS += -I$(LOCAL_PATH)/slirp-android + +# socket proxy support +# +PROXY_SOURCES := \ + proxy_common.c \ + proxy_http.c \ + proxy_http_connector.c \ + proxy_http_rewriter.c \ + +LOCAL_SRC_FILES += $(PROXY_SOURCES:%=proxy/%) +EMULATOR_CORE_CFLAGS += -I$(LOCAL_PATH)/proxy + +# include telephony stuff +# +TELEPHONY_SOURCES := android_modem.c modem_driver.c gsm.c sim_card.c sysdeps_qemu.c sms.c remote_call.c +LOCAL_SRC_FILES += $(TELEPHONY_SOURCES:%=telephony/%) +EMULATOR_CORE_CFLAGS += -I$(LOCAL_PATH)/telephony + +# include android related stuff +# +ANDROID_SOURCES := qemu-setup.c +LOCAL_SRC_FILES += $(ANDROID_SOURCES:%=android/%) + +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) $(EMULATOR_CORE_CFLAGS) +LOCAL_CFLAGS += $(UI_AND_CORE_CFLAGS) + +include $(BUILD_HOST_STATIC_LIBRARY) + +############################################################################## +# Build emulator UI library. +# This library contains some emulator related UI components. +# +include $(CLEAR_VARS) + +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_LDLIBS := $(MY_LDLIBS) +LOCAL_MODULE := emulator-uilib + +EMULATOR_UI_CFLAGS := + +# include the SDL sources +# + +# IMPORTANT: Normally, we should add SDLMAIN_SOURCES here, however this breaks +# the Linux mingw32 build. Apparently, the i586-mingw32-ld wants the +# implementation of _WinMain@16 to be in an object file on the final +# link command used to generate the executable, and will not search +# in the static libraries that are used to build it. +# +LOCAL_SRC_FILES += $(SDL_SOURCES) #$(SDLMAIN_SOURCES) +EMULATOR_UI_CFLAGS += $(SDL_CFLAGS) -I$(LOCAL_PATH)/$(SDL_DIR)/include + +# the skin support sources +# +SKIN_SOURCES := rect.c \ + region.c \ + image.c \ + trackball.c \ + keyboard.c \ + keyset.c \ + file.c \ + window.c \ + scaler.c \ + composer.c \ + surface.c \ + +LOCAL_SRC_FILES += $(SKIN_SOURCES:%=android/skin/%) +EMULATOR_UI_CFLAGS += -I$(LOCAL_PATH)/skin + +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) $(EMULATOR_CORE_CFLAGS) $(EMULATOR_UI_CFLAGS) + +LOCAL_MODULE_TAGS := debug + +include $(BUILD_HOST_STATIC_LIBRARY) + +############################################################################## +# lists of source files used to build the emulator core +# + +# block sources +# +CORE_BLOCK_SOURCES = block.c \ + blockdev.c \ + block/qcow.c \ + block/qcow2.c \ + block/qcow2-refcount.c \ + block/qcow2-snapshot.c \ + block/qcow2-cluster.c \ + block/cloop.c \ + block/dmg.c \ + block/vvfat.c \ + block/raw.c +ifeq ($(HOST_OS),windows) + CORE_BLOCK_SOURCES += block/raw-win32.c +else + CORE_BLOCK_SOURCES += block/raw-posix.c +endif + +# hw sources +# +ifeq ($(TARGET_ARCH),arm) +CORE_HW_SOURCES = hw/arm_boot.c \ + hw/android_arm.c +endif + +ifeq ($(TARGET_ARCH),x86) +CORE_HW_SOURCES = hw/pc.c +endif -# A useful function that can be used to start the declaration of a host -# module. Avoids repeating the same stuff again and again. -# Usage: +# migration sources # -# $(call start-emulator-library, <module-name>) +CORE_MIGRATION_SOURCES = iolooper-select.c +ifeq ($(HOST_OS),windows) + CORE_MIGRATION_SOURCES += migration-dummy-android.c +else + CORE_MIGRATION_SOURCES += migration.c \ + migration-exec.c \ + migration-tcp-android.c +endif + +# misc. sources # -# ... declarations +CORE_MISC_SOURCES = vl-android.c \ + async.c \ + console.c \ + qemu-malloc.c \ + cutils.c \ + osdep.c \ + loader.c \ + monitor.c \ + readline.c \ + qemu-char-android.c \ + outputchannel.c \ + qemu-error.c \ + qerror.c \ + disas.c \ + aes.c \ + d3des.c \ + vnc-android.c \ + acl.c \ + keymaps.c \ + buffered_file.c \ + cbuffer.c \ + gdbstub.c \ + input.c \ + ioport.c \ + notify.c \ + path.c \ + shaper.c \ + charpipe.c \ + tcpdump.c \ + qemu-option.c \ + savevm.c \ + net-android.c \ + aio-android.c \ + dma-helpers.c \ + qemu-config.c \ + qemu-sockets-android.c \ + bt-host.c \ + bt-vhci.c \ + module.c \ + qemu-timer.c \ + android/boot-properties.c \ + android/hw-kmsg.c \ + android/hw-lcd.c \ + android/gps.c \ + android/hw-events.c \ + android/hw-control.c \ + android/console.c \ + android/hw-sensors.c \ + android/hw-qemud.c \ + android/core-init-utils.c \ + android/config.c \ + android/snapshot.c \ + android/utils/timezone.c \ + +ifeq ($(TARGET_ARCH),arm) + CORE_MISC_SOURCES += arm-dis.c +endif + +ifeq ($(HOST_ARCH),x86) + CORE_MISC_SOURCES += i386-dis.c +endif +ifeq ($(HOST_ARCH),x86_64) + CORE_MISC_SOURCES += i386-dis.c +endif +ifeq ($(HOST_ARCH),ppc) + CORE_MISC_SOURCES += ppc-dis.c \ + cache-utils.c +endif + +ifeq ($(HOST_OS),linux) + CORE_MISC_SOURCES += usb-linux.c \ + qemu-thread.c +else + CORE_MISC_SOURCES += usb-dummy-android.c +endif + +ifeq ($(HOST_OS),windows) + CORE_MISC_SOURCES += tap-win32.c +else + CORE_MISC_SOURCES += posix-aio-compat.c +endif + +# sources inherited from upstream, but not fully +# integrated into android emulator # -# $(call end-emulator-library) +CORE_UPSTREAM_SOURCES = json-lexer.c \ + json-parser.c \ + json-streamer.c \ + qjson.c \ + qbool.c \ + qdict.c \ + qfloat.c \ + qint.c \ + qlist.c \ + qstring.c \ + + +CORE_SOURCES = $(CORE_BLOCK_SOURCES) $(CORE_HW_SOURCES) +CORE_SOURCES += $(CORE_MIGRATION_SOURCES) $(CORE_MISC_SOURCES) +CORE_SOURCES += $(CORE_UPSTREAM_SOURCES) + +CORE_SOURCES += android/audio-test.c + +############################################################################## +# lists of source files used to build the emulator UI # -start-emulator-library = \ - $(eval include $(CLEAR_VARS)) \ - $(eval LOCAL_NO_DEFAULT_COMPILER_FLAGS := true) \ - $(eval LOCAL_CC := $(MY_CC)) \ - $(eval LOCAL_CXX := $(MY_CXX)) \ - $(eval LOCAL_CFLAGS := $(MY_CFLAGS)) \ - $(eval LOCAL_LDLIBS := $(MY_LDLIBS)) \ - $(eval LOCAL_MODULE_TAGS := debug) \ - $(eval LOCAL_MODULE := $1) -# Used with start-emulator-library -end-emulator-library = \ - $(eval include $(BUILD_HOST_STATIC_LIBRARY)) +UI_SOURCES = loadpng.c \ + android/user-config.c \ + android/resource.c \ + android/qemulator.c \ + android/keycode.c \ + android/help.c \ + android/avd/info.c \ + +############################################################################## +# lists of source files used by both, emulator UI and emulator core +# -# A variant of start-emulator-library to start the definition of a host -# program instead. Use with end-emulator-program -start-emulator-program = $(call start-emulator-library,$1) +UI_AND_CORE_SOURCES = \ + sockets.c \ + android/keycode-array.c \ + android/charmap.c \ + android/async-utils.c \ + android/sync-utils.c \ + android/async-console.c \ + android/utils/assert.c \ + android/utils/bufprint.c \ + android/utils/debug.c \ + android/utils/path.c \ + android/utils/dirscanner.c \ + android/utils/filelock.c \ + android/utils/mapfile.c \ + android/utils/misc.c \ + android/utils/panic.c \ + android/utils/reflist.c \ + android/utils/refset.c \ + android/utils/stralloc.c \ + android/utils/system.c \ + android/utils/tempfile.c \ + android/utils/vector.c \ + android/avd/hw-config.c \ + android/utils/ini.c \ -# A varient of end-emulator-library for host programs instead -end-emulator-program = \ - $(eval LOCAL_LDLIBS += $(QEMU_SYSTEM_LDLIBS)) \ - $(eval include $(BUILD_HOST_EXECUTABLE)) +# include the Zlib sources +# +UI_AND_CORE_SOURCES += $(ZLIB_SOURCES) +UI_AND_CORE_CFLAGS += $(ZLIB_CFLAGS) -I$(LOCAL_PATH)/$(ZLIB_DIR) +# include the Libpng sources +# +UI_AND_CORE_SOURCES += $(LIBPNG_SOURCES) +UI_AND_CORE_CFLAGS += $(LIBPNG_CFLAGS) -I$(LOCAL_PATH)/$(LIBPNG_DIR) # The common libraries # @@ -192,28 +890,471 @@ ifeq ($(HOST_OS),darwin) QEMU_SYSTEM_LDLIBS += -Wl,-framework,Cocoa endif -include $(LOCAL_PATH)/Makefile.common -# corresponding to the product's target architecture. +############################################################################## +# now build the emulator itself +# +include $(CLEAR_VARS) + +LOCAL_GENERATED_SOURCES := +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_MODULE := emulator +ifeq ($(TARGET_ARCH),arm) +LOCAL_STATIC_LIBRARIES := emulator-memcheck emulator-hw emulator-arm emulator-tcg +endif +ifeq ($(TARGET_ARCH),x86) +LOCAL_STATIC_LIBRARIES := emulator-memcheck emulator-hw emulator-i386 emulator-tcg +endif +LOCAL_STATIC_LIBRARIES += emulator-elff +LOCAL_STATIC_LIBRARIES += emulator-core emulator-uilib +LOCAL_LDLIBS := $(MY_LDLIBS) + +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) $(EMULATOR_CORE_CFLAGS) $(EMULATOR_UI_CFLAGS) + +# add the build ID to the default macro definitions +LOCAL_CFLAGS += $(UI_AND_CORE_CFLAGS) + +# include sound support source files. we first try to see if we have a prebuilt audio +# library. if not, we build things the "hard" way. +# +# note that to generate the prebuilt audio library, you should do the following: +# +# cd tools/qemu +# ./android-rebuild.sh +# distrib/update-audio.sh +# +ifeq ($(QEMU_AUDIO_LIB),) + LOCAL_SRC_FILES += $(AUDIO_SOURCES) +endif # !QEMU_AUDIO_LIB + +LOCAL_CFLAGS += $(AUDIO_CFLAGS) +LOCAL_LDLIBS += $(AUDIO_LDLIBS) + +# the linux-user sources, I doubt we really need these +# +#LINUX_SOURCES := main.c elfload.c mmap.c signal.c path.c syscall.c +#LOCAL_SRC_FILES += $(LINUX_SOURCES:%=linux-user/%) + +ifeq ($(HOST_ARCH),x86) +# enable MMX code for our skin scaler +LOCAL_CFLAGS += -DUSE_MMX=1 -mmmx -DNEED_CPU_H +endif + +# include other sources +# +VL_SOURCES := android/framebuffer.c \ + user-events-qemu.c \ + android/cmdline-option.c \ + android/display.c \ + android/looper-qemu.c \ + android/protocol/ui-commands-qemu.c \ + android/protocol/core-commands-qemu.c \ + android/main-common.c \ + android/main.c \ + +# Add common system libraries +# +LOCAL_LDLIBS += $(QEMU_SYSTEM_LDLIBS) + +LOCAL_SRC_FILES += $(VL_SOURCES) $(CORE_SOURCES) $(UI_SOURCES) $(UI_AND_CORE_SOURCES) + +# add SDL-specific flags +# +LOCAL_CFLAGS += $(SDL_CFLAGS) +LOCAL_LDLIBS += $(SDL_LDLIBS) +LOCAL_STATIC_LIBRARIES += $(SDL_STATIC_LIBRARIES) + +# add ELFF-specific flags +# +LOCAL_LDLIBS += $(ELFF_LDLIBS) + +# on Windows, link the icon file as well into the executable +# unfortunately, our build system doesn't help us much, so we need +# to use some weird pathnames to make this work... +# +ifeq ($(HOST_OS),windows) + +# Locate windres executable +WINDRES := windres +ifneq ($(USE_MINGW),) + # When building the Windows emulator under Linux, use the MinGW one + WINDRES := i586-mingw32msvc-windres +endif + +INTERMEDIATE := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),true) +ANDROID_ICON_OBJ := android_icon.o +ANDROID_ICON_PATH := $(LOCAL_PATH)/images +$(ANDROID_ICON_PATH)/$(ANDROID_ICON_OBJ): $(ANDROID_ICON_PATH)/android_icon.rc + $(WINDRES) $< -I $(ANDROID_ICON_PATH) -o $@ + +# seems to be the only way to add an object file that was not generated from +# a C/C++/Java source file to our build system. and very unfortunately, +# $(TOPDIR)/$(LOCALPATH) will always be prepended to this value, which forces +# us to put the object file in the source directory... +# +LOCAL_PREBUILT_OBJ_FILES += images/$(ANDROID_ICON_OBJ) +endif + +# qemu-options.h is generated from qemu-options.hx with the "hxtool" shell script +# +intermediates := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),true) + +QEMU_OPTIONS_H := $(intermediates)/qemu-options.h +$(QEMU_OPTIONS_H): PRIVATE_PATH := $(LOCAL_PATH) +$(QEMU_OPTIONS_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/hxtool -h < $< > $@ +$(QEMU_OPTIONS_H): $(LOCAL_PATH)/qemu-options.hx $(LOCAL_PATH)/hxtool + $(transform-generated-source) + +$(intermediates)/vl-android.o: $(QEMU_OPTIONS_H) + +LOCAL_GENERATED_SOURCES += $(QEMU_OPTIONS_H) + +# qemu-monitor.h is generated from qemu-monitor.hx with the "hxtool" shell script +# +intermediates := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),true) +QEMU_MONITOR_H := $(intermediates)/qemu-monitor.h +$(QEMU_MONITOR_H): PRIVATE_PATH := $(LOCAL_PATH) +$(QEMU_MONITOR_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/hxtool -h < $< > $@ +$(QEMU_MONITOR_H): $(LOCAL_PATH)/qemu-monitor.hx $(LOCAL_PATH)/hxtool + $(transform-generated-source) + +$(intermediates)/vl-android.o: $(QEMU_MONITOR_H) + +LOCAL_GENERATED_SOURCES += $(QEMU_MONITOR_H) + + +# gdbstub-xml.c contains C-compilable arrays corresponding to the content +# of $(LOCAL_PATH)/gdb-xml/, and is generated with the 'feature_to_c.sh' script. +# +ifeq ($(QEMU_TARGET_XML_SOURCES),) + QEMU_TARGET_XML_SOURCES := arm-core arm-neon arm-vfp arm-vfp3 + QEMU_TARGET_XML_SOURCES := $(QEMU_TARGET_XML_SOURCES:%=$(LOCAL_PATH)/gdb-xml/%.xml) +endif + +QEMU_GDBSTUB_XML_C := $(intermediates)/gdbstub-xml.c +$(QEMU_GDBSTUB_XML_C): PRIVATE_PATH := $(LOCAL_PATH) +$(QEMU_GDBSTUB_XML_C): PRIVATE_SOURCES := $(TARGET_XML_SOURCES) +$(QEMU_GDBSTUB_XML_C): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/feature_to_c.sh $@ $(QEMU_TARGET_XML_SOURCES) +$(QEMU_GDBSTUB_XML_C): $(QEMU_TARGET_XML_SOURCES) $(LOCAL_PATH)/feature_to_c.sh + $(hide) rm -f $@ + $(transform-generated-source) + +$(intermediates)/vl-android.o: $(QEMU_GDBSTUB_XML_C) + +LOCAL_GENERATED_SOURCES += $(QEMU_GDBSTUB_XML_C) + +# hw-config-defs.h is generated from android/avd/hardware-properties.ini +# +QEMU_HARDWARE_PROPERTIES_INI := $(LOCAL_PATH)/android/avd/hardware-properties.ini +QEMU_HW_CONFIG_DEFS_H := $(LOCAL_PATH)/android/avd/hw-config-defs.h +$(QEMU_HW_CONFIG_DEFS_H): PRIVATE_PATH := $(LOCAL_PATH) +$(QEMU_HW_CONFIG_DEFS_H): PRIVATE_SOURCES := $(QEMU_HARDWARE_PROPERTIES_INI) +$(QEMU_HW_CONFIG_DEFS_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/android/tools/gen-hw-config.py $(QEMU_HARDWARE_PROPERTIES_INI) $@ +$(QEMU_HW_CONFIG_DEFS_H): $(QEMU_HARDWARE_PROPERTIES_INI) $(LOCAL_PATH)/android/tools/gen-hw-config.py + $(hide) rm -f $@ + $(transform-generated-source) + +$(LOCAL_PATH)/android/avd/hw-config.h: $(QEMU_HW_CONFIG_DEFS_H) + +LOCAL_GENERATED_SOURCES += $(QEMU_HW_CONFIG_DEFS_H) + +# this is already done by the Android build system, but is done for the +# benefit of the stand-alone one. +# ifeq ($(BUILD_STANDALONE_EMULATOR),true) - # For standalone builds, we want to build all variants of the emulator - # binaries. This makes it easier to catch target-specific regressions - # during emulator development. - EMULATOR_TARGET_ARCH := arm - include $(LOCAL_PATH)/Makefile.target + LOCAL_CFLAGS += -I$(intermediates) +endif - EMULATOR_TARGET_ARCH := x86 - include $(LOCAL_PATH)/Makefile.target +LOCAL_LDLIBS += $(QEMU_AUDIO_LIB) -else # !BUILD_STANDALONE_EMULATOR +# Generate a completely static executable if needed. +# Note that this means no sound and graphics on Linux. +# +ifeq ($(CONFIG_STATIC_EXECUTABLE),true) + LOCAL_SRC_FILES += dynlink-static.c + LOCAL_LDLIBS += -static +endif + +LOCAL_MODULE := emulator + +# See comment about SDLMAIN_SOURCES in the 'emulator-uilib' module declarations. +LOCAL_SRC_FILES += $(SDLMAIN_SOURCES) + +include $(BUILD_HOST_EXECUTABLE) + +############################################################################## +# Build standalone emulator core. +# +include $(CLEAR_VARS) + +LOCAL_GENERATED_SOURCES := +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_MODULE := qemu-android-$(TARGET_ARCH) +ifeq ($(TARGET_ARCH),arm) +LOCAL_STATIC_LIBRARIES := emulator-memcheck emulator-hw emulator-arm emulator-tcg +endif +ifeq ($(TARGET_ARCH),x86) +LOCAL_STATIC_LIBRARIES := emulator-memcheck emulator-hw emulator-i386 emulator-tcg +endif + +LOCAL_STATIC_LIBRARIES += emulator-elff +LOCAL_STATIC_LIBRARIES += emulator-core +LOCAL_LDLIBS := $(MY_LDLIBS) + +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) $(EMULATOR_CORE_CFLAGS) +LOCAL_CFLAGS += $(UI_AND_CORE_CFLAGS) -DCONFIG_STANDALONE_CORE + +# include sound support source files. we first try to see if we have a prebuilt audio +# library. if not, we build things the "hard" way. +# +# note that to generate the prebuilt audio library, you should do the following: +# +# cd tools/qemu +# ./android-rebuild.sh +# distrib/update-audio.sh +# +ifeq ($(QEMU_AUDIO_LIB),) + LOCAL_SRC_FILES += $(AUDIO_SOURCES) +endif # !QEMU_AUDIO_LIB + +LOCAL_CFLAGS += $(AUDIO_CFLAGS) +LOCAL_LDLIBS += $(AUDIO_LDLIBS) + +# the linux-user sources, I doubt we really need these +# +#LINUX_SOURCES := main.c elfload.c mmap.c signal.c path.c syscall.c +#LOCAL_SRC_FILES += $(LINUX_SOURCES:%=linux-user/%) + +# include other sources +# +VL_SOURCES := android/framebuffer.c \ + user-events-qemu.c \ + android/looper-qemu.c \ + android/looper-generic.c \ + android/display-core.c \ + android/protocol/attach-ui-proxy.c \ + android/protocol/fb-updates-proxy.c \ + android/protocol/user-events-impl.c \ + android/protocol/ui-commands-proxy.c \ + android/protocol/core-commands-impl.c \ + +# Add common system libraries +# +LOCAL_LDLIBS += $(QEMU_SYSTEM_LDLIBS) + +LOCAL_SRC_FILES += $(VL_SOURCES) $(CORE_SOURCES) $(UI_AND_CORE_SOURCES) + +# add ELFF-specific flags +# +LOCAL_LDLIBS += $(ELFF_LDLIBS) + +# on Windows, link the icon file as well into the executable +# unfortunately, our build system doesn't help us much, so we need +# to use some weird pathnames to make this work... +# +ifeq ($(HOST_OS),windows) + +# Locate windres executable +WINDRES := windres +ifneq ($(USE_MINGW),) + # When building the Windows emulator under Linux, use the MinGW one + WINDRES := i586-mingw32msvc-windres +endif + +INTERMEDIATE := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),true) +ANDROID_ICON_OBJ := android_icon.o +ANDROID_ICON_PATH := $(LOCAL_PATH)/images +$(ANDROID_ICON_PATH)/$(ANDROID_ICON_OBJ): $(ANDROID_ICON_PATH)/android_icon.rc + $(WINDRES) $< -I $(ANDROID_ICON_PATH) -o $@ + +# seems to be the only way to add an object file that was not generated from +# a C/C++/Java source file to our build system. and very unfortunately, +# $(TOPDIR)/$(LOCALPATH) will always be prepended to this value, which forces +# us to put the object file in the source directory... +# +LOCAL_PREBUILT_OBJ_FILES += images/$(ANDROID_ICON_OBJ) +endif + +# qemu-options.h is generated from qemu-options.hx with the "hxtool" shell script +# +intermediates := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),true) + +QEMU_OPTIONS_H := $(intermediates)/qemu-options.h +$(QEMU_OPTIONS_H): PRIVATE_PATH := $(LOCAL_PATH) +$(QEMU_OPTIONS_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/hxtool -h < $< > $@ +$(QEMU_OPTIONS_H): $(LOCAL_PATH)/qemu-options.hx $(LOCAL_PATH)/hxtool + $(transform-generated-source) + +$(intermediates)/vl-android.o: $(QEMU_OPTIONS_H) + +LOCAL_GENERATED_SOURCES += $(QEMU_OPTIONS_H) + +# qemu-monitor.h is generated from qemu-monitor.hx with the "hxtool" shell script +# +intermediates := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),true) + +QEMU_MONITOR_H := $(intermediates)/qemu-monitor.h +$(QEMU_MONITOR_H): PRIVATE_PATH := $(LOCAL_PATH) +$(QEMU_MONITOR_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/hxtool -h < $< > $@ +$(QEMU_MONITOR_H): $(LOCAL_PATH)/qemu-monitor.hx $(LOCAL_PATH)/hxtool + $(transform-generated-source) + +$(intermediates)/vl-android.o: $(QEMU_MONITOR_H) + +LOCAL_GENERATED_SOURCES += $(QEMU_MONITOR_H) + + +# gdbstub-xml.c contains C-compilable arrays corresponding to the content +# of $(LOCAL_PATH)/gdb-xml/, and is generated with the 'feature_to_c.sh' script. +# +ifeq ($(QEMU_TARGET_XML_SOURCES),) + QEMU_TARGET_XML_SOURCES := arm-core arm-neon arm-vfp arm-vfp3 + QEMU_TARGET_XML_SOURCES := $(QEMU_TARGET_XML_SOURCES:%=$(LOCAL_PATH)/gdb-xml/%.xml) +endif + +QEMU_GDBSTUB_XML_C := $(intermediates)/gdbstub-xml.c +$(QEMU_GDBSTUB_XML_C): PRIVATE_PATH := $(LOCAL_PATH) +$(QEMU_GDBSTUB_XML_C): PRIVATE_SOURCES := $(TARGET_XML_SOURCES) +$(QEMU_GDBSTUB_XML_C): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/feature_to_c.sh $@ $(QEMU_TARGET_XML_SOURCES) +$(QEMU_GDBSTUB_XML_C): $(QEMU_TARGET_XML_SOURCES) $(LOCAL_PATH)/feature_to_c.sh + $(hide) rm -f $@ + $(transform-generated-source) + +$(intermediates)/vl-android.o: $(QEMU_GDBSTUB_XML_C) + +LOCAL_GENERATED_SOURCES += $(QEMU_GDBSTUB_XML_C) + +# this is already done by the Android build system, but is done for the +# benefit of the stand-alone one. +# +ifeq ($(BUILD_STANDALONE_EMULATOR),true) + LOCAL_CFLAGS += -I$(intermediates) +endif + +# other flags +ifneq ($(HOST_OS),windows) + LOCAL_LDLIBS += -ldl +endif + +LOCAL_LDLIBS += $(QEMU_AUDIO_LIB) + +ifeq ($(HOST_OS),darwin) + FRAMEWORKS := OpenGL Cocoa QuickTime ApplicationServices Carbon IOKit + LOCAL_LDLIBS += $(FRAMEWORKS:%=-Wl,-framework,%) +endif + +# Generate a completely static executable if needed. +# Note that this means no sound and graphics on Linux. +# +ifeq ($(CONFIG_STATIC_EXECUTABLE),true) + LOCAL_SRC_FILES += dynlink-static.c + LOCAL_LDLIBS += -static +endif + +LOCAL_MODULE_TAGS := debug + +include $(BUILD_HOST_EXECUTABLE) + +############################################################################## +# now build the emulator UI +# +include $(CLEAR_VARS) + +LOCAL_GENERATED_SOURCES := +LOCAL_NO_DEFAULT_COMPILER_FLAGS := true +LOCAL_CC := $(MY_CC) +LOCAL_MODULE := emulator-ui +LOCAL_STATIC_LIBRARIES := emulator-uilib +LOCAL_LDLIBS := $(MY_LDLIBS) + +LOCAL_CFLAGS := $(MY_CFLAGS) $(LOCAL_CFLAGS) $(EMULATOR_UI_CFLAGS) $(EMULATOR_CORE_CFLAGS) + +# add the build ID to the default macro definitions +LOCAL_CFLAGS += $(UI_AND_CORE_CFLAGS) -DCONFIG_STANDALONE_UI + +ifeq ($(HOST_ARCH),x86) +# enable MMX code for our skin scaler +LOCAL_CFLAGS += -DUSE_MMX=1 -mmmx +endif + +# include other sources +# +VL_SOURCES := android/framebuffer.c \ + android/cmdline-option.c \ + android/config.c \ + android/looper-generic.c \ + android/snapshot.c \ + android/main-common.c \ + android/main-ui.c \ + vl-android-ui.c \ + iolooper-select.c \ + android/protocol/core-connection.c \ + android/protocol/attach-ui-impl.c \ + android/protocol/fb-updates-impl.c \ + android/protocol/ui-commands-impl.c \ + android/protocol/core-commands-proxy.c \ + android/protocol/user-events-proxy.c \ + +# Add common system libraries +# +LOCAL_LDLIBS += $(QEMU_SYSTEM_LDLIBS) + +LOCAL_SRC_FILES += $(VL_SOURCES) $(UI_SOURCES) $(UI_AND_CORE_SOURCES) + +# add SDL-specific flags +# +LOCAL_CFLAGS += $(SDL_CFLAGS) +LOCAL_LDLIBS += $(SDL_LDLIBS) +LOCAL_STATIC_LIBRARIES += $(SDL_STATIC_LIBRARIES) + +# on Windows, link the icon file as well into the executable +# unfortunately, our build system doesn't help us much, so we need +# to use some weird pathnames to make this work... +# +ifeq ($(HOST_OS),windows) + +# Locate windres executable +WINDRES := windres +ifneq ($(USE_MINGW),) + # When building the Windows emulator under Linux, use the MinGW one + WINDRES := i586-mingw32msvc-windres +endif + +INTERMEDIATE := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),true) +ANDROID_ICON_OBJ := android_icon.o +ANDROID_ICON_PATH := $(LOCAL_PATH)/images +$(ANDROID_ICON_PATH)/$(ANDROID_ICON_OBJ): $(ANDROID_ICON_PATH)/android_icon.rc + $(WINDRES) $< -I $(ANDROID_ICON_PATH) -o $@ + +# seems to be the only way to add an object file that was not generated from +# a C/C++/Java source file to our build system. and very unfortunately, +# $(TOPDIR)/$(LOCALPATH) will always be prepended to this value, which forces +# us to put the object file in the source directory... +# +LOCAL_PREBUILT_OBJ_FILES += images/$(ANDROID_ICON_OBJ) +endif + +# this is already done by the Android build system, but is done for the +# benefit of the stand-alone one. +# +ifeq ($(BUILD_STANDALONE_EMULATOR),true) + LOCAL_CFLAGS += -I$(intermediates) +endif + +# Generate a completely static executable if needed. +# Note that this means no sound and graphics on Linux. +# +ifeq ($(CONFIG_STATIC_EXECUTABLE),true) + LOCAL_SRC_FILES += dynlink-static.c + LOCAL_LDLIBS += -static +endif - # On the other hand, for platform builds, only build the binaries - # corresponding to the build product's target architecture. - # - EMULATOR_TARGET_ARCH := $(TARGET_ARCH) - include $(LOCAL_PATH)/Makefile.target +# See comment about SDLMAIN_SOURCES in the 'emulator-uilib' module declarations. +LOCAL_SRC_FILES += $(SDLMAIN_SOURCES) -endif # !BUILD_STANDALONE_EMULATOR +include $(BUILD_HOST_EXECUTABLE) endif # TARGET_ARCH == arm || TARGET_ARCH == x86 diff --git a/Makefile.common b/Makefile.common deleted file mode 100644 index 72e2824..0000000 --- a/Makefile.common +++ /dev/null @@ -1,592 +0,0 @@ -# When building this project, we actually generate several components which -# are the following: -# -# - the emulator-ui program (which is target-agnostic) -# - the target-specific qemu-android-$ARCH programs (headless emulation engines) -# - the "standalone" emulator programs (embed both UI and engine in a single -# binary and process), i.e. "emulator" for ARM and "emulator-x86" for x86. -# -# This file defines static host libraries that will be used by at least two -# of these components. -# - -############################################################################## -############################################################################## -### -### emulator-common: LIBRARY OF COMMON FUNCTIONS -### -### THESE ARE POTENTIALLY USED BY ALL COMPONENTS -### - -$(call start-emulator-library, emulator-common) - -EMULATOR_COMMON_CFLAGS := - -# Needed by everything about the host -EMULATOR_COMMON_CFLAGS += \ - -I$(LOCAL_PATH)/android/config/$(HOST_PREBUILT_TAG) - -# add the build ID to the default macro definitions -ifeq ($(BUILD_STANDALONE_EMULATOR),) -EMULATOR_COMMON_CFLAGS += -DANDROID_BUILD_ID="$(strip $(BUILD_ID))-$(strip $(BUILD_NUMBER))" -endif - -# For non-standalone builds, extract the major version number from the Android SDK -# tools revision number. -ifneq ($(BUILD_STANDALONE_EMULATOR),true) - ANDROID_SDK_TOOLS_REVISION := $(shell awk -F= '/Pkg.Revision/ { print $$2; }' sdk/files/tools_source.properties) -endif - -ANDROID_SDK_TOOLS_REVISION := $(strip $(ANDROID_SDK_TOOLS_REVISION)) -ifdef ANDROID_SDK_TOOLS_REVISION - EMULATOR_COMMON_CFLAGS += -DANDROID_SDK_TOOLS_REVISION=$(ANDROID_SDK_TOOLS_REVISION) -endif - -# Enable large-file support (i.e. make off_t a 64-bit value) -ifeq ($(HOST_OS),linux) -EMULATOR_COMMON_CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -endif - -########################################################### -# Zlib sources -# -ZLIB_DIR := distrib/zlib-1.2.3 -include $(LOCAL_PATH)/$(ZLIB_DIR)/sources.make -EMULATOR_COMMON_CFLAGS += -I$(LOCAL_PATH)/$(ZLIB_DIR) - -LOCAL_SRC_FILES += $(ZLIB_SOURCES) - -########################################################### -# Android utility functions -# -LOCAL_SRC_FILES += \ - sockets.c \ - iolooper-select.c \ - android/async-console.c \ - android/async-utils.c \ - android/charmap.c \ - android/framebuffer.c \ - android/keycode-array.c \ - android/avd/hw-config.c \ - android/avd/info.c \ - android/sync-utils.c \ - android/utils/assert.c \ - android/utils/bufprint.c \ - android/utils/debug.c \ - android/utils/dirscanner.c \ - android/utils/filelock.c \ - android/utils/ini.c \ - android/utils/mapfile.c \ - android/utils/misc.c \ - android/utils/panic.c \ - android/utils/path.c \ - android/utils/reflist.c \ - android/utils/refset.c \ - android/utils/stralloc.c \ - android/utils/system.c \ - android/utils/tempfile.c \ - android/utils/vector.c \ - -# qemu-options.h is generated from qemu-options.hx with the "hxtool" shell script -# -intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,$(LOCAL_MODULE),true) - -QEMU_OPTIONS_H := $(intermediates)/qemu-options.h -$(QEMU_OPTIONS_H): PRIVATE_PATH := $(LOCAL_PATH) -$(QEMU_OPTIONS_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/hxtool -h < $< > $@ -$(QEMU_OPTIONS_H): $(LOCAL_PATH)/qemu-options.hx $(LOCAL_PATH)/hxtool - $(transform-generated-source) - -LOCAL_GENERATED_SOURCES += $(QEMU_OPTIONS_H) - -LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS) - -$(call end-emulator-library) - -############################################################################## -############################################################################## -### -### emulator-libui: LIBRARY OF UI-RELATED FUNCTIONS -### -### THESE ARE USED BY 'emulator-ui' AND THE STANDALONE PROGRAMS -### - -$(call start-emulator-library, emulator-libui) - -EMULATOR_LIBUI_CFLAGS := - -LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS) - -########################################################### -# Libpng configuration -# -LIBPNG_DIR := distrib/libpng-1.2.19 -include $(LOCAL_PATH)/$(LIBPNG_DIR)/sources.make - -EMULATOR_LIBUI_CFLAGS += \ - $(LIBPNG_CFLAGS) \ - -I$(LOCAL_PATH)/$(LIBPNG_DIR) - -LOCAL_SRC_FILES += $(LIBPNG_SOURCES) loadpng.c - -############################################################################## -# SDL-related definitions -# - -SDL_DIR := distrib/sdl-1.2.12 -include $(LOCAL_PATH)/$(SDL_DIR)/sources.make -LOCAL_SRC_FILES += $(SDL_SOURCES) -EMULATOR_LIBUI_CFLAGS += \ - $(SDL_CFLAGS) \ - -I$(LOCAL_PATH)/android/config/$(HOST_PREBUILT_TAG) \ - -I$(LOCAL_PATH)/$(SDL_DIR)/include - -EMULATOR_LIBUI_LDLIBS += $(SDL_LDLIBS) - -# The following is needed by SDL_LoadObject -ifneq ($(HOST_OS),windows) - EMULATOR_LIBUI_LDLIBS += -ldl -endif - -# the skin support sources -# -SKIN_SOURCES := rect.c \ - region.c \ - image.c \ - trackball.c \ - keyboard.c \ - keyset.c \ - file.c \ - window.c \ - scaler.c \ - composer.c \ - surface.c \ - -LOCAL_SRC_FILES += $(SKIN_SOURCES:%=android/skin/%) - -LOCAL_SRC_FILES += \ - android/user-config.c \ - android/resource.c \ - android/qemulator.c \ - android/keycode.c \ - -# enable MMX code for our skin scaler -ifeq ($(HOST_ARCH),x86) -LOCAL_CFLAGS += -DUSE_MMX=1 -mmmx -endif - -LOCAL_CFLAGS += $(EMULATOR_LIBUI_CFLAGS) - -$(call end-emulator-library) - -############################################################################## -############################################################################## -### -### emulator-libqemu: TARGET-INDEPENDENT QEMU FUNCTIONS -### -### THESE ARE USED BY EVERYTHING EXCEPT 'emulator-ui' -### - -$(call start-emulator-library, emulator-libqemu) - -EMULATOR_LIBQEMU_CFLAGS := - -LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS) - -AUDIO_SOURCES := noaudio.c wavaudio.c wavcapture.c mixeng.c -AUDIO_CFLAGS := -I$(LOCAL_PATH)/audio -DHAS_AUDIO -AUDIO_LDLIBS := - -LOCAL_CFLAGS += -Wall -Wno-missing-field-initializers - -ifeq ($(HOST_OS),darwin) - CONFIG_COREAUDIO ?= yes - AUDIO_CFLAGS += -DHOST_BSD=1 -endif - -ifeq ($(HOST_OS),windows) - CONFIG_WINAUDIO ?= yes -endif - -ifeq ($(HOST_OS),linux) - CONFIG_OSS ?= yes - CONFIG_ALSA ?= yes - CONFIG_PULSEAUDIO ?= yes - CONFIG_ESD ?= yes -endif - -ifeq ($(HOST_OS),freebsd) - CONFIG_OSS ?= yes -endif - -ifeq ($(CONFIG_COREAUDIO),yes) - AUDIO_SOURCES += coreaudio.c - AUDIO_CFLAGS += -DCONFIG_COREAUDIO - AUDIO_LDLIBS += -Wl,-framework,CoreAudio -endif - -ifeq ($(CONFIG_WINAUDIO),yes) - AUDIO_SOURCES += winaudio.c - AUDIO_CFLAGS += -DCONFIG_WINAUDIO -endif - -ifeq ($(CONFIG_PULSEAUDIO),yes) - AUDIO_SOURCES += paaudio.c audio_pt_int.c - AUDIO_CFLAGS += -DCONFIG_PULSEAUDIO -endif - -ifeq ($(CONFIG_ALSA),yes) - AUDIO_SOURCES += alsaaudio.c audio_pt_int.c - AUDIO_CFLAGS += -DCONFIG_ALSA -endif - -ifeq ($(CONFIG_ESD),yes) - AUDIO_SOURCES += esdaudio.c - AUDIO_CFLAGS += -DCONFIG_ESD -endif - -ifeq ($(CONFIG_OSS),yes) - AUDIO_SOURCES += ossaudio.c - AUDIO_CFLAGS += -DCONFIG_OSS -endif - -AUDIO_SOURCES := $(call sort,$(AUDIO_SOURCES:%=audio/%)) - -LOCAL_CFLAGS += -Wno-sign-compare \ - -fno-strict-aliasing -W -Wall -Wno-unused-parameter \ - -# this is very important, otherwise the generated binaries may -# not link properly on our build servers -ifeq ($(HOST_OS),linux) -LOCAL_CFLAGS += -fno-stack-protector -endif - -LOCAL_SRC_FILES += $(AUDIO_SOURCES) -LOCAL_SRC_FILES += \ - android/audio-test.c - -# other flags -ifneq ($(HOST_OS),windows) - AUDIO_LDLIBS += -ldl -else -endif - - -EMULATOR_LIBQEMU_CFLAGS += $(AUDIO_CFLAGS) -EMULATOR_LIBQEMU_LDLIBS += $(AUDIO_LDLIBS) - -LOCAL_CFLAGS += -Wno-missing-field-initializers - -# migration sources -# -ifeq ($(HOST_OS),windows) - LOCAL_SRC_FILES += migration-dummy-android.c -else - LOCAL_SRC_FILES += migration.c \ - migration-exec.c \ - migration-tcp-android.c -endif - -# misc. sources -# -CORE_MISC_SOURCES = \ - acl.c \ - aes.c \ - aio-android.c \ - async.c \ - bt-host.c \ - bt-vhci.c \ - buffered_file.c \ - cbuffer.c \ - charpipe.c \ - console.c \ - cutils.c \ - d3des.c \ - input.c \ - ioport.c \ - module.c \ - net-android.c \ - notify.c \ - osdep.c \ - outputchannel.c \ - path.c \ - qemu-char-android.c \ - qemu-config.c \ - qemu-error.c \ - qemu-malloc.c \ - qemu-option.c \ - qemu-sockets-android.c \ - qerror.c \ - readline.c \ - savevm.c \ - shaper.c \ - tcpdump.c \ - vnc-android.c \ - android/boot-properties.c \ - android/config.c \ - android/core-init-utils.c \ - android/gps.c \ - android/hw-kmsg.c \ - android/hw-lcd.c \ - android/hw-events.c \ - android/hw-control.c \ - android/hw-sensors.c \ - android/hw-qemud.c \ - android/looper-qemu.c \ - android/qemu-setup.c \ - android/snapshot.c \ - android/utils/timezone.c \ - -ifeq ($(HOST_ARCH),x86) - CORE_MISC_SOURCES += i386-dis.c -endif -ifeq ($(HOST_ARCH),x86_64) - CORE_MISC_SOURCES += i386-dis.c -endif -ifeq ($(HOST_ARCH),ppc) - CORE_MISC_SOURCES += ppc-dis.c \ - cache-utils.c -endif - -ifeq ($(HOST_OS),linux) - CORE_MISC_SOURCES += usb-linux.c \ - qemu-thread.c -else - CORE_MISC_SOURCES += usb-dummy-android.c -endif - -ifeq ($(HOST_OS),windows) - CORE_MISC_SOURCES += tap-win32.c -else - CORE_MISC_SOURCES += posix-aio-compat.c -endif - -LOCAL_SRC_FILES += $(CORE_MISC_SOURCES) - -# Required -LOCAL_CFLAGS += -D_XOPEN_SOURCE=600 -D_BSD_SOURCE=1 - -SLIRP_SOURCES := \ - bootp.c \ - cksum.c \ - debug.c \ - if.c \ - ip_icmp.c \ - ip_input.c \ - ip_output.c \ - mbuf.c \ - misc.c \ - sbuf.c \ - slirp.c \ - socket.c \ - tcp_input.c \ - tcp_output.c \ - tcp_subr.c \ - tcp_timer.c \ - tftp.c \ - udp.c - -LOCAL_SRC_FILES += $(SLIRP_SOURCES:%=slirp-android/%) -EMULATOR_LIBQEMU_CFLAGS += -I$(LOCAL_PATH)/slirp-android - -# socket proxy support -# -PROXY_SOURCES := \ - proxy_common.c \ - proxy_http.c \ - proxy_http_connector.c \ - proxy_http_rewriter.c \ - -LOCAL_SRC_FILES += $(PROXY_SOURCES:%=proxy/%) -EMULATOR_LIBQEMU_CFLAGS += -I$(LOCAL_PATH)/proxy - -# include telephony stuff -# -TELEPHONY_SOURCES := \ - android_modem.c \ - modem_driver.c \ - gsm.c \ - sim_card.c \ - sysdeps_qemu.c \ - sms.c \ - remote_call.c - -LOCAL_SRC_FILES += $(TELEPHONY_SOURCES:%=telephony/%) -EMULATOR_LIBQEMU_CFLAGS += -I$(LOCAL_PATH)/telephony - -# sources inherited from upstream, but not fully -# integrated into android emulator -# -LOCAL_SRC_FILES += \ - json-lexer.c \ - json-parser.c \ - json-streamer.c \ - qjson.c \ - qbool.c \ - qdict.c \ - qfloat.c \ - qint.c \ - qlist.c \ - qstring.c \ - -# qemu-options.h is generated from qemu-options.hx with the "hxtool" shell script -# -intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,$(LOCAL_MODULE),true) - -QEMU_OPTIONS_H := $(intermediates)/qemu-options.h -$(QEMU_OPTIONS_H): PRIVATE_PATH := $(LOCAL_PATH) -$(QEMU_OPTIONS_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/hxtool -h < $< > $@ -$(QEMU_OPTIONS_H): $(LOCAL_PATH)/qemu-options.hx $(LOCAL_PATH)/hxtool - $(transform-generated-source) - -# qemu-monitor.h is generated from qemu-monitor.hx with the "hxtool" shell script -# -intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,$(LOCAL_MODULE),true) - -QEMU_MONITOR_H := $(intermediates)/qemu-monitor.h -$(QEMU_MONITOR_H): PRIVATE_PATH := $(LOCAL_PATH) -$(QEMU_MONITOR_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/hxtool -h < $< > $@ -$(QEMU_MONITOR_H): $(LOCAL_PATH)/qemu-monitor.hx $(LOCAL_PATH)/hxtool - $(transform-generated-source) - -# hw-config-defs.h is generated from android/avd/hardware-properties.ini -# -QEMU_HARDWARE_PROPERTIES_INI := $(LOCAL_PATH)/android/avd/hardware-properties.ini -QEMU_HW_CONFIG_DEFS_H := $(LOCAL_PATH)/android/avd/hw-config-defs.h -$(QEMU_HW_CONFIG_DEFS_H): PRIVATE_PATH := $(LOCAL_PATH) -$(QEMU_HW_CONFIG_DEFS_H): PRIVATE_SOURCES := $(QEMU_HARDWARE_PROPERTIES_INI) -$(QEMU_HW_CONFIG_DEFS_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/android/tools/gen-hw-config.py $(QEMU_HARDWARE_PROPERTIES_INI) $@ -$(QEMU_HW_CONFIG_DEFS_H): $(QEMU_HARDWARE_PROPERTIES_INI) $(LOCAL_PATH)/android/tools/gen-hw-config.py - $(hide) rm -f $@ - $(transform-generated-source) - -$(LOCAL_PATH)/android/avd/hw-config.h: $(QEMU_HW_CONFIG_DEFS_H) - -# gdbstub-xml.c contains C-compilable arrays corresponding to the content -# of $(LOCAL_PATH)/gdb-xml/, and is generated with the 'feature_to_c.sh' script. -# -intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,$(LOCAL_MODULE),true) - -ifeq ($(QEMU_TARGET_XML_SOURCES),) - QEMU_TARGET_XML_SOURCES := arm-core arm-neon arm-vfp arm-vfp3 - QEMU_TARGET_XML_SOURCES := $(QEMU_TARGET_XML_SOURCES:%=$(LOCAL_PATH)/gdb-xml/%.xml) -endif - -QEMU_GDBSTUB_XML_C := $(intermediates)/gdbstub-xml.c -$(QEMU_GDBSTUB_XML_C): PRIVATE_PATH := $(LOCAL_PATH) -$(QEMU_GDBSTUB_XML_C): PRIVATE_SOURCES := $(TARGET_XML_SOURCES) -$(QEMU_GDBSTUB_XML_C): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/feature_to_c.sh $@ $(QEMU_TARGET_XML_SOURCES) -$(QEMU_GDBSTUB_XML_C): $(QEMU_TARGET_XML_SOURCES) $(LOCAL_PATH)/feature_to_c.sh - $(hide) rm -f $@ - $(transform-generated-source) - -LOCAL_GENERATED_SOURCES += $(QEMU_GDBSTUB_XML_C) - -EMULATOR_LIBQEMU_CFLAGS += -I$(intermediates) - -LOCAL_CFLAGS += $(EMULATOR_LIBQEMU_CFLAGS) - -$(call end-emulator-library) - -# Block sources, we must compile them with each executable because they -# are only referenced by the rest of the code using constructor functions. -# If their object files are put in a static library, these are never compiled -# into the final linked executable that uses them. -# -# Normally, one would solve thus using LOCAL_WHOLE_STATIC_LIBRARIES, but -# the Darwin linker doesn't support -Wl,--whole-archive or equivalent :-( -# -BLOCK_SOURCES += \ - block.c \ - blockdev.c \ - block/qcow.c \ - block/qcow2.c \ - block/qcow2-refcount.c \ - block/qcow2-snapshot.c \ - block/qcow2-cluster.c \ - block/cloop.c \ - block/dmg.c \ - block/vvfat.c \ - block/raw.c - -ifeq ($(HOST_OS),windows) - BLOCK_SOURCES += block/raw-win32.c -else - BLOCK_SOURCES += block/raw-posix.c -endif - -BLOCK_CFLAGS += $(EMULATOR_COMMON_CFLAGS) -BLOCK_CFLAGS += -DCONFIG_BDRV_WHITELIST="" - - -############################################################################## -############################################################################## -### -### emulator-libelff: TARGET-INDEPENDENT ELF/DWARD PARSER -### -### THESE ARE USED BY EVERYTHING EXCEPT 'emulator-ui', BUT WE CANNOT PUT -### THEM IN emulator-libqemu SINCE THE SOURCES ARE C++ -### - -$(call start-emulator-library, emulator-libelff) - -LOCAL_CPP_EXTENSION := .cc - -ELFF_CFLAGS := -I$(LOCAL_PATH)/elff -ELFF_LDLIBS := -lstdc++ - -ELFF_SOURCES := \ - dwarf_cu.cc \ - dwarf_die.cc \ - dwarf_utils.cc \ - elf_alloc.cc \ - elf_file.cc \ - elf_mapped_section.cc \ - elff_api.cc \ - -LOCAL_SRC_FILES += $(ELFF_SOURCES:%=elff/%) - -LOCAL_CFLAGS += \ - -fno-exceptions \ - $(ELFF_CFLAGS) \ - -$(call end-emulator-library) - -############################################################################## -############################################################################## -### -### emulator-ui: UI FRONT-END PROGRAM -### -### -$(call start-emulator-program, emulator-ui) - -LOCAL_STATIC_LIBRARIES := \ - emulator-common \ - emulator-libui \ - emulator-common \ - - -LOCAL_CFLAGS += -DCONFIG_STANDALONE_UI=1 - -LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS) $(EMULATOR_LIBUI_CFLAGS) -LOCAL_LDLIBS += $(EMULATOR_COMMON_LDLIBS) $(EMULATOR_LIBUI_LDLIBS) - -LOCAL_SRC_FILES := \ - android/cmdline-option.c \ - android/config.c \ - android/help.c \ - android/looper-generic.c \ - android/snapshot.c \ - android/main-common.c \ - android/main-ui.c \ - vl-android-ui.c \ - android/protocol/core-connection.c \ - android/protocol/attach-ui-impl.c \ - android/protocol/fb-updates-impl.c \ - android/protocol/ui-commands-impl.c \ - android/protocol/core-commands-proxy.c \ - android/protocol/user-events-proxy.c \ - -LOCAL_SRC_FILES += $(SDLMAIN_SOURCES) - -$(call end-emulator-program) diff --git a/Makefile.target b/Makefile.target deleted file mode 100644 index 57533c3..0000000 --- a/Makefile.target +++ /dev/null @@ -1,352 +0,0 @@ -# This file is included several times to build target-specific -# modules for the Android emulator. It will be called several times -# (e.g. once for the arm target, and once for the x86 target). -# - -ifndef EMULATOR_TARGET_ARCH -$(error EMULATOR_TARGET_ARCH is not defined!) -endif - -EMULATOR_TARGET_CPU := $(EMULATOR_TARGET_ARCH) -ifeq ($(EMULATOR_TARGET_CPU),x86) - EMULATOR_TARGET_CPU := i386 -endif - -############################################################################## -############################################################################## -### -### emulator-target-$CPU: Code generator depends on the target CPU -### -### - -# Common compiler flags for all target-dependent libraries -EMULATOR_TARGET_CFLAGS := \ - -I$(LOCAL_PATH)/android/config/$(HOST_PREBUILT_TAG) \ - -I$(LOCAL_PATH)/android/config/target-$(EMULATOR_TARGET_ARCH) \ - -I$(LOCAL_PATH)/target-$(EMULATOR_TARGET_CPU) \ - -I$(LOCAL_PATH)/fpu \ - -DNEED_CPU_H \ - -TCG_TARGET := $(HOST_ARCH) -ifeq ($(TCG_TARGET),x86) - TCG_TARGET := i386 -endif - -EMULATOR_TARGET_CFLAGS += \ - -I$(LOCAL_PATH)/tcg \ - -I$(LOCAL_PATH)/tcg/$(TCG_TARGET) - - -$(call start-emulator-library, emulator-target-$(EMULATOR_TARGET_CPU)) - -# The following is to ensure that "config.h" will map to a target-specific -# configuration file header. -LOCAL_CFLAGS += $(EMULATOR_TARGET_CFLAGS) - -LOCAL_SRC_FILES += \ - tcg/tcg.c \ - -############################################################################## -# Emulated hardware devices. -# - -HW_SOURCES := \ - bt.c \ - bt-hci.c \ - bt-hid.c \ - bt-l2cap.c \ - bt-sdp.c \ - cdrom.c \ - dma.c \ - irq.c \ - goldfish_device.c \ - goldfish_events_device.c \ - goldfish_fb.c \ - goldfish_battery.c \ - goldfish_mmc.c \ - goldfish_memlog.c \ - goldfish_nand.c \ - goldfish_tty.c \ - msmouse.c \ - pci.c \ - qdev.c \ - scsi-disk.c \ - sysbus.c \ - usb-hid.c \ - usb-hub.c \ - usb-msd.c \ - usb-ohci.c \ - usb.c \ - watchdog.c - -ifeq ($(EMULATOR_TARGET_ARCH),arm) -HW_SOURCES += android_arm.c \ - arm_pic.c \ - goldfish_audio.c \ - goldfish_interrupt.c \ - goldfish_switch.c \ - goldfish_timer.c \ - goldfish_trace.c \ - arm_boot.c \ - -# The following sources must be compiled with the final executables -# because they contain device_init() or machine_init() statements. -HW_OBJ_SOURCES := hw/smc91c111.c -HW_OBJ_CFLAGS := $(EMULATOR_TARGET_CFLAGS) - -LOCAL_SRC_FILES += arm-dis.c - -# smc91c111.c requires <zlib.h> -LOCAL_CFLAGS += $(ZLIB_CFLAGS) -endif - -ifeq ($(EMULATOR_TARGET_ARCH),x86) -HW_SOURCES += \ - apic.c \ - i8259.c \ - mc146818rtc.c \ - piix_pci.c \ - i8254.c \ - pckbd.c \ - ioapic.c \ - ps2.c \ - smbios.c \ - fw_cfg.c - -# The following sources must be compiled with the final executables -# because they contain device_init() or machine_init() statements. -HW_OBJ_SOURCES := \ - hw/ne2000.c \ - hw/pc.c - -HW_OBJ_CFLAGS := $(EMULATOR_TARGET_CFLAGS) - -endif - -LOCAL_SRC_FILES += $(HW_SOURCES:%=hw/%) - -LOCAL_SRC_FILES += \ - exec.c \ - cpu-exec.c \ - translate-all.c \ - trace.c \ - varint.c \ - dcache.c \ - softmmu_outside_jit.c \ - -############################################################################## -# CPU-specific emulation. -# -LOCAL_CFLAGS += -fno-PIC -fomit-frame-pointer -Wno-sign-compare - -ifeq ($(HOST_ARCH),ppc) - LOCAL_CFLAGS += -D__powerpc__ -endif - -ifeq ($(EMULATOR_TARGET_ARCH),arm) -LOCAL_SRC_FILES += \ - target-arm/op_helper.c \ - target-arm/iwmmxt_helper.c \ - target-arm/neon_helper.c \ - target-arm/helper.c \ - target-arm/translate.c \ - target-arm/machine.c \ - hw/armv7m.c \ - hw/armv7m_nvic.c \ - arm-semi.c \ - -LOCAL_SRC_FILES += fpu/softfloat.c -endif - -ifeq ($(EMULATOR_TARGET_ARCH), x86) -LOCAL_SRC_FILES += \ - target-i386/op_helper.c \ - target-i386/helper.c \ - target-i386/translate.c \ - target-i386/machine.c \ - -LOCAL_SRC_FILES += fpu/softfloat-native.c -endif - -############################################################################## -# Memory-access checking support. -# Memory access checker uses information collected by instrumented code in -# libc.so in order to keep track of memory blocks allocated from heap. Memory -# checker then uses this information to make sure that every access to allocated -# memory is within allocated block. This information also allows detecting -# memory leaks and attempts to free/realloc invalid pointers. -# -LOCAL_CFLAGS += \ - -I$(LOCAL_PATH)/memcheck \ - -I$(LOCAL_PATH)/elff - -MCHK_SOURCES := \ - memcheck.c \ - memcheck_proc_management.c \ - memcheck_malloc_map.c \ - memcheck_mmrange_map.c \ - memcheck_util.c \ - -LOCAL_SRC_FILES += $(MCHK_SOURCES:%=memcheck/%) - - -$(call end-emulator-library) - -############################################################################## -############################################################################## -### -### qemu-android-$CPU: headless emulator core program -### -### -$(call start-emulator-program, qemu-android-$(EMULATOR_TARGET_ARCH)) - -LOCAL_CFLAGS += \ - $(EMULATOR_COMMON_CFLAGS) \ - $(ELFF_CFLAGS) \ - $(EMULATOR_LIBQEMU_CFLAGS) \ - $(EMULATOR_TARGET_CFLAGS) \ - -DCONFIG_STANDALONE_CORE \ - -DTARGET_ARCH=\"$(EMULATOR_TARGET_ARCH)\" - -LOCAL_CFLAGS += -Wno-missing-field-initializers - - -LOCAL_STATIC_LIBRARIES := \ - emulator-libqemu \ - emulator-target-$(EMULATOR_TARGET_CPU) \ - emulator-libelff \ - emulator-common \ - - -LOCAL_LDLIBS += \ - $(EMULATOR_COMMON_LDLIBS) \ - $(EMULATOR_LIBQEMU_LDLIBS) \ - $(ELFF_LDLIBS) \ - -LOCAL_SRC_FILES := \ - audio/audio.c \ - disas.c \ - dma-helpers.c \ - gdbstub.c \ - keymaps.c \ - loader.c \ - monitor.c \ - qemu-timer.c \ - user-events-qemu.c \ - vl-android.c \ - android/cmdline-option.c \ - android/console.c \ - android/display-core.c \ - android/help.c \ - android/protocol/attach-ui-proxy.c \ - android/protocol/fb-updates-proxy.c \ - android/protocol/user-events-impl.c \ - android/protocol/ui-commands-proxy.c \ - android/protocol/core-commands-impl.c \ - android/protocol/core-commands-qemu.c \ - -intermediates := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),true) -$(intermediates)/vl-android.o: $(QEMU_OPTIONS_H) -$(intermediates)/monitor.o: $(QEMU_MONITOR_H) - -ifeq ($(HOST_OS),darwin) - FRAMEWORKS := OpenGL Cocoa QuickTime ApplicationServices Carbon IOKit - LOCAL_LDLIBS += $(FRAMEWORKS:%=-Wl,-framework,%) -endif - -# Generate a completely static executable if needed. -# Note that this means no sound and graphics on Linux. -# -ifeq ($(CONFIG_STATIC_EXECUTABLE),true) - LOCAL_SRC_FILES += dynlink-static.c - LOCAL_LDLIBS += -static -endif - -# The following files cannot be in static libraries because they contain -# constructor functions that are otherwise stripped by the final linker -LOCAL_SRC_FILES += $(HW_OBJ_SOURCES) -LOCAL_CFLAGS += $(HW_OBJ_CFLAGS) - -LOCAL_SRC_FILES += $(BLOCK_SOURCES) -LOCAL_CFLAGS += $(BLOCK_CFLAGS) - -LOCAL_MODULE_TAGS := debug - -$(call end-emulator-program) - -############################################################################## -############################################################################## -### -### emulator-$ARCH: Standalone emulator program -### -### - -# Special case, "emulator-arm" is named "emulator" for now. -ifeq ($(EMULATOR_TARGET_ARCH),arm) -$(call start-emulator-program, emulator) -else -$(call start-emulator-program, emulator-$(EMULATOR_TARGET_ARCH)) -endif - -LOCAL_STATIC_LIBRARIES := \ - emulator-libui \ - emulator-libqemu \ - emulator-target-$(EMULATOR_TARGET_CPU) \ - emulator-libelff \ - emulator-common \ - -LOCAL_LDLIBS += \ - $(EMULATOR_COMMON_LDLIBS) \ - $(EMULATOR_LIBQEMU_LDLIBS) \ - $(EMULATOR_LIBUI_LDLIBS) \ - $(ELFF_LDLIBS) \ - -LOCAL_CFLAGS += \ - $(EMULATOR_TARGET_CFLAGS) \ - $(EMULATOR_COMMON_CFLAGS) \ - $(EMULATOR_LIBQEMU_CFLAGS) \ - $(EMULATOR_LIBUI_CFLAGS) - -LOCAL_CFLAGS += -DTARGET_ARCH=\"$(EMULATOR_TARGET_ARCH)\" - -LOCAL_SRC_FILES := \ - audio/audio.c \ - disas.c \ - dma-helpers.c \ - gdbstub.c \ - keymaps.c \ - loader.c \ - monitor.c \ - qemu-timer.c \ - user-events-qemu.c \ - vl-android.c \ - android/cmdline-option.c \ - android/console.c \ - android/display.c \ - android/display-core.c \ - android/help.c \ - android/main-common.c \ - android/main.c \ - android/protocol/core-commands-qemu.c \ - android/protocol/ui-commands-qemu.c \ - android/ - -# The following files cannot be in static libraries because they contain -# constructor functions that are otherwise stripped by the final linker -LOCAL_SRC_FILES += $(HW_OBJ_SOURCES) -LOCAL_CFLAGS += $(HW_OBJ_CFLAGS) - -LOCAL_SRC_FILES += $(BLOCK_SOURCES) -LOCAL_CFLAGS += $(BLOCK_CFLAGS) - -LOCAL_SRC_FILES += $(SDLMAIN_SOURCES) - -# Generate a completely static executable if needed. -# Note that this means no sound and graphics on Linux. -# -ifeq ($(CONFIG_STATIC_EXECUTABLE),true) - LOCAL_SRC_FILES += dynlink-static.c - LOCAL_LDLIBS += -static -endif - -$(call end-emulator-program) diff --git a/android/avd/info.c b/android/avd/info.c index dc53849..3d91a30 100644 --- a/android/avd/info.c +++ b/android/avd/info.c @@ -124,7 +124,6 @@ struct AvdInfo { char inAndroidBuild; char* androidOut; char* androidBuildRoot; - char* targetArch; /* for the normal virtual device case */ char* deviceName; @@ -559,7 +558,7 @@ imageLoader_empty( ImageLoader* l, unsigned flags ) } -/* copy image file from a given source +/* copy image file from a given source * assumes locking is needed. */ static void @@ -607,7 +606,7 @@ imageLoader_load( ImageLoader* l, /* set image state */ l->pState[0] = (flags & IMAGE_DONT_LOCK) == 0 - ? IMAGE_STATE_MUSTLOCK + ? IMAGE_STATE_MUSTLOCK : IMAGE_STATE_READONLY; /* check user-provided path */ @@ -652,7 +651,7 @@ imageLoader_load( ImageLoader* l, if (flags & IMAGE_REQUIRED) { AvdInfo* i = l->info; - derror("could not find required %s image (%s).", + derror("could not find required %s image (%s).", l->imageText, l->imageFile); if (i->inAndroidBuild) { @@ -1191,8 +1190,14 @@ _getBuildImagePaths( AvdInfo* i, AvdInfoParams* params ) if ( !imageLoader_load( l, IMAGE_OPTIONAL | IMAGE_DONT_LOCK ) ) { - p = bufprint(temp, end, "%s/prebuilt/android-%s/kernel/kernel-qemu", - i->androidBuildRoot, i->targetArch); +#ifdef TARGET_ARM +#define PREBUILT_KERNEL_PATH "prebuilt/android-arm/kernel/kernel-qemu" +#endif +#ifdef TARGET_I386 +#define PREBUILT_KERNEL_PATH "prebuilt/android-x86/kernel/kernel-qemu" +#endif + p = bufprint(temp, end, "%s/%s", i->androidBuildRoot, + PREBUILT_KERNEL_PATH); if (p >= end || !path_exists(temp)) { derror("bad workspace: cannot find prebuilt kernel in: %s", temp); exit(1); @@ -1275,7 +1280,7 @@ _getBuildImagePaths( AvdInfo* i, AvdInfoParams* params ) /* if the user provided one cache image, lock & use it */ if ( params->forcePaths[l->id] != NULL ) { - imageLoader_load(l, IMAGE_REQUIRED | + imageLoader_load(l, IMAGE_REQUIRED | IMAGE_IGNORE_IF_LOCKED); } } @@ -1393,7 +1398,6 @@ _getBuildHardwareIni( AvdInfo* i ) AvdInfo* avdInfo_newForAndroidBuild( const char* androidBuildRoot, const char* androidOut, - const char* targetArch, AvdInfoParams* params ) { AvdInfo* i; @@ -1404,7 +1408,6 @@ avdInfo_newForAndroidBuild( const char* androidBuildRoot, i->androidBuildRoot = ASTRDUP(androidBuildRoot); i->androidOut = ASTRDUP(androidOut); i->contentPath = ASTRDUP(androidOut); - i->targetArch = ASTRDUP(targetArch); /* TODO: find a way to provide better information from the build files */ i->deviceName = ASTRDUP("<build>"); diff --git a/android/avd/info.h b/android/avd/info.h index 1a65355..2b2899f 100644 --- a/android/avd/info.h +++ b/android/avd/info.h @@ -126,7 +126,6 @@ AvdInfo* avdInfo_new( const char* name, AvdInfoParams* params ); */ AvdInfo* avdInfo_newForAndroidBuild( const char* androidBuildRoot, const char* androidOut, - const char* targetArch, AvdInfoParams* params ); /* Frees an AvdInfo object and the corresponding strings that may be diff --git a/android/cmdline-options.h b/android/cmdline-options.h index 70e5f6c..273d151 100644 --- a/android/cmdline-options.h +++ b/android/cmdline-options.h @@ -131,9 +131,7 @@ OPT_FLAG( version, "display emulator version number" ) OPT_PARAM( report_console, "<socket>", "report console port to remote socket" ) OPT_PARAM( gps, "<device>", "redirect NMEA GPS to character device" ) -#ifndef CONFIG_STANDALONE_CORE OPT_PARAM( keyset, "<name>", "specify keyset file name" ) -#endif OPT_PARAM( shell_serial, "<device>", "specific character device for root shell" ) OPT_FLAG ( old_system, "support old (pre 1.4) system images" ) OPT_PARAM( tcpdump, "<file>", "capture network packets to file" ) diff --git a/android/config/config.h b/android/config/config.h index e07cc2c..fdfbe31 100644 --- a/android/config/config.h +++ b/android/config/config.h @@ -1,9 +1,4 @@ -/* This file is included by target-specific files under - * android/config/target-$ARCH/config.h, but contains all config - * definitions that are independent of the target CPU. - * - * Do not include directly. - */ +/* Automatically generated by configure - do not modify */ #include "config-host.h" #define TARGET_PHYS_ADDR_BITS 32 @@ -16,4 +11,13 @@ #define CONFIG_NAND_LIMITS 1 #endif #define CONFIG_ANDROID_SNAPSHOTS 1 -#define CONFIG_MEMCHECK 1 + +#ifdef ARCH_FLAGS_x86 +#define TARGET_ARCH "x86" +#define TARGET_I386 1 +#else +#define TARGET_ARCH "arm" +#define TARGET_ARM 1 +#define CONFIG_SOFTFLOAT 1 +#endif + diff --git a/android/config/target-arm/config.h b/android/config/target-arm/config.h deleted file mode 100644 index d6da04f..0000000 --- a/android/config/target-arm/config.h +++ /dev/null @@ -1,5 +0,0 @@ -/* ARM-specific configuration */ -#include "android/config/config.h" - -#define TARGET_ARM 1 -#define CONFIG_SOFTFLOAT 1 diff --git a/android/config/target-x86/config.h b/android/config/target-x86/config.h deleted file mode 100644 index ea31c39..0000000 --- a/android/config/target-x86/config.h +++ /dev/null @@ -1,3 +0,0 @@ -/* x86-specific configuration */ -#include "android/config/config.h" -#define TARGET_I386 1 diff --git a/android/help.c b/android/help.c index a2180ef..7df6704 100644 --- a/android/help.c +++ b/android/help.c @@ -213,7 +213,6 @@ help_disk_images( stralloc_t* out ) datadir ); } -#ifndef CONFIG_STANDALONE_CORE static void help_keys(stralloc_t* out) { @@ -254,7 +253,7 @@ help_keys(stralloc_t* out) PRINTF( "\n" ); PRINTF( " note that NumLock must be deactivated for keypad keys to work\n\n" ); } -#endif /* !CONFIG_STANDALONE_CORE */ + static void help_environment(stralloc_t* out) @@ -286,7 +285,7 @@ help_environment(stralloc_t* out) ); } -#ifndef CONFIG_STANDALONE_CORE + static void help_keyset_file(stralloc_t* out) { @@ -356,7 +355,7 @@ help_keyset_file(stralloc_t* out) "\n" ); } -#endif /* !CONFIG_STANDALONE_CORE */ + static void help_debug_tags(stralloc_t* out) @@ -1305,7 +1304,6 @@ help_gps(stralloc_t* out) } -#ifndef CONFIG_STANDALONE_CORE static void help_keyset(stralloc_t* out) { @@ -1345,7 +1343,6 @@ help_keyset(stralloc_t* out) "\n" ); } -#endif /* !CONFIG_STANDALONE_CORE */ static void help_old_system(stralloc_t* out) @@ -1497,15 +1494,11 @@ typedef struct { static const TopicHelp topic_help[] = { { "disk-images", "about disk images", help_disk_images }, -#ifndef CONFIG_STANDALONE_CORE { "keys", "supported key bindings", help_keys }, -#endif { "debug-tags", "debug tags for -debug <tags>", help_debug_tags }, { "char-devices", "character <device> specification", help_char_devices }, { "environment", "environment variables", help_environment }, -#ifndef CONFIG_STANDALONE_CORE { "keyset-file", "key bindings configuration file", help_keyset_file }, -#endif { "virtual-device", "virtual device management", help_virtual_device }, { "sdk-images", "about disk images when using the SDK", help_sdk_images }, { "build-images", "about disk images when building Android", help_build_images }, diff --git a/android/main-common.c b/android/main-common.c index 3c8b320..bb07943 100644 --- a/android/main-common.c +++ b/android/main-common.c @@ -19,16 +19,8 @@ #include <process.h> #endif -#ifndef CONFIG_STANDALONE_CORE #include <SDL.h> #include <SDL_syswm.h> -#include "android/qemulator.h" -#include "android/skin/image.h" -#include "android/skin/trackball.h" -#include "android/skin/keyboard.h" -#include "android/skin/file.h" -#include "android/skin/window.h" -#endif #include "console.h" @@ -39,7 +31,13 @@ #include "android/globals.h" #include "android/resource.h" #include "android/user-config.h" +#include "android/qemulator.h" #include "android/display.h" +#include "android/skin/image.h" +#include "android/skin/trackball.h" +#include "android/skin/keyboard.h" +#include "android/skin/file.h" +#include "android/skin/window.h" @@ -56,20 +54,6 @@ /*** CONFIGURATION ***/ -#ifdef CONFIG_STANDALONE_CORE - -void -user_config_init( void ) -{ -} - -/* only call this function on normal exits, so that ^C doesn't save the configuration */ -void -user_config_done( void ) -{ -} - -#else /* !CONFIG_STANDALONE_CORE */ static AUserConfig* userConfig; void @@ -102,7 +86,6 @@ user_config_get_window_pos( int *window_x, int *window_y ) if (userConfig) auserConfig_getWindowPos(userConfig, window_x, window_y); } -#endif /* !CONFIG_STANDALONE_CORE */ unsigned convertBytesToMB( uint64_t size ) { @@ -122,7 +105,6 @@ uint64_t convertMBToBytes( unsigned megaBytes ) } -#ifndef CONFIG_STANDALONE_CORE /***********************************************************************/ /***********************************************************************/ /***** *****/ @@ -217,7 +199,7 @@ write_default_keyset( void ) } } -#endif /* !CONFIG_STANDALONE_CORE */ + /***********************************************************************/ /***********************************************************************/ @@ -227,8 +209,6 @@ write_default_keyset( void ) /***********************************************************************/ /***********************************************************************/ -#ifndef CONFIG_STANDALONE_CORE - void *readpng(const unsigned char* base, size_t size, unsigned *_width, unsigned *_height); #ifdef CONFIG_DARWIN @@ -289,19 +269,15 @@ sdl_set_window_icon( void ) } } -#ifndef CONFIG_STANDALONE_CORE SDL_Surface* icon = sdl_surface_from_argb32( icon_pixels, icon_w, icon_h ); if (icon != NULL) { SDL_WM_SetIcon(icon, NULL); SDL_FreeSurface(icon); free( icon_pixels ); } -#endif - #endif /* !_WIN32 */ } } -#endif /* !CONFIG_STANDALONE_CORE */ /***********************************************************************/ /***********************************************************************/ @@ -314,7 +290,7 @@ sdl_set_window_icon( void ) const char* skin_network_speed = NULL; const char* skin_network_delay = NULL; -#ifndef CONFIG_STANDALONE_CORE + static void sdl_at_exit(void) { user_config_done(); @@ -343,7 +319,6 @@ void sdl_display_init(DisplayState *ds, int full_screen, int no_frame) android_display_init(ds, qframebuffer_fifo_get()); #endif } -#endif /* list of skin aliases */ static const struct { @@ -487,26 +462,6 @@ DEFAULT_SKIN: } -#ifdef CONFIG_STANDALONE_CORE -void -init_sdl_ui(AConfig* skinConfig, - const char* skinPath, - AndroidOptions* opts) -{ - signal(SIGINT, SIG_DFL); -#ifndef _WIN32 - signal(SIGQUIT, SIG_DFL); - /* prevent SIGTTIN and SIGTTOUT from stopping us. this is necessary to be - * able to run the emulator in the background (e.g. "emulator &"). - * despite the fact that the emulator should not grab input or try to - * write to the output in normal cases, we're stopped on some systems - * (e.g. OS X) - */ - signal(SIGTTIN, SIG_IGN); - signal(SIGTTOU, SIG_IGN); -#endif -} -#else /* !CONFIG_STANDALONE_CORE */ void init_sdl_ui(AConfig* skinConfig, const char* skinPath, @@ -581,7 +536,6 @@ init_sdl_ui(AConfig* skinConfig, qemulator_get()->onion_rotation = rotate; } } -#endif /* !CONFIG_STANDALONE_CORE */ int64_t get_screen_pixels(AConfig* skinConfig) { diff --git a/android/main-ui.c b/android/main-ui.c index c31cfef..ca83a9a 100644 --- a/android/main-ui.c +++ b/android/main-ui.c @@ -812,7 +812,6 @@ int main(int argc, char **argv) android_avdInfo = avdInfo_newForAndroidBuild( android_build_root, android_build_out, - "arm", android_avdParams ); if(android_avdInfo == NULL) { diff --git a/android/main.c b/android/main.c index 15adaf4..919810b 100644 --- a/android/main.c +++ b/android/main.c @@ -26,11 +26,8 @@ #include "console.h" #include "user-events.h" -#ifndef CONFIG_STANDALONE_CORE #include <SDL.h> #include <SDL_syswm.h> -#include "android/qemulator.h" -#endif #include "math.h" @@ -51,6 +48,7 @@ #include "android/globals.h" +#include "android/qemulator.h" #include "android/display.h" #include "android/snapshot.h" @@ -262,7 +260,7 @@ _adjustPartitionSize( const char* description, if (imageMB > defaultMB) { snprintf(temp, sizeof temp, "(%d MB > %d MB)", imageMB, defaultMB); } else { - snprintf(temp, sizeof temp, "(%" PRUd64" bytes > %" PRUd64" bytes)", imageBytes, defaultBytes); + snprintf(temp, sizeof temp, "(%lld bytes > %lld bytes)", imageBytes, defaultBytes); } if (inAndroidBuild) { @@ -605,7 +603,6 @@ int main(int argc, char **argv) android_avdInfo = avdInfo_newForAndroidBuild( android_build_root, android_build_out, - TARGET_ARCH, android_avdParams ); if(android_avdInfo == NULL) { @@ -634,7 +631,6 @@ int main(int argc, char **argv) exit(1); } -#ifndef CONFIG_STANDALONE_CORE if (opts->keyset) { parse_keyset(opts->keyset, opts); if (!android_keyset) { @@ -657,7 +653,6 @@ int main(int argc, char **argv) write_default_keyset(); } } -#endif /* !CONFIG_STANDALONE_CORE */ if (opts->shared_net_id) { char* end; @@ -1095,7 +1090,7 @@ int main(int argc, char **argv) } /* Pass LCD density value to the core. */ - snprintf(lcd_density, sizeof(lcd_density), "%d", hw->hw_lcd_density); + snprintf(lcd_density, sizeof(lcd_density), "%d", get_device_dpi(opts)); args[n++] = "-lcd-density"; args[n++] = lcd_density; diff --git a/android/utils/system.h b/android/utils/system.h index 464957d..c8163c6 100644 --- a/android/utils/system.h +++ b/android/utils/system.h @@ -173,12 +173,6 @@ extern void sleep_ms( int timeout ); #ifndef PRIx64 # define PRIx64 "llx" #endif -#ifndef PRUd64 -# define PRUd64 "llu" -#endif -#ifndef PRUx64 -# define PRUx64 "llx" -#endif /* */ @@ -4,10 +4,7 @@ #include "qemu-common.h" #include "irq.h" - -#if defined(TARGET_PHYS_ADDRESS_SPACE_BITS) && !defined(NEED_CPU_H) #include "cpu.h" -#endif /* VM Load/Save */ diff --git a/memcheck/memcheck.c b/memcheck/memcheck.c index 3ccb196..3c8194a 100644 --- a/memcheck/memcheck.c +++ b/memcheck/memcheck.c @@ -14,6 +14,12 @@ * Contains implementation of memory checking framework in the emulator. */ +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "qemu-queue.h" #include "qemu_file.h" #include "elff_api.h" diff --git a/memcheck/memcheck.h b/memcheck/memcheck.h index a7761a9..a9a6422 100644 --- a/memcheck/memcheck.h +++ b/memcheck/memcheck.h @@ -18,6 +18,12 @@ #ifndef QEMU_MEMCHECK_MEMCHECK_H #define QEMU_MEMCHECK_MEMCHECK_H +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "memcheck_common.h" #ifdef __cplusplus diff --git a/memcheck/memcheck_common.h b/memcheck/memcheck_common.h index e753094..e6d12db 100644 --- a/memcheck/memcheck_common.h +++ b/memcheck/memcheck_common.h @@ -18,6 +18,12 @@ #ifndef QEMU_MEMCHECK_MEMCHECK_COMMON_H #define QEMU_MEMCHECK_MEMCHECK_COMMON_H +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "qemu-common.h" #include "cpu.h" diff --git a/memcheck/memcheck_logging.h b/memcheck/memcheck_logging.h index 94a3c09..c2ae6e9 100644 --- a/memcheck/memcheck_logging.h +++ b/memcheck/memcheck_logging.h @@ -17,6 +17,12 @@ #ifndef QEMU_MEMCHECK_MEMCHECK_LOGGING_H #define QEMU_MEMCHECK_MEMCHECK_LOGGING_H +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "qemu-common.h" #include "android/utils/debug.h" diff --git a/memcheck/memcheck_malloc_map.c b/memcheck/memcheck_malloc_map.c index d7e8032..07ae889 100644 --- a/memcheck/memcheck_malloc_map.c +++ b/memcheck/memcheck_malloc_map.c @@ -15,6 +15,12 @@ * memory blocks allocated by the guest system. */ +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "memcheck_malloc_map.h" #include "memcheck_util.h" #include "memcheck_logging.h" diff --git a/memcheck/memcheck_malloc_map.h b/memcheck/memcheck_malloc_map.h index 1c25738..b356180 100644 --- a/memcheck/memcheck_malloc_map.h +++ b/memcheck/memcheck_malloc_map.h @@ -24,6 +24,12 @@ #ifndef QEMU_MEMCHECK_MEMCHECK_MALLOC_MAP_H #define QEMU_MEMCHECK_MEMCHECK_MALLOC_MAP_H +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "sys-tree.h" #include "memcheck_common.h" diff --git a/memcheck/memcheck_mmrange_map.c b/memcheck/memcheck_mmrange_map.c index d9a1211..f2609df 100644 --- a/memcheck/memcheck_mmrange_map.c +++ b/memcheck/memcheck_mmrange_map.c @@ -15,6 +15,12 @@ * memory mappings in the guest system. */ +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "memcheck_mmrange_map.h" #include "memcheck_logging.h" diff --git a/memcheck/memcheck_mmrange_map.h b/memcheck/memcheck_mmrange_map.h index f291c95..f2c9701 100644 --- a/memcheck/memcheck_mmrange_map.h +++ b/memcheck/memcheck_mmrange_map.h @@ -22,6 +22,12 @@ #ifndef QEMU_MEMCHECK_MEMCHECK_MMRANGE_MAP_H #define QEMU_MEMCHECK_MEMCHECK_MMRANGE_MAP_H +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "sys-tree.h" #include "memcheck_common.h" diff --git a/memcheck/memcheck_proc_management.c b/memcheck/memcheck_proc_management.c index 45cf141..593ba32 100644 --- a/memcheck/memcheck_proc_management.c +++ b/memcheck/memcheck_proc_management.c @@ -15,6 +15,12 @@ * memchecker framework. */ +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "elff/elff_api.h" #include "memcheck.h" #include "memcheck_proc_management.h" diff --git a/memcheck/memcheck_proc_management.h b/memcheck/memcheck_proc_management.h index 7f489cf..68b6181 100644 --- a/memcheck/memcheck_proc_management.h +++ b/memcheck/memcheck_proc_management.h @@ -18,6 +18,12 @@ #ifndef QEMU_MEMCHECK_MEMCHECK_PROC_MANAGEMENT_H #define QEMU_MEMCHECK_MEMCHECK_PROC_MANAGEMENT_H +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "qemu-queue.h" #include "memcheck_common.h" #include "memcheck_malloc_map.h" diff --git a/memcheck/memcheck_util.c b/memcheck/memcheck_util.c index 8a59914..5449488 100644 --- a/memcheck/memcheck_util.c +++ b/memcheck/memcheck_util.c @@ -14,6 +14,12 @@ * Contains implementation of utility routines for memchecker framework. */ +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "stdio.h" #include "qemu-common.h" #include "android/utils/path.h" diff --git a/memcheck/memcheck_util.h b/memcheck/memcheck_util.h index 2a9907e..b75ee53 100644 --- a/memcheck/memcheck_util.h +++ b/memcheck/memcheck_util.h @@ -17,6 +17,12 @@ #ifndef QEMU_MEMCHECK_MEMCHECK_UTIL_H #define QEMU_MEMCHECK_MEMCHECK_UTIL_H +/* This file should compile iff qemu is built with memory checking + * configuration turned on. */ +#ifndef CONFIG_MEMCHECK +#error CONFIG_MEMCHECK is not defined. +#endif // CONFIG_MEMCHECK + #include "memcheck_common.h" #include "elff/elff_api.h" diff --git a/net-android.c b/net-android.c index 6459eff..234235b 100644 --- a/net-android.c +++ b/net-android.c @@ -126,7 +126,7 @@ #include "libslirp.h" #endif -#if defined(CONFIG_ANDROID) +#if defined(CONFIG_SHAPER) #include "shaper.h" #endif @@ -730,7 +730,7 @@ ip_packet_is_internal( const uint8_t* data, size_t size ) return ( data[12] == 10 && data[16] == 10); } -#ifdef CONFIG_ANDROID +#ifdef CONFIG_SHAPER NetShaper slirp_shaper_in; NetShaper slirp_shaper_out; @@ -773,12 +773,12 @@ slirp_init_shapers( void ) netshaper_set_rate( slirp_shaper_in, qemu_net_upload_speed ); } -#endif /* CONFIG_ANDROID */ +#endif /* CONFIG_SHAPER */ int slirp_can_output(void) { -#ifdef CONFIG_ANDROID +#ifdef CONFIG_SHAPER return !slirp_vc || ( netshaper_can_send(slirp_shaper_out) && qemu_can_send_packet(slirp_vc) ); @@ -799,7 +799,7 @@ void slirp_output(const uint8_t *pkt, int pkt_len) if (!slirp_vc) return; -#ifdef CONFIG_ANDROID +#ifdef CONFIG_SHAPER netshaper_send(slirp_shaper_out, (void*)pkt, pkt_len); #else qemu_send_packet(slirp_vc, pkt, pkt_len); @@ -820,7 +820,7 @@ static ssize_t slirp_receive(VLANClientState *vc, const uint8_t *buf, size_t siz if (qemu_tcpdump_active) qemu_tcpdump_packet(buf, size); -#ifdef CONFIG_ANDROID +#ifdef CONFIG_SHAPER netshaper_send(slirp_shaper_in, (char*)buf, size); #else slirp_input(buf, size); diff --git a/target-arm/helper.c b/target-arm/helper.c index f595b2c..258e2cb 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -1214,7 +1214,7 @@ static inline int get_phys_addr(CPUState *env, uint32_t address, int cpu_arm_handle_mmu_fault (CPUState *env, target_ulong address, int access_type, int mmu_idx, int is_softmmu) { - uint32_t phys_addr = 0; + uint32_t phys_addr; int prot; int ret, is_user; @@ -1244,7 +1244,7 @@ int cpu_arm_handle_mmu_fault (CPUState *env, target_ulong address, target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr) { - uint32_t phys_addr = 0; + uint32_t phys_addr; int prot; int ret; diff --git a/target-i386/cpu.h b/target-i386/cpu.h index 88547cb..4e7eb58 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -181,7 +181,7 @@ #define HF2_VINTR_SHIFT 3 /* value of V_INTR_MASKING bit */ #define HF2_GIF_MASK (1 << HF2_GIF_SHIFT) -#define HF2_HIF_MASK (1 << HF2_HIF_SHIFT) +#define HF2_HIF_MASK (1 << HF2_HIF_SHIFT) #define HF2_NMI_MASK (1 << HF2_NMI_SHIFT) #define HF2_VINTR_MASK (1 << HF2_VINTR_SHIFT) @@ -409,7 +409,7 @@ #define CPUID_VENDOR_INTEL_3 0x6c65746e /* "ntel" */ #define CPUID_VENDOR_AMD_1 0x68747541 /* "Auth" */ -#define CPUID_VENDOR_AMD_2 0x69746e65 /* "enti" */ +#define CPUID_VENDOR_AMD_2 0x69746e65 /* "enti" */ #define CPUID_VENDOR_AMD_3 0x444d4163 /* "cAMD" */ #define CPUID_MWAIT_IBE (1 << 1) /* Interrupts can exit capability */ |