qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Kostiantyn Kostiuk <kkostiuk@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>
Cc: phind.uet@gmail.com, "Paolo Bonzini" <pbonzini@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Michael Roth" <michael.roth@amd.com>,
	qemu-devel@nongnu.org
Subject: Re: [PATCH 1/2] qga/vss-win32: Fix ConvertStringToBSTR redefinition with newer MinGW
Date: Tue, 16 Dec 2025 11:53:14 +0200	[thread overview]
Message-ID: <CAPMcbCqSGCk0kmHF+uJjOjES+sKHQHQ-v59iU_q4QqY3TOTGVg@mail.gmail.com> (raw)
In-Reply-To: <CAMxuvaw=ZigHsgHf5matsmLrH57y-HE4gwgQy4Oyht4+u58N+g@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2857 bytes --]

Hi

On Tue, Dec 16, 2025 at 8:26 AM Marc-André Lureau <
marcandre.lureau@redhat.com> wrote:

> Hi
>
> On Mon, Dec 15, 2025 at 8:57 PM <phind.uet@gmail.com> wrote:
>
>> From: Nguyen Dinh Phi <phind.uet@gmail.com>
>>
>> Newer versions of MinGW-w64 provide ConvertStringToBSTR() in the
>> _com_util namespace via <comutil.h>. This causes a redefinition
>> error when building qemu-ga on Windows with these toolchains.
>>
>> Add a meson check to detect whether ConvertStringToBSTR is already
>> available, and conditionally compile our fallback implementation
>> only when the system does not provide one.
>>
>> Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com>
>> ---
>>  meson.build               | 12 ++++++++++++
>>  qga/vss-win32/install.cpp |  2 ++
>>  2 files changed, 14 insertions(+)
>>
>> diff --git a/meson.build b/meson.build
>> index c5710a6a47..60a980e610 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -3299,6 +3299,18 @@ endif
>>  # Detect host pointer size for the target configuration loop.
>>  host_long_bits = cc.sizeof('void *') * 8
>>
>> +# Detect if ConvertStringToBSTR has been defined in _com_util namespace
>> +if host_os == 'windows'
>> +  has_convert_string_to_bstr = cxx.compiles('''
>> +    #include <comutil.h>
>> +    int main() {
>> +        BSTR b = _com_util::ConvertStringToBSTR("test");
>> +        return b ? 0 : 1;
>> +    }
>> +  ''')
>> +  config_host_data.set('CONFIG_CONVERT_STRING_TO_BSTR',
>> has_convert_string_to_bstr)
>> +endif
>> +
>>  ########################
>>  # Target configuration #
>>  ########################
>> diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp
>> index 7b25d9098b..5b7a8e9bc5 100644
>> --- a/qga/vss-win32/install.cpp
>> +++ b/qga/vss-win32/install.cpp
>> @@ -549,6 +549,7 @@ STDAPI DllUnregisterServer(void)
>>
>>
>>  /* Support function to convert ASCII string into BSTR (used in _bstr_t)
>> */
>> +#ifndef CONFIG_CONVERT_STRING_TO_BSTR
>>
>
> I wonder if it could check __MINGW64_VERSION_MAJOR >= 14 instead of adding
> a configure-time check.
>

@Peter Maydell <peter.maydell@linaro.org> preferred to avoid specific
version-number checks.
See: https://gitlab.com/qemu-project/qemu/-/issues/3217#note_2935451782

I also preferred the idea of checking the real function present instead of
the version of the component.

Reviewed-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>


>
> lgtm anyway
> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>
>  namespace _com_util
>>  {
>>      BSTR WINAPI ConvertStringToBSTR(const char *ascii) {
>> @@ -566,6 +567,7 @@ namespace _com_util
>>          return bstr;
>>      }
>>  }
>> +#endif
>>
>>  /* Stop QGA VSS provider service using Winsvc API  */
>>  STDAPI StopService(void)
>> --
>> 2.43.0
>>
>>

[-- Attachment #2: Type: text/html, Size: 4519 bytes --]

  reply	other threads:[~2025-12-16  9:54 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-15 16:45 [PATCH 0/2] Fix Windows build issues with newer MinGW phind.uet
2025-12-15 16:45 ` [PATCH 1/2] qga/vss-win32: Fix ConvertStringToBSTR redefinition " phind.uet
2025-12-16  6:26   ` Marc-André Lureau
2025-12-16  9:53     ` Kostiantyn Kostiuk [this message]
2025-12-17 18:13       ` Pierrick Bouvier
2025-12-16 23:00   ` Pierrick Bouvier
2025-12-15 16:45 ` [PATCH 2/2] util: Move qemu_ftruncate64 from block/file-win32.c to oslib-win32.c phind.uet
2025-12-15 17:33   ` Philippe Mathieu-Daudé
2025-12-16 23:00   ` Pierrick Bouvier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAPMcbCqSGCk0kmHF+uJjOjES+sKHQHQ-v59iU_q4QqY3TOTGVg@mail.gmail.com \
    --to=kkostiuk@redhat.com \
    --cc=berrange@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=michael.roth@amd.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@linaro.org \
    --cc=phind.uet@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).