[libcxx-commits] [PATCH] D68791: [libc++] Fix linker script generation

Petr Hosek via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Oct 10 14:05:50 PDT 2019


phosek marked an inline comment as done.
phosek added inline comments.


================
Comment at: libcxx/cmake/Modules/DefineLinkerScript.cmake:34
     foreach(lib IN LISTS interface_libs)
-      if (TARGET "${lib}")
+      if (TARGET "${lib}" OR
+          (${lib} MATCHES "cxxabi(_static|_shared)?" AND HAVE_LIBCXXABI) OR
----------------
ldionne wrote:
> ldionne wrote:
> > How can it be that `${lib}` is equal to `cxxabi_static` or `cxxabi_shared`, but it's not a target? The same applies to the `unwind_xxx` targets. I think this has to do with how you configure your build for Fuchsia with `HAVE_LIBCXXABI`. Can you show me exactly what arguments are used in the CMake invocation?
> > 
> > TBH, I'd like to better understand the purpose of `HAVE_LIBCXXABI` and `HAVE_LIBUNWIND`, since those certainly look like slight hacks that would be nice to support better.
> However, feel free to commit this for the time being in order to fix your build. But I'd really like to have the discussion about `HAVE_LIBCXXABI`, since I've been meaning to have it for a while.
The issue is that when building these in the runtimes build, they get added in whatever order user specifies on the command-line so by the time we're processing libc++, libc++abi and libunwind may have not yet been processed so `if(TARGET "${lib})` is going to fail. D68833 is an alternative solution that's trying to address this issue more generally.


Repository:
  rCXX libc++

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68791/new/

https://reviews.llvm.org/D68791





More information about the libcxx-commits mailing list