[cfe-dev] [libc++] Compiling with MinGW-w64

Mateusz Mikuła via cfe-dev cfe-dev at lists.llvm.org
Thu Mar 23 11:38:57 PDT 2017


 CMAKE_REQUIRED_LIBRARIES is empty and out-of-tree build with removed
CMake flags didn't help.



------ Original Message ------
Subject: Re: [cfe-dev] [libc++] Compiling with MinGW-w64
Date: Thu, 23 Mar 2017 05:31:02 -0600
To: Mateusz Mikuła
From: Eric Fiselier
> Also what's your exact CMake invocation?
>
> /Eric
>
> On Thu, Mar 23, 2017 at 5:29 AM, Eric Fiselier <eric at efcs.ca
> <mailto:eric at efcs.ca>> wrote:
>
>
>
>     On Thu, Mar 23, 2017 at 4:55 AM, Mateusz Mikuła <mati865 at gmail.com
>     <mailto:mati865 at gmail.com>> wrote:
>
>          Yes, logs come from unmodified build of in-tree build of libc++.
>
>         Here is NODEFAULTLIBS check
>
>             Performing C++ SOURCE FILE Test
>             LIBCXXABI_HAS_NODEFAULTLIBS_FLAG succeeded with the
>             following output:
>             Change Dir:
>             D:/projekty/msys2/MINGW-packages/mingw-w64-clang/src/build-i686/CMakeFiles/CMakeTmp
>
>             Run Build Command:"D:/msys64/usr/bin/make.exe"
>             "cmTC_a0b32/fast"
>             /usr/bin/make -f CMakeFiles/cmTC_a0b32.dir/build.make
>             CMakeFiles/cmTC_a0b32.dir/build
>             [1;34mmake[1]: [0m Entering directory
>             '/d/projekty/msys2/MINGW-packages/mingw-w64-clang/src/build-i686/CMakeFiles/CMakeTmp'
>             Building CXX object CMakeFiles/cmTC_a0b32.dir/src.cxx.obj
>             /D/msys64/mingw32/bin/g++.exe     -D_GNU_SOURCE -Wall -W
>             -Wno-unused-parameter -Wwrite-strings -Wcast-qual
>             -Wno-missing-field-initializers -pedantic -Wno-long-long
>             -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor
>             -Wno-comment -Werror=date-time -std=gnu++11
>             -DLIBCXXABI_HAS_NODEFAULTLIBS_FLAG   -nodefaultlibs -o
>             CMakeFiles/cmTC_a0b32.dir/src.cxx.obj -c
>             /D/projekty/msys2/MINGW-packages/mingw-w64-clang/src/build-i686/CMakeFiles/CMakeTmp/src.cxx
>             Linking CXX executable cmTC_a0b32.exe
>             /D/msys64/mingw32/bin/cmake.exe -E remove -f
>             CMakeFiles/cmTC_a0b32.dir/objects.a
>             /D/msys64/mingw32/bin/ar.exe cr
>             CMakeFiles/cmTC_a0b32.dir/objects.a
>             "CMakeFiles/cmTC_a0b32.dir/src.cxx.obj"
>             /D/msys64/mingw32/bin/g++.exe  -D_GNU_SOURCE -Wall -W
>             -Wno-unused-parameter -Wwrite-strings -Wcast-qual
>             -Wno-missing-field-initializers -pedantic -Wno-long-long
>             -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor
>             -Wno-comment -Werror=date-time -std=gnu++11
>             -DLIBCXXABI_HAS_NODEFAULTLIBS_FLAG  -pipe
>             -Wl,--stack,16777216  -Wl,--whole-archive
>             CMakeFiles/cmTC_a0b32.dir/objects.a
>             -Wl,--no-whole-archive  -o cmTC_a0b32.exe
>             -Wl,--major-image-version,0,--minor-image-version,0
>             -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32
>             -loleaut32 -luuid -lcomdlg32 -ladvapi32
>             [1;34mmake[1]: [0m Leaving directory
>             '/d/projekty/msys2/MINGW-packages/mingw-w64-clang/src/build-i686/CMakeFiles/CMakeTmp'
>
>             Source file was:
>             int main() { return 0; }
>
>
>         I'll try out of tree build soon.
>
>
>     I don't think that will make a difference. LLVM isn't adding these
>     libraries AFAIK. They must be getting automatically added by CMake.
>     Can you check if they're getting added via "CMAKE_REQUIRED_LIBRARIES"?
>
>     I've been looking for CMake documentation about this but I can't
>     find anything.
>
>     /Eric
>
>
>
>
>         ------ Original Message ------
>         Subject: Re: [cfe-dev] [libc++] Compiling with MinGW-w64
>         Date: Thu, 23 Mar 2017 02:34:09 -0600
>         To: Mateusz Mikuła
>         From: Eric Fiselier
>>         Just to verify you're not manually adding any of the
>>         following libraries, right?
>>
>>         -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32
>>         -loleaut32 -luuid -lcomdlg32 -ladvapi32
>>         /Eric
>>
>>         On Wed, Mar 22, 2017 at 7:04 PM, Eric Fiselier <eric at efcs.ca
>>         <mailto:eric at efcs.ca>> wrote:
>>
>>
>>
>>             On Fri, Mar 17, 2017 at 4:34 PM, Mateusz Mikuła via
>>             cfe-dev <cfe-dev at lists.llvm.org
>>             <mailto:cfe-dev at lists.llvm.org>> wrote:
>>
>>                 Hello,
>>
>>                 I'm planing to get libc++ compiling with MinGW-w64,
>>                 right now without patches it fails with:
>>
>>                     CMake Error at projects/libcxx/CMakeLists.txt:396
>>                     (message):
>>                       C++11 or greater is required but the compiler
>>                     does not support c++11
>>
>>                 It is caused by adding `-nodefaultlibs` flag (it
>>                 passes it's own check [1]
>>                 <https://github.com/llvm-mirror/libcxx/blob/master/cmake/config-ix.cmake#L27>).
>>                 However many following checks fail due to undefined
>>                 references, results with gcc [2]
>>                 <https://reviews.llvm.org/P7975> and clang [3]
>>                 <https://reviews.llvm.org/P7976>.
>>
>>             CMake seems to be adding system libraries automagically.
>>             Specifically it adds -lgcc_s -lkernel32 -luser32 -lgdi32
>>             -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32
>>             -ladvapi32.
>>             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.
>>
>>
>>
>>                 Hard-coding 0 for LIBCXX_SUPPORTS_NODEFAULTLIBS_FLAG
>>                 allows it go finish configuration and fail during
>>                 build (that's another story).
>>
>>                 `-nodefaultlibs` appears several times in libc++ and
>>                 libc++abi code and I'm not sure about cleanest way to
>>                 fix/workaround it.
>>
>>                 Any suggestions?
>>
>>
>>                 [1]
>>                 https://github.com/llvm-mirror/libcxx/blob/master/cmake/config-ix.cmake#L27
>>                 <https://github.com/llvm-mirror/libcxx/blob/master/cmake/config-ix.cmake#L27>
>>
>>                 [2] https://reviews.llvm.org/P7975
>>
>>                 [3] https://reviews.llvm.org/P7976
>>
>>
>>                 Thanks,
>>
>>                 Mateusz
>>
>>
>>                 _______________________________________________
>>                 cfe-dev mailing list
>>                 cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
>>                 http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>                 <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
>>
>>
>>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170323/8d6d4769/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170323/8d6d4769/attachment.sig>


More information about the cfe-dev mailing list