[cfe-dev] [libc++] Compiling with MinGW-w64
Mateusz Mikuła via cfe-dev
cfe-dev at lists.llvm.org
Thu Mar 23 03:55:47 PDT 2017
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.
------ 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/2456599d/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/2456599d/attachment.sig>
More information about the cfe-dev
mailing list