smeenai planned changes to this revision.
smeenai added a comment.

@rsmith: I think your points are valid, and I should have been more explicit 
with the motivation :)

The issue is with linking, not with compiling. When we call 
`check_cxx_source_compiles`, the compiler driver passes all the standard C++ 
libraries for the platform to the link step, which can lead to spurious link 
failures when cross-compiling during the configure step, which then manifest as 
a bad configuration.

When we're compiling the library itself, we pass `-nodefaultlibs` to the driver 
<https://reviews.llvm.org/diffusion/L/browse/libcxx/trunk/lib/CMakeLists.txt;279330$76>
 to avoid the standard libraries from creeping in, and then explicitly add any 
required libraries 
<https://reviews.llvm.org/diffusion/L/browse/libcxx/trunk/lib/CMakeLists.txt;279330$66-72>.
 Conceptually, I want to do the same for any `check_cxx_source_compiles` calls, 
so that the configuration linking behavior matches the library linking 
behavior. I'm thinking the best way to accomplish this is to globally add 
`-nodefaultlib` to `CMAKE_REQUIRED_FLAGS`, and then globally set 
`CMAKE_REQUIRED_LIBRARIES` to the required set of libraries, similar to what 
the library build is doing. Does that make sense?


https://reviews.llvm.org/D23719



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to