ifeq ($(BUILD_EMULATOR),true)

ifneq (,$(filter $(TARGET_ARCH),arm x86 mips))
LOCAL_PATH:= $(call my-dir)

# determine the target cpu
ifeq ($(TARGET_ARCH),arm)
EMULATOR_TARGET_CPU := target-arm
endif
ifeq ($(TARGET_ARCH),x86)
EMULATOR_TARGET_CPU := target-i386
endif
ifeq ($(TARGET_ARCH),mips)
EMULATOR_TARGET_CPU := target-mips
endif

# determine the host tag to use
QEMU_HOST_TAG := $(HOST_PREBUILT_TAG)
ifneq ($(USE_MINGW),)
    QEMU_HOST_TAG := windows
endif

# determine the location of platform-specific directories
#
CONFIG_DIRS     := \
    $(LOCAL_PATH)/android/config/$(QEMU_HOST_TAG)

ifeq ($(BUILD_STANDALONE_EMULATOR),true)
    CONFIG_DIRS := $(LOCAL_PATH)/objs $(CONFIG_DIRS)
endif

CONFIG_INCLUDES := $(CONFIG_DIRS:%=-I%)

MY_CC  := $(HOST_CC)
MY_CXX := $(HOST_CXX)
MY_AR  := $(HOST_AR)

MY_OPTIM := -O2 -g -fno-PIC -falign-functions=0 -fomit-frame-pointer
ifeq ($(BUILD_DEBUG_EMULATOR),true)
    MY_OPTIM := -O0 -g
endif

MY_CFLAGS := $(CONFIG_INCLUDES) $(MY_OPTIM)

# Overwrite configuration for debug builds.
#
ifeq ($(BUILD_DEBUG_EMULATOR),true)
    MY_CFLAGS := $(CONFIG_INCLUDES)
    MY_CFLAGS += -O0 -g
    MY_CFLAGS += -fno-PIC -falign-functions=0
endif

MY_LDLIBS :=

ifeq ($(HOST_OS),freebsd)
  MY_CFLAGS += -I /usr/local/include
endif

ifeq ($(HOST_OS),windows)
  # we need Win32 features that are available since Windows 2000 Professional/Server (NT 5.0)
  MY_CFLAGS += -DWINVER=0x501
  MY_CFLAGS += -D_WIN32
  ifneq ($(BUILD_HOST_64bit),)
    # Microsoft 64-bit compiler define both _WIN32 and _WIN64
    MY_CFLAGS += -D_WIN64
    # amd64-mingw32msvc- toolchain still name it vfw32.  May change it once amd64-mingw32msvc-
    # is stabilized
    MY_LDLIBS += -lvfw32
  else
    MY_LDLIBS += -lvfw32
  endif
endif

ifeq ($(HOST_ARCH),ppc)
    MY_CFLAGS += -D__powerpc__
endif

ifeq ($(HOST_OS),darwin)
    MY_CFLAGS += -mdynamic-no-pic -D_DARWIN_C_SOURCE=1

    MY_CFLAGS += -isysroot $(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version) -DMACOSX_DEPLOYMENT_TARGET=$(mac_sdk_version)
    MY_LDLIBS += -isysroot $(mac_sdk_root) -Wl,-syslibroot,$(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version)

endif

# BUILD_STANDALONE_EMULATOR is only defined when building with
# the android-rebuild.sh script. The script will also provide
# adequate values for HOST_CC
#
ifneq ($(BUILD_STANDALONE_EMULATOR),true)
  # On Linux, use our custom 32-bit host toolchain (unless BUILD_HOST_64bit=1)
  # 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 := prebuilts/tools/gcc-sdk
    # 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++
      MY_AR  := $(HOST_SDK_TOOLCHAIN_PREFIX)/ar
    endif # $(HOST_SDK_TOOLCHAIN_PREFIX)/gcc exists
  endif # HOST_OS == linux

  ifneq ($(USE_CCACHE),)
    ccache := prebuilts/misc/$(HOST_PREBUILT_TAG)/ccache/ccache
    ccache := $(strip $(wildcard $(ccache)))
    ifneq ($(ccache),$(firstword $(MY_CC)))
      MY_CC := $(ccache) $(MY_CC)
      MY_CXX := $(ccache) $(MY_CXX)
    endif
    ccache :=
  endif

  QEMU_OPENGLES_INCLUDE := sdk/emulator/opengl/host/include
  QEMU_OPENGLES_LIBS := $(HOST_OUT)
endif


ifneq ($(combo_target)$(TARGET_SIMULATOR),HOST_true)
  ifneq ($(BUILD_HOST_64bit),)
    MY_CFLAGS += -m64
    MY_LDLIBS += -m64
  else
    ifneq ($(HOST_ARCH),x86_64)
      MY_CFLAGS += -m32
      MY_LDLIBS += -m32
    endif
  endif

  ifneq ($(BUILD_HOST_static),)
    MY_LDLIBS += -static
  endif
endif

# Enable warning, except those related to missing field initializers
# (the QEMU coding style loves using these).
#
MY_CFLAGS += -Wall -Wno-missing-field-initializers

# Needed to build fpu/softfloat-native.h properly
MY_CFLAGS += -D_GNU_SOURCE=1

# A useful function that can be used to start the declaration of a host
# module. Avoids repeating the same stuff again and again.
# Usage:
#
#  $(call start-emulator-library, <module-name>)
#
#  ... declarations
#
#  $(call end-emulator-library)
#
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_AR := $(MY_AR)) \
    $(eval LOCAL_LDLIBS := $(MY_LDLIBS)) \
    $(eval LOCAL_MODULE_TAGS := debug) \
    $(eval LOCAL_MODULE := $1) \
    $(eval LOCAL_MODULE_CLASS := STATIC_LIBRARIES)

# Used with start-emulator-library
end-emulator-library = \
    $(eval include $(BUILD_HOST_STATIC_LIBRARY))

# 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) \
    $(eval LOCAL_MODULE_CLASS := EXECUTABLES)

# A varient of end-emulator-library for host programs instead
end-emulator-program = \
    $(eval LOCAL_LDLIBS += $(QEMU_SYSTEM_LDLIBS)) \
    $(eval include $(BUILD_HOST_EXECUTABLE))


# The common libraries
#
QEMU_SYSTEM_LDLIBS := -lm
ifeq ($(HOST_OS),windows)
  QEMU_SYSTEM_LDLIBS += -mno-cygwin -mwindows -mconsole
endif

ifeq ($(HOST_OS),freebsd)
    QEMU_SYSTEM_LDLIBS += -L/usr/local/lib -lpthread -lX11 -lutil
endif

ifeq ($(HOST_OS),linux)
  QEMU_SYSTEM_LDLIBS += -lutil -lrt
endif

ifeq ($(HOST_OS),windows)
  # amd64-mingw32msvc- toolchain still name it ws2_32.  May change it once amd64-mingw32msvc-
  # is stabilized
  QEMU_SYSTEM_LDLIBS += -lwinmm -lws2_32 -liphlpapi
else
  QEMU_SYSTEM_LDLIBS += -lpthread
endif

ifeq ($(HOST_OS),darwin)
  QEMU_SYSTEM_LDLIBS += -Wl,-framework,Cocoa,-framework,QTKit,-framework,CoreVideo

  # SDK 10.6+ doesn't have __dyld_func_lookup anymore. Dynamic library lookup symbols
  # are instead resolved at runtime
  OSX_VERSION_MAJOR := $(shell echo $(mac_sdk_version) | cut -d . -f 2)
  OSX_VERSION_MAJOR_GREATER_THAN_OR_EQUAL_TO_6 := $(shell [ $(OSX_VERSION_MAJOR) -ge 6 ] && echo true)
  ifeq ($(OSX_VERSION_MAJOR_GREATER_THAN_OR_EQUAL_TO_6),true)
    QEMU_SYSTEM_LDLIBS += -undefined dynamic_lookup
  endif
endif

include $(LOCAL_PATH)/Makefile.common

ifeq ($(HOST_OS),windows)
  # 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...

  # Locate windres executable
  WINDRES := windres
  ifneq ($(USE_MINGW),)
    # When building the Windows emulator under Linux, use the MinGW one
    WINDRES := i586-mingw32msvc-windres
  endif

  # Usage: $(eval $(call insert-windows-icon))
  define insert-windows-icon
    LOCAL_PREBUILT_OBJ_FILES += images/emulator_icon.o
  endef

# This 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_PATH)/images/emulator_icon.o: $(LOCAL_PATH)/images/android_icon.rc
	$(WINDRES) $< -I $(LOCAL_PATH)/images -o $@
endif

# 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

EMULATOR_TARGET_ARCH := x86
include $(LOCAL_PATH)/Makefile.target

EMULATOR_TARGET_ARCH := mips
include $(LOCAL_PATH)/Makefile.target

##############################################################################
##############################################################################
###
###  emulator: LAUNCHER FOR TARGET-SPECIFIC EMULATOR
###
###
$(call start-emulator-program, emulator)

LOCAL_SRC_FILES := android/main-emulator.c
LOCAL_STATIC_LIBRARIES := emulator-common

ifeq ($(HOST_OS),windows)
$(eval $(call insert-windows-icon))
endif

$(call end-emulator-program)

##############################################################################
##############################################################################
###
###  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.c \
    android/opengles.c \
    android/utils/setenv.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 \

$(call gen-hw-config-defs,android/main-common.c)

LOCAL_SRC_FILES += $(SDLMAIN_SOURCES)

LOCAL_STATIC_LIBRARIES += $(SDL_STATIC_LIBRARIES)

$(call end-emulator-program)

## VOILA!!

endif  # TARGET_ARCH == arm || TARGET_ARCH == x86 || TARGET_ARCH == mips
endif  # BUILD_EMULATOR
