<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body smarttemplateinserted="true" bgcolor="#FFFFFF" text="#000000">
    <div id="smartTemplate4-template">
      <p> Missing mingw-w64 libs case is most likely closed but there is
        conflict between libc++ and libc++abi function definitions. I've
        switched to trunk as well.<br>
      </p>
    </div>
    The former have '_LIBCPP_FUNC_VIS' to mark them as
    dllexport/dllimport but libc++abi redefines them without attributes.<br>
    <p>Clang log: <a class="moz-txt-link-freetext" href="https://reviews.llvm.org/P7983">https://reviews.llvm.org/P7983</a><br>
    </p>
    <p>GCC log: <a class="moz-txt-link-freetext" href="https://reviews.llvm.org/P7982">https://reviews.llvm.org/P7982</a><br>
    </p>
    <p><br>
    </p>
    <p>Let's take a look at GCC-produced (Clang is still not entirely
      fine as seen in log; multiple definition of ...) objects
      containing bad_cast function as it is first undefined reference:</p>
    <p>error:<br>
CMakeFiles/cxxabi_shared.dir/objects.a(cxa_aux_runtime.cpp.obj):cxa_aux_runtime.cpp:(.text+0x17):
      undefined reference to `__imp__ZNSt8bad_castC1Ev'<br>
CMakeFiles/cxxabi_shared.dir/objects.a(cxa_aux_runtime.cpp.obj):cxa_aux_runtime.cpp:(.text+0x1e):
      undefined reference to `__imp__ZNSt8bad_castD1Ev'<br>
    </p>
    nm
build-x86_64-w64-mingw32/projects/libcxxabi/src/CMakeFiles/cxxabi_objects.dir/cxa_aux_runtime.cpp.obj
    | grep bad_cast<br>
    0000000000000000 r .rdata$_ZTISt8bad_cast<br>
    0000000000000000 r .rdata$_ZTSSt8bad_cast<br>
    0000000000000000 T __cxa_bad_cast<br>
                     U __imp__ZNSt8bad_castC1Ev<br>
                     U __imp__ZNSt8bad_castD1Ev<br>
    0000000000000000 R _ZTISt8bad_cast<br>
    0000000000000000 R _ZTSSt8bad_cast<br>
    <br>
    nm
build-x86_64-w64-mingw32/projects/libcxxabi/src/CMakeFiles/cxxabi_objects.dir/stdlib_typeinfo.cpp.obj
    | grep bad_cast<br>
    0000000000000000 r .rdata$_ZTISt8bad_cast<br>
    0000000000000000 r .rdata$_ZTSSt8bad_cast<br>
    0000000000000000 r .rdata$_ZTVSt8bad_cast<br>
                     U __imp__ZTVSt8bad_cast<br>
    0000000000000000 T _ZNKSt8bad_cast4whatEv<br>
    00000000000000e0 T _ZNSt8bad_castC1Ev<br>
    00000000000000e0 T _ZNSt8bad_castC2Ev<br>
    0000000000000040 T _ZNSt8bad_castD0Ev<br>
    0000000000000020 T _ZNSt8bad_castD1Ev<br>
    0000000000000020 T _ZNSt8bad_castD2Ev<br>
    0000000000000000 R _ZTISt8bad_cast<br>
    0000000000000000 R _ZTSSt8bad_cast<br>
    0000000000000000 R _ZTVSt8bad_cast<br>
    <br>
    <p>I was not able to fix it by myself so I'm asking for help again.<br>
      Should I add someone to this discussion?</p>
    <p><br>
    </p>
    <p>Regards,</p>
    <p>Mateusz<br>
    </p>
    <br>
    <div id="smartTemplate4-quoteHeader">------ Original Message ------<br>
      Subject: Re: [cfe-dev] [libc++] Compiling with MinGW-w64<br>
      Date: Wed, 22 Mar 2017 19:04:42 -0600<br>
      To: Mateusz Mikuła, Cfe-dev<br>
      From: Eric Fiselier</div>
    <blockquote
cite="mid:CAB=TDAXHMX=GGxxCcfFYPXAj6ikmTegUr3b8_X4pHjeF2vgufQ@mail.gmail.com"
      type="cite">
      <div dir="ltr"><br>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Fri, Mar 17, 2017 at 4:34 PM,
            Mateusz Mikuła via cfe-dev <span dir="ltr"><<a
                moz-do-not-send="true"
                href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF">
                <p>Hello,</p>
                <p>I'm planing to get libc++ compiling with MinGW-w64,
                  right now without patches it fails with:</p>
                <blockquote>
                  <p>CMake Error at projects/libcxx/CMakeLists.txt<wbr>:396
                    (message):<br>
                      C++11 or greater is required but the compiler does
                    not support c++11</p>
                </blockquote>
                <p>It is caused by adding `-nodefaultlibs` flag (it
                  passes it's own check <a moz-do-not-send="true"
href="https://github.com/llvm-mirror/libcxx/blob/master/cmake/config-ix.cmake#L27"
                    target="_blank">[1]</a>). However many following
                  checks fail due to undefined references, results with
                  gcc <a moz-do-not-send="true"
                    href="https://reviews.llvm.org/P7975"
                    target="_blank">[2]</a> and clang <a
                    moz-do-not-send="true"
                    href="https://reviews.llvm.org/P7976"
                    target="_blank">[3]</a>.</p>
              </div>
            </blockquote>
            <div>CMake seems to be adding system libraries
              automagically. Specifically it adds <span style="background-color:rgb(255,254,245);color:rgb(0,0,0);font-family:menlo,consolas,monaco,monospace;font-size:12px;white-space:pre-wrap"> -lgcc_s -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32.</span></div>
            <div>I'm guessing that these libraries are where the
              undefined symbols are coming from, and I suspect the
              correct fix is to somehow prevent CMake from adding them.</div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF">
                <p>Hard-coding 0 for LIBCXX_SUPPORTS_NODEFAULTLIBS_<wbr>FLAG
                  allows it go finish configuration and fail during
                  build (that's another story). <br>
                </p>
                <p>`-nodefaultlibs` appears several times in libc++ and
                  libc++abi code and I'm not sure about cleanest way to
                  fix/workaround it.</p>
                <p>Any suggestions?<br>
                </p>
                <p><br>
                </p>
                <p>[1]
                  <a moz-do-not-send="true"
class="gmail-m_5555656344556012329m_-6702888354140731109moz-txt-link-freetext"
href="https://github.com/llvm-mirror/libcxx/blob/master/cmake/config-ix.cmake#L27"
                    target="_blank">https://github.com/llvm-mirror<wbr>/libcxx/blob/master/cmake/<wbr>config-ix.cmake#L27</a></p>
                <p>[2] <a moz-do-not-send="true"
class="gmail-m_5555656344556012329m_-6702888354140731109moz-txt-link-freetext"
                    href="https://reviews.llvm.org/P7975"
                    target="_blank">https://reviews.llvm.org/P7975</a><br>
                </p>
                <p>[3] <a moz-do-not-send="true"
class="gmail-m_5555656344556012329m_-6702888354140731109moz-txt-link-freetext"
                    href="https://reviews.llvm.org/P7976"
                    target="_blank">https://reviews.llvm.org/P7976</a></p>
                <p><br>
                </p>
                <p>Thanks,</p>
                <p>Mateusz<br>
                </p>
              </div>
              <br>
              ______________________________<wbr>_________________<br>
              cfe-dev mailing list<br>
              <a moz-do-not-send="true"
                href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
              <a moz-do-not-send="true"
                href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
                rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
              <br>
            </blockquote>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>