##############################################################################
##############################################################################
###
###  emulator-$ARCH: Standalone launcher for QEMU executable.
###
###

# Check EMULATOR_TARGET_CPU value and determine
# corresponding TARGET_XXX macro at the same time

EMULATOR_TARGET_CPU := $(EMULATOR_TARGET_ARCH)
ifeq ($(EMULATOR_TARGET_CPU),x86)
  EMULATOR_TARGET_CPU := i386
endif

TARGET_VARNAME_arm64  := TARGET_ARM64
TARGET_VARNAME_mips64 := TARGET_MIPS64
ifeq (,$(strip $(TARGET_VARNAME_$(EMULATOR_TARGET_CPU))))
  $(error Unrecognized EMULATOR_TARGET_CPU value: [$(EMULATOR_TARGET_CPU)])
endif

qemu_launcher_SOURCES := \
    android/qemu-launcher/emulator-qemu.cpp \
    android/cmdline-option.c \
    android/help.c \
    android/main-common.c \

qemu_launcher_CFLAGS := \
    -DNO_SKIN=1 \
    -D$(TARGET_VARNAME_$(EMULATOR_TARGET_CPU))=1 \
    -I$(OBJS_DIR)

qemu_launcher_LDLIBS := -lstdc++

$(call start-emulator-program, emulator-ranchu-$(EMULATOR_TARGET_CPU))
LOCAL_SRC_FILES := $(qemu_launcher_SOURCES)
LOCAL_CFLAGS := $(qemu_launcher_CFLAGS)
LOCAL_STATIC_LIBRARIES := \
    emulator-common \
    emulator-libext4_utils \
    emulator-libsparse \
    emulator-libselinux \
    emulator-zlib
LOCAL_LDLIBS := $(qemu_launcher_LDLIBS)
$(call gen-hw-config-defs)

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

$(call end-emulator-program)

$(call start-emulator64-program, emulator64-ranchu-$(EMULATOR_TARGET_CPU))
LOCAL_SRC_FILES := $(qemu_launcher_SOURCES)
LOCAL_CFLAGS := $(qemu_launcher_CFLAGS)
LOCAL_STATIC_LIBRARIES := \
    emulator64-common \
    emulator64-libext4_utils \
    emulator64-libsparse \
    emulator64-libselinux \
    emulator64-zlib
LOCAL_LDLIBS := $(qemu_launcher_LDLIBS)
$(call gen-hw-config-defs)

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

$(call end-emulator-program)
