Quantcast

[libc++] Compiling with MinGW-w64

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[libc++] Compiling with MinGW-w64

Keane, Erich via cfe-dev

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]). However many following checks fail due to undefined references, results with gcc [2] and clang [3].

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

[2] https://reviews.llvm.org/P7975

[3] https://reviews.llvm.org/P7976


Thanks,

Mateusz


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [libc++] Compiling with MinGW-w64

Keane, Erich via cfe-dev


On Fri, Mar 17, 2017 at 4:34 PM, Mateusz Mikuła via cfe-dev <[hidden email]> 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]). However many following checks fail due to undefined references, results with gcc [2] and clang [3].

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

[2] https://reviews.llvm.org/P7975

[3] https://reviews.llvm.org/P7976


Thanks,

Mateusz


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev



_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [libc++] Compiling with MinGW-w64

Keane, Erich via cfe-dev

 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
make[1]: 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
make[1]: 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 <[hidden email]> wrote:


On Fri, Mar 17, 2017 at 4:34 PM, Mateusz Mikuła via cfe-dev <[hidden email]> 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]). However many following checks fail due to undefined references, results with gcc [2] and clang [3].

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

[2] https://reviews.llvm.org/P7975

[3] https://reviews.llvm.org/P7976


Thanks,

Mateusz


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev





_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [libc++] Compiling with MinGW-w64

Keane, Erich via cfe-dev


On Thu, Mar 23, 2017 at 4:55 AM, Mateusz Mikuła <[hidden email]> 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 <[hidden email]> wrote:


On Fri, Mar 17, 2017 at 4:34 PM, Mateusz Mikuła via cfe-dev <[hidden email]> 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]). However many following checks fail due to undefined references, results with gcc [2] and clang [3].

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

[2] https://reviews.llvm.org/P7975

[3] https://reviews.llvm.org/P7976


Thanks,

Mateusz


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev






_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [libc++] Compiling with MinGW-w64

Keane, Erich via cfe-dev
In PKGBUILD you can see patches for libc++ but they were developed after asking on cfe-dev.

I'll check "CMAKE_REQUIRED_LIBRARIES" when I return home.


------ 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 <[hidden email]> wrote:


On Thu, Mar 23, 2017 at 4:55 AM, Mateusz Mikuła <[hidden email]> 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 <[hidden email]> wrote:


On Fri, Mar 17, 2017 at 4:34 PM, Mateusz Mikuła via cfe-dev <[hidden email]> 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]). However many following checks fail due to undefined references, results with gcc [2] and clang [3].

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

[2] https://reviews.llvm.org/P7975

[3] https://reviews.llvm.org/P7976


Thanks,

Mateusz


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev








_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [libc++] Compiling with MinGW-w64

Keane, Erich via cfe-dev
In reply to this post by Keane, Erich via cfe-dev

 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 <[hidden email]> wrote:


On Thu, Mar 23, 2017 at 4:55 AM, Mateusz Mikuła <[hidden email]> 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 <[hidden email]> wrote:


On Fri, Mar 17, 2017 at 4:34 PM, Mateusz Mikuła via cfe-dev <[hidden email]> 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]). However many following checks fail due to undefined references, results with gcc [2] and clang [3].

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

[2] https://reviews.llvm.org/P7975

[3] https://reviews.llvm.org/P7976


Thanks,

Mateusz


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev








_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

signature.asc (836 bytes) Download Attachment
Loading...