# 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.
#

QEMU1_OLD_LOCAL_PATH := $(LOCAL_PATH)

LOCAL_PATH := $(call my-dir)

QEMU1_COMMON_CFLAGS := \
    $(EMULATOR_COMMON_CFLAGS) \

QEMU1_COMMON_INCLUDES := \
    $(EMULATOR_COMMON_INCLUDES) \
    $(LOCAL_PATH)/include

# Need to include "qapi-types.h" and other auto-generated files from
# android/configure.sh
QEMU1_COMMON_INCLUDES += $(BUILD_OBJS_DIR)/build/qemu1-qapi-auto-generated

# Zlib sources
QEMU1_COMMON_INCLUDES += $(ZLIB_INCLUDES)

# GLib sources
QEMU1_COMMON_INCLUDES += $(MINIGLIB_INCLUDES)

##############################################################################
##############################################################################
###
###  emulator-libqemu: TARGET-INDEPENDENT QEMU FUNCTIONS
###
###  THESE ARE USED BY EVERYTHING EXCEPT 'emulator-ui'
###

common_LOCAL_CFLAGS =
common_LOCAL_SRC_FILES =


EMULATOR_LIBQEMU_CFLAGS :=

AUDIO_SOURCES := noaudio.c wavaudio.c wavcapture.c mixeng.c
AUDIO_CFLAGS  := -I$(LOCAL_PATH)/audio -DHAS_AUDIO
AUDIO_LDLIBS  :=

ifeq ($(BUILD_TARGET_OS),darwin)
  CONFIG_COREAUDIO ?= yes
  AUDIO_CFLAGS += -DHOST_BSD=1
endif

ifeq ($(BUILD_TARGET_OS),windows)
  CONFIG_WINAUDIO ?= yes
endif

ifeq ($(BUILD_TARGET_OS),linux)
  CONFIG_OSS  ?= yes
  CONFIG_ALSA ?= yes
  CONFIG_PULSEAUDIO ?= yes
  CONFIG_ESD  ?= yes
endif

ifeq ($(BUILD_TARGET_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_SOURCES += wrappers/pulse-audio.c
  AUDIO_CFLAGS  += -DCONFIG_PULSEAUDIO
endif

ifeq ($(CONFIG_ALSA),yes)
  AUDIO_SOURCES += alsaaudio.c audio_pt_int.c
  AUDIO_SOURCES += wrappers/alsa.c
  AUDIO_CFLAGS  += -DCONFIG_ALSA
endif

ifeq ($(CONFIG_ESD),yes)
  AUDIO_SOURCES += esdaudio.c
  AUDIO_SOURCES += wrappers/esound.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/%))

# other flags
ifneq ($(BUILD_TARGET_OS),windows)
    AUDIO_LDLIBS += -ldl
else
endif


EMULATOR_LIBQEMU_CFLAGS += $(AUDIO_CFLAGS)
EMULATOR_LIBQEMU_LDLIBS += $(AUDIO_LDLIBS)

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

$(call start-emulator-library, emulator-libqemu)

# 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 local-intermediates-dir)
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)

LOCAL_C_INCLUDES += \
    $(QEMU1_COMMON_INCLUDES) \
    $(ANDROID_EMU_INCLUDES) \
    $(LOCAL_PATH)/slirp-android \
    $(intermediates) \
    $(LIBJPEG_INCLUDES) \

LOCAL_CFLAGS := \
    $(QEMU1_COMMON_CFLAGS) \
    -W \
    -Wno-sign-compare \
    -fno-strict-aliasing \
    -Wno-unused-parameter \
    -D_XOPEN_SOURCE=600 \
    -D_BSD_SOURCE=1 \
    -DCONFIG_BDRV_WHITELIST=\"\" \
    $(EMULATOR_LIBQEMU_CFLAGS) \
    $(AUDIO_CFLAGS) \

# this is very important, otherwise the generated binaries may
# not link properly on our build servers
ifeq ($(BUILD_TARGET_OS),linux)
LOCAL_CFLAGS += -fno-stack-protector
endif

LOCAL_SRC_FILES += \
    $(AUDIO_SOURCES) \
    aio-android.c \
    android-qemu1-glue/android_qemud.cpp \
    android-qemu1-glue/audio-test.c \
    android-qemu1-glue/base/async/Looper.cpp \
    android-qemu1-glue/base/files/QemuFileStream.cpp \
    android-qemu1-glue/display.c \
    android-qemu1-glue/emulation/charpipe.c \
    android-qemu1-glue/emulation/CharSerialLine.cpp \
    android-qemu1-glue/emulation/serial_line.cpp \
    android-qemu1-glue/emulation/VmLock.cpp \
    android-qemu1-glue/looper-qemu.cpp \
    android-qemu1-glue/qemu-cellular-agent-impl.c \
    android-qemu1-glue/qemu-display-agent-impl.cpp \
    android-qemu1-glue/qemu-finger-agent-impl.c \
    android-qemu1-glue/qemu-location-agent-impl.c \
    android-qemu1-glue/qemu-net-agent-impl.c \
    android-qemu1-glue/qemu-sensors-agent-impl.c \
    android-qemu1-glue/qemu-setup.cpp \
    android-qemu1-glue/qemu-telephony-agent-impl.c \
    android-qemu1-glue/qemu-window-agent-impl.c \
    android-qemu1-glue/telephony/modem_init.cpp \
    android-qemu1-glue/utils/stream.cpp \
    async.c \
    audio/audio.c \
    block.c \
    blockdev.c \
    block/qcow2.c \
    block/qcow2-refcount.c \
    block/qcow2-snapshot.c \
    block/qcow2-cluster.c \
    block/raw.c \
    iohandler.c \
    ioport.c \
    migration-dummy-android.c \
    net/net-android.c \
    qemu-char.c \
    qemu-log.c \
    qobject/json-lexer.c \
    qobject/json-parser.c \
    qobject/json-streamer.c \
    qobject/qjson.c \
    qobject/qbool.c \
    qobject/qdict.c \
    qobject/qerror.c \
    qobject/qfloat.c \
    qobject/qint.c \
    qobject/qlist.c \
    qobject/qstring.c \
    savevm.c \
    slirp-android/bootp.c \
    slirp-android/cksum.c \
    slirp-android/debug.c \
    slirp-android/if.c \
    slirp-android/ip_icmp.c \
    slirp-android/ip_input.c \
    slirp-android/ip_output.c \
    slirp-android/mbuf.c \
    slirp-android/misc.c \
    slirp-android/sbuf.c \
    slirp-android/slirp.c \
    slirp-android/socket.c \
    slirp-android/tcp_input.c \
    slirp-android/tcp_output.c \
    slirp-android/tcp_subr.c \
    slirp-android/tcp_timer.c \
    slirp-android/tftp.c \
    slirp-android/udp.c \
    ui/console.c \
    ui/d3des.c \
    ui/input.c \
    ui/vnc-android.c \
    util/aes.c \
    util/cutils.c \
    util/error.c \
    util/hexdump.c \
    util/iov.c \
    util/module.c \
    util/notify.c \
    util/osdep.c \
    util/path.c \
    util/qemu-config.c \
    util/qemu-error.c \
    util/qemu-option.c \
    util/qemu-sockets-android.c \
    util/unicode.c \
    util/yield-android.c \

ifeq ($(BUILD_TARGET_ARCH),x86)
    LOCAL_SRC_FILES += disas/i386.c
endif
ifeq ($(BUILD_TARGET_ARCH),x86_64)
    LOCAL_SRC_FILES += disas/i386.c
endif

ifeq ($(BUILD_TARGET_OS),windows)
    LOCAL_SRC_FILES += \
        block/raw-win32.c \
        util/qemu-thread-win32.c \

else
    LOCAL_SRC_FILES += \
        block/raw-posix.c \
        posix-aio-compat.c \
        util/compatfd.c \
        util/qemu-thread-posix.c \

endif

$(call gen-hw-config-defs)
$(call end-emulator-library)


##############################################################################
##############################################################################
###
###  gen-hx-header: Generate headers from .hx file with "hxtool" script.
###
###  The 'hxtool' script is used to generate header files from an input
###  file with the .hx suffix. I.e. foo.hx --> foo.h
###
###  Due to the way the Android build system works, we need to regenerate
###  it for each module (the output will go into a module-specific directory).
###
###  This defines a function that can be used inside a module definition
###
###  $(call gen-hx-header,<input>,<output>,<source-files>)
###
###  Where: <input> is the input file, with a .hx suffix (e.g. foo.hx)
###         <output> is the output file, with a .h or .def suffix
###         <source-files> is a list of source files that include the header
###


gen-hx-header = $(eval $(call gen-hx-header-ev,$1,$2,$3))

define gen-hx-header-ev
intermediates := $$(call local-intermediates-dir)

QEMU_HEADER_H := $$(intermediates)/$$2
$$(QEMU_HEADER_H): PRIVATE_PATH := $$(LOCAL_PATH)
$$(QEMU_HEADER_H): PRIVATE_CUSTOM_TOOL = $$(PRIVATE_PATH)/hxtool -h < $$< > $$@
$$(QEMU_HEADER_H): $$(LOCAL_PATH)/$$1 $$(LOCAL_PATH)/hxtool
	$$(transform-generated-source)

LOCAL_GENERATED_SOURCES += $$(QEMU_HEADER_H)
LOCAL_C_INCLUDES += $$(intermediates)
endef

LOCAL_PATH := $(QEMU1_OLD_LOCAL_PATH)
