qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2] w32: Build windows and console executables


From: Stefan Weil
Subject: Re: [Qemu-devel] [PATCH v2] w32: Build windows and console executables
Date: Fri, 23 Dec 2011 14:47:31 +0100
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20111110 Iceowl/1.0b1 Icedove/3.0.11

Am 23.12.2011 03:31, schrieb TeLeMan:
On Thu, Dec 22, 2011 at 18:20, Stefan Weil <address@hidden> wrote:
System emulation executables with SDL are typically windows
executables. Sometimes console executables are more useful,
so create both variants if linker option -mwindows was detected.

v2:
This version uses QEMU_PROGW / QEMU_PROG instead of QEMU_PROG / QEMU_PROGC.

Signed-off-by: Stefan Weil <address@hidden>
---
 Makefile.target |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/Makefile.target b/Makefile.target
index 3261383..0182e41 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -27,10 +27,17 @@ ifdef CONFIG_USER_ONLY
 QEMU_PROG=qemu-$(TARGET_ARCH2)
 else
 # system emulator name
+ifneq (,$(findstring -mwindows,$(LIBS)))
+# Terminate program name with a 'w' because the linker builds a windows executable.
+QEMU_PROGW=qemu-system-$(TARGET_ARCH2)w$(EXESUF)
+endif # windows executable
 QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF)
 endif

 PROGS=$(QEMU_PROG)
+ifdef QEMU_PROGW
+PROGS+=$(QEMU_PROGW)
+endif
 STPFILES=

 ifndef CONFIG_HAIKU
@@ -403,9 +410,16 @@ endif # CONFIG_LINUX_USER

 obj-$(CONFIG_GDBSTUB_XML) += gdbstub-xml.o

+ifdef QEMU_PROGW
+# The linker builds a windows executable. Make also a console executable.
+$(QEMU_PROGW): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y)
+       $(call LINK,$^)
+$(QEMU_PROG): $(QEMU_PROGW)
+ $(call quiet-command,$(OBJCOPY) --subsystem console $(QEMU_PROGW) $(QEMU_PROG)," GEN $(TARGET_DIR)$(QEMU_PROG)")
+else
 $(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y)
       $(call LINK,$^)
-
+endif

 gdbstub-xml.c: $(TARGET_XML_FILES) $(SRC_PATH)/scripts/feature_to_c.sh
$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/scripts/feature_to_c.sh $@ $(TARGET_XML_FILES)," GEN $(TARGET_DIR)$@")
--
1.7.2.5

Failed to make:
Makefile:416: *** multiple target patterns. Stop.

It works here (native and cross compilations) with MinGW,
so I have to guess and need your help.

This is the relevant code from Makefile.target when my patch was applied:

$(QEMU_PROGW): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y)
        $(call LINK,$^)
$(QEMU_PROG): $(QEMU_PROGW)
$(call quiet-command,$(OBJCOPY) --subsystem console $(QEMU_PROGW) $(QEMU_PROG)," GEN $(TARGET_DIR)$(QEMU_PROG)")

Line 416 is the 2nd line which was not changed by my patch.
It contains no target pattern at all.

Or do you have a different line counting caused by local
modifications or an older version of the QEMU sources?

Does an empty line between 2nd and 3rd line help?

Do you run a native or a cross compilation?

If native: which line endings do you use (CRLF or LF,
depends on git settings and MinGW mount options)?
Do you use Cygwin, MinGW or MinGW-w64?
Which make do you use?

Try to run make in verbose mode (make V=1).

This page describes the error which you got:
http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Error-Messages.html

Cheers,
Stefan Weil




reply via email to

[Prev in Thread] Current Thread [Next in Thread]