Win SDK: Fix missing emulator icon

History: It had been inadvertedly removed by the makefile reorg done
in aff94b88c4ec057f20950d5e7a88b90cc4d97dce.

SDK Bug: 21709

Change-Id: Icd147a1edb363e1ccbee2c3cade4ed34beceeeff
diff --git a/.gitignore b/.gitignore
index db1f286..6937091 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-images/android_icon.o
+images/emulator_icon.o
 objs/*
 *.*~
 
diff --git a/Makefile.android b/Makefile.android
index f5c008b..797bb71 100644
--- a/Makefile.android
+++ b/Makefile.android
@@ -219,6 +219,31 @@
 
 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
@@ -238,6 +263,10 @@
 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)
 
 ##############################################################################
diff --git a/Makefile.target b/Makefile.target
index e8a41f4..5b4ec5f 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -432,6 +432,11 @@
 $(call gen-hx-header,qemu-monitor.hx,qemu-monitor.h,monitor.c)
 $(call gen-hx-header,qemu-options.hx,qemu-options.def,vl-android.c qemu-options.h)
 $(call gen-hw-config-defs)
+
+ifeq ($(HOST_OS),windows)
+$(eval $(call insert-windows-icon))
+endif
+
 $(call end-emulator-program)
 
 
@@ -455,3 +460,4 @@
     $(call end-emulator-program)
   endif # BUILD_STANDALONE_EMULATOR == nil
 endif # HOST_OS == linux
+