[libcxx-commits] [PATCH] D112126: [libunwind] Try to add -unwindlib=none while configuring and building libunwind
Harald van Dijk via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Oct 25 09:03:58 PDT 2021
hvdijk added a comment.
In D112126#3084606 <https://reviews.llvm.org/D112126#3084606>, @ldionne wrote:
> Honestly, this feels a bit messy to me. At some point I had a patch to set `CMAKE_TRY_COMPILE_TARGET_TYPE` to `STATIC` for all runtimes, unconditionally. We ended up not doing it over some concerns about the correctness of the change, however perhaps we should re-consider that?
@mstorsjo wrote earlier that that approach causes tests that rely on linking to pass when they should not (checking whether libraries exist), and I fear that may be an unavoidable problem since the sole purpose of `CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC` is to avoid having CMake run the linker at configure time.
> Also TBH the more I look at it, the more I think that `check_c_compiler_flag` and the similar utilities provided by CMake out of the box don't work that well for our use case, since we run without a toolchain. Maybe we should consider moving away from those in the runtimes.
compiler-rt builtins & crt do not need linker tests so `CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC` is fine, and builtins already sets that. crt doesn't, and will need the same handling as builtins, but that should be possible without any issues. With `CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC` set, `check_c_compiler_flag` does work.
libcxx and libcxxabi are odd in that they are built without a fully functional C++ compiler, but with a fully functional C compiler, and the C compiler is used to the relevant tests, the C++ compiler is simply not checked by CMake so everything works out. (I have not checked how that is done, I only see from my build logs that it never makes any mention of clang++.)
libunwind is the only special one, it needs to run linker tests before we have a fully functional C compiler, so having special tricks in there to make the C compiler *almost* fully functional, functional enough to pass the remaining CMake tests, should be good enough, I think.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D112126/new/
https://reviews.llvm.org/D112126
More information about the libcxx-commits
mailing list