Unfortunately, my patch seems to break several classes in libstdc++,
preventing Qt from building. The problem is that driverspecs.h defines
__in to be empty so we can compile Microsoft-type code that uses __in as a
source annotation on function parameters while GCC's libstdc++ uses __in as
the name of an input argument for many of its methods:
$ egrep -lr '\b__in\b' /mingw32/include/
/mingw32/include/c++/6.3.0/bits/basic_string.h
/mingw32/include/c++/6.3.0/bits/basic_string.tcc
/mingw32/include/c++/6.3.0/bits/istream.tcc
/mingw32/include/c++/6.3.0/bits/locale_facets.h
/mingw32/include/c++/6.3.0/ext/random.tcc
/mingw32/include/c++/6.3.0/ext/vstring.tcc
/mingw32/include/c++/6.3.0/istream
/mingw32/include/c++/6.3.0/tr1/tuple
/mingw32/include/c++/6.3.0/tr1/utility
/mingw32/include/c++/6.3.0/tr2/bool_set
/mingw32/include/c++/6.3.0/tr2/bool_set.tcc
/mingw32/include/c++/6.3.0/tuple
/mingw32/include/c++/6.3.0/utility
One of the errors I get looks like this:
/nix/.../include/c++/6.3.0/utility:208:57: error: no matching function for
call to 'move()'
{ return __pair_get<_Int>::__move_get(std::move(__in)); }
I don't think this is necessarily a problem with mingw-w64, or a problem
with that patch. Adrien Nader's attitude on this mailing list in
2015-11-03 was "Really, there's a platform and software is built on top of
it; it is that software that is supposed to adapt to the platform." Microsoft
Windows and mingw-w64 are platforms that define __in to have a special
meaning. The software built on that platform (libstdc++) should adapt to
the platform.
One odd thing is that our __in gets defined in driverspecs.h, while
Microsoft defines their __in in sal.h. But specstrings.h (for both
mingw-w64 and Microsoft) includes both sal.h and driverspecs.h so that
shouldn't affect when the bug appears.
--David Grayson
On Wed, May 10, 2017 at 9:44 AM, David Grayson <[email protected]>
wrote:
> Yeah, sorry, I only sent those patches to LH by mistake. Yes, I purposely
> used the same include guard name as Microsoft.
>
> --David
>
> On Wed, May 10, 2017 at 8:55 AM, Liu Hao <[email protected]> wrote:
>
>>
>>
>>
>> -------- Forwarded Message --------
>> Subject: Re: [Mingw-w64-public] [PATCH] Include driverspecs.h in
>> specstrings.h.
>> Date: Wed, 10 May 2017 08:24:25 -0700
>> From: David Grayson <[email protected]>
>> To: Liu Hao <[email protected]>
>>
>>
>>
>> OK, thanks. I've attached a new patch where the #include is after the
>> __cplusplus stuff.
>>
>> I also included a second patch that will add an include guard for
>> specstrings.h, since Microsoft seems to do that too.
>>
>> driverspecs.h is also missing an include guard but it is part of the
>> React DDK so I didn't want to mess around with editing at the moment.
>>
>> --David
>>
>> On Tue, May 9, 2017 at 9:07 PM, Liu Hao <[email protected] <mailto:
>> [email protected]>> wrote:
>>
>> On 2017/5/10 10:34, David Grayson wrote:
>>
>> This patch adds "#include <driverspecs.h>" near the end of
>> specstrings.h,
>> because the same is done in Microsoft's version of
>> specstrings.h. With
>> this patch, I am able to build Microsoft's devcon utility without
>> modification. Thanks!
>>
>> You must `#include` that header AFTER the `#ifdef __cplusplus ...
>> #endif` block.
>>
>> Anyway, this header seems short of a header guard. I shall ask
>> someone for sure.
>>
>> -- Best regards,
>> LH_Mouse
>>
>>
>>
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> _______________________________________________
>> Mingw-w64-public mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
>>
>>
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public