<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, May 12, 2014 at 12:18 PM, Hovik Melikyan <span dir="ltr"><<a href="mailto:hovik.melikyan@gmail.com" target="_blank">hovik.melikyan@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="">On Mon, May 12, 2014 at 7:20 PM, Reid Kleckner <<a href="mailto:rnk@google.com">rnk@google.com</a>> wrote:<br>

><br>
> You can probably work around this with -D__GNUC__=4.<br>
><br>
> However, why do you need -fms-compatibility if you are using MinGW?<br>
><br>
<br>
</div>Clang puts itself into MS compatibility mode when the target is e.g.<br>
i686-pc-win32. A better workaround for me was to use<br>
-fno-ms-compatibility.<br></blockquote><div><br></div><div>So, you're using MinGW headers with i686-pc-win32 instead of i686-pc-mingw32.  The former target aims for MSVC compatibility and the latter MinGW/GCC compatibility.</div>
<div><br></div><div>Using MinGW headers with -win32 is crossing the streams, and I don't recommend doing it, unless you have a really good reason.  You are probably going to have problems linking C++ binaries or passing structs across ABI boundaries.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
In any case, I don't think this<br>
<br>
    Builder.defineMacro("__weak", "__attribute__((objc_ownership(weak)))");<br>
<br>
was a good idea, as it makes some of the most critical attributes in<br>
Objective C dependent on a compiler extension (__attribute__) which is<br>
not always available at compile time!<br></blockquote><div><br></div><div>Well, Clang always provides __attribute__, so it's perfectly reasonable to implement __weak this way.  MinGW shouldn't be messing with the implementors namespace this way.</div>
<div><br></div><div>That said, I'm in favor of making these contextual keywords.  We have the infrastructure to do it, so let's avoid the pre-processor cruftiness.</div></div></div></div>