* [Qemu-devel] [PATCH v2] w32: Build windows and console executables
@ 2011-12-22 10:20 Stefan Weil
2011-12-23 2:31 ` TeLeMan
2012-01-13 21:13 ` Stefan Weil
0 siblings, 2 replies; 7+ messages in thread
From: Stefan Weil @ 2011-12-22 10:20 UTC (permalink / raw)
To: qemu-devel; +Cc: blauwirbel, geleman, Stefan Weil
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 <sw@weilnetz.de>
---
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
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] w32: Build windows and console executables
2011-12-22 10:20 [Qemu-devel] [PATCH v2] w32: Build windows and console executables Stefan Weil
@ 2011-12-23 2:31 ` TeLeMan
2011-12-23 13:47 ` Stefan Weil
2012-01-13 21:13 ` Stefan Weil
1 sibling, 1 reply; 7+ messages in thread
From: TeLeMan @ 2011-12-23 2:31 UTC (permalink / raw)
To: Stefan Weil; +Cc: blauwirbel, qemu-devel
On Thu, Dec 22, 2011 at 18:20, Stefan Weil <sw@weilnetz.de> 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 <sw@weilnetz.de>
> ---
> 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.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] w32: Build windows and console executables
2011-12-23 2:31 ` TeLeMan
@ 2011-12-23 13:47 ` Stefan Weil
2011-12-26 2:14 ` TeLeMan
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Weil @ 2011-12-23 13:47 UTC (permalink / raw)
To: TeLeMan; +Cc: blauwirbel, qemu-devel
Am 23.12.2011 03:31, schrieb TeLeMan:
> On Thu, Dec 22, 2011 at 18:20, Stefan Weil <sw@weilnetz.de> 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 <sw@weilnetz.de>
>> ---
>> 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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] w32: Build windows and console executables
2011-12-23 13:47 ` Stefan Weil
@ 2011-12-26 2:14 ` TeLeMan
0 siblings, 0 replies; 7+ messages in thread
From: TeLeMan @ 2011-12-26 2:14 UTC (permalink / raw)
To: Stefan Weil; +Cc: blauwirbel, qemu-devel
On Fri, Dec 23, 2011 at 21:47, Stefan Weil <sw@weilnetz.de> wrote:
> Am 23.12.2011 03:31, schrieb TeLeMan:
>
>> On Thu, Dec 22, 2011 at 18:20, Stefan Weil <sw@weilnetz.de> 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 <sw@weilnetz.de>
>>> ---
>>> 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
I found this problem. After I copied & pasted your patch, the tabs
were converted to spaces.
Thanks for your patience. Now it is working.
> Cheers,
> Stefan Weil
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] w32: Build windows and console executables
2011-12-22 10:20 [Qemu-devel] [PATCH v2] w32: Build windows and console executables Stefan Weil
2011-12-23 2:31 ` TeLeMan
@ 2012-01-13 21:13 ` Stefan Weil
2012-01-13 21:31 ` Andreas Färber
1 sibling, 1 reply; 7+ messages in thread
From: Stefan Weil @ 2012-01-13 21:13 UTC (permalink / raw)
To: Anthony Liguori; +Cc: blauwirbel, qemu-devel
Am 22.12.2011 11:20, schrieb Stefan Weil:
> 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<sw@weilnetz.de>
> ---
> 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)$@")
>
Ping? All open questions were solved, so this patch can be committed.
Thanks,
Stefan W.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] w32: Build windows and console executables
2012-01-13 21:13 ` Stefan Weil
@ 2012-01-13 21:31 ` Andreas Färber
2012-01-13 21:57 ` Stefan Weil
0 siblings, 1 reply; 7+ messages in thread
From: Andreas Färber @ 2012-01-13 21:31 UTC (permalink / raw)
To: Stefan Weil; +Cc: blauwirbel, Anthony Liguori, qemu-devel
Am 13.01.2012 22:13, schrieb Stefan Weil:
> Am 22.12.2011 11:20, schrieb Stefan Weil:
>> 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<sw@weilnetz.de>
>> ---
>> Makefile.target | 16 +++++++++++++++-
>> 1 files changed, 15 insertions(+), 1 deletions(-)
> Ping? All open questions were solved, so this patch can be committed.
No objection to this patch, just raising the question whether we might
want to compile code differently for the two targets? For example, does
-nographic make sense for the *w.exe?
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] w32: Build windows and console executables
2012-01-13 21:31 ` Andreas Färber
@ 2012-01-13 21:57 ` Stefan Weil
0 siblings, 0 replies; 7+ messages in thread
From: Stefan Weil @ 2012-01-13 21:57 UTC (permalink / raw)
To: Andreas Färber; +Cc: blauwirbel, Anthony Liguori, qemu-devel
Am 13.01.2012 22:31, schrieb Andreas Färber:
> Am 13.01.2012 22:13, schrieb Stefan Weil:
>> Am 22.12.2011 11:20, schrieb Stefan Weil:
>>> 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<sw@weilnetz.de>
>>> ---
>>> Makefile.target | 16 +++++++++++++++-
>>> 1 files changed, 15 insertions(+), 1 deletions(-)
>
>> Ping? All open questions were solved, so this patch can be committed.
>
> No objection to this patch, just raising the question whether we might
> want to compile code differently for the two targets? For example, does
> -nographic make sense for the *w.exe?
>
> Andreas
Yes, it makes sense.
It's possible to run a *w.exe with stdin/stdout redirected
to a pipe. The msys rxvt terminal works like that and allows
-nographics.
And even without such tricks, the commonly used SDL
implementations redirect stdout to a file, so it is possible
to run a *w.exe with -nographic and use the file (for example
in automated tests which boot a Linux kernel).
So I see no reason to compile both executables differently.
Having executables which are binary compatible has also
advantages for installers (compressing twice the same binary
data should be easy).
Regards,
Stefan
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-01-13 21:57 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-22 10:20 [Qemu-devel] [PATCH v2] w32: Build windows and console executables Stefan Weil
2011-12-23 2:31 ` TeLeMan
2011-12-23 13:47 ` Stefan Weil
2011-12-26 2:14 ` TeLeMan
2012-01-13 21:13 ` Stefan Weil
2012-01-13 21:31 ` Andreas Färber
2012-01-13 21:57 ` Stefan Weil
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).