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

# determine the target cpu
ifeq ($(TARGET_ARCH),arm)
EMULATOR_TARGET_CPU := target-arm
else
EMULATOR_TARGET_CPU := target-i386
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) -O0 -g \
                 -fno-PIC -falign-functions=0
endif

MY_LDLIBS :=

# this is needed to build the emulator on 64-bit Linux systems
ifeq ($(HOST_OS)-$(HOST_ARCH),linux-x86)
  MY_CFLAGS += -Wa,--32
endif

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

ifeq ($(HOST_OS),windows)
  MY_CFLAGS += -D_WIN32
  # we need Win32 features  that are available since Windows 2000 Professional/Server (NT 5.0)
  MY_CFLAGS += -DWINVER=0x501
  MY_LDLIBS += -lvfw32
endif

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

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

    # When building on Leopard or above, we need to use the 10.4 SDK
    # or the generated binary will not run on Tiger.
    DARWIN_VERSION := $(strip $(shell sw_vers -productVersion))
    ifneq ($(filter 10.1 10.2 10.3 10.1.% 10.2.% 10.3.% 10.4 10.4.%,$(DARWIN_VERSION)),)
        $(error Building the Android emulator requires OS X 10.5 or above)
    endif
    ifneq ($(filter 10.6 10.6.%,$(DARWIN_VERSION)),)
        # We are on Snow Leopard
        LEOPARD_SDK := /Developer/SDKs/MacOSX10.5.sdk
        ifeq ($(strip $(wildcard $(LEOPARD_SDK))),)
            $(info  Please install the 10.5 SDK on this machine at $(LEOPARD_SDK))
            $(error Aborting the build.)
        endif
        MY_CFLAGS += -isysroot $(LEOPARD_SDK) -mmacosx-version-min=10.5 -DMACOSX_DEPLOYMENT_TARGET=10.5
        MY_LDLIBS += -isysroot $(LEOPARD_SDK) -Wl,-syslibroot,$(LEOPARD_SDK) -mmacosx-version-min=10.5
    endif
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, 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++
      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)
    endif
    ccache :=
  endif
endif


ifneq ($(combo_target)$(TARGET_SIMULATOR),HOST_true)
  ifneq ($(HOST_ARCH),x86_64)
    MY_CFLAGS += -m32
    MY_LDLIBS += -m32
  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)
  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
  ifneq ($(filter 10.7 10.7.%,$(DARWIN_VERSION)),)
    # Lion/XCode4 needs to be explicitly told the dynamic library
    # lookup symbols in the precompiled libSDL are resolved at
    # runtime
    QEMU_SYSTEM_LDLIBS += -undefined dynamic_lookup
  endif
endif

include $(LOCAL_PATH)/Makefile.common

# 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: LAUNCHER FOR TARGET-SPECIFIC EMULATOR
###
###
$(call start-emulator-program, emulator)

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

$(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
