[llvm] r337366 - [CMake] Export the LLVM_LINK_LLVM_DYLIB setting

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 23 16:30:51 PDT 2018


Philip Pfaffe via llvm-commits <llvm-commits at lists.llvm.org> writes:
> Author: pfaffe
> Date: Wed Jul 18 01:53:31 2018
> New Revision: 337366
>
> URL: http://llvm.org/viewvc/llvm-project?rev=337366&view=rev
> Log:
> [CMake] Export the LLVM_LINK_LLVM_DYLIB setting
>
> Summary:
> When building out-of-tree tools, there are several macros available to
> automate linking against llvm. An examples is `add_llvm_executable`, or
> the clang variant of this.
>
> These macros use the LLVM_LINK_LLVM_DYLIB option to decide whether to
> link against libraries defined by setting LLVM_LINK_COMPONENTS or to
> link against libLLVM instead. Currently this is problematic in
> out-of-tree targets, because they cannot identify whether this option is
> required or even available. If the option was enabled in LLVM's own
> build, the clang libraries are built against libLLVM, so a client
> linking against those must link against it too. On the other hand the
> client can't just always link against it, because it might not be
> available.

I'm not sure I understand the problem this is solving, but it breaks the
case where an out-of-tree target tries to link the dylib when the
in-tree build does not. Specifically, if I build llvm with
LLVM_LINK_LLVM_DYLIB=Off (but LLVM_BUILD_LLVM_DYLIB=On), and then I try
to build clang against this with LLVM_LINK_LLVM_DYLIB=On, clang's
setting of the variable seems to be ignored and I get link errors as it
looks for static libraries.

Can this be made to respect externally setting the variable? Maybe it
should only show up if set, for example? Alternatively, do external
projects need to implement their own version of the variable, like a
CLANG_LINK_LLVM_DYLIB?

> This is related to D44391, but that change assumed the client knew
> whether they wanted the dylib or not.
>
> Reviewers: mgorny, beanz, labath
>
> Reviewed By: mgorny
>
> Subscribers: bollu, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D49193
>
> Modified:
>     llvm/trunk/cmake/modules/LLVMConfig.cmake.in
>
> Modified: llvm/trunk/cmake/modules/LLVMConfig.cmake.in
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/LLVMConfig.cmake.in?rev=337366&r1=337365&r2=337366&view=diff
> ==============================================================================
>
> --- llvm/trunk/cmake/modules/LLVMConfig.cmake.in (original)
> +++ llvm/trunk/cmake/modules/LLVMConfig.cmake.in Wed Jul 18 01:53:31 2018
> @@ -13,6 +13,8 @@ set(LLVM_COMMON_DEPENDS @LLVM_COMMON_DEP
>
>  set(LLVM_AVAILABLE_LIBS @LLVM_AVAILABLE_LIBS@)
>
> +set(LLVM_LINK_LLVM_DYLIB @LLVM_LINK_LLVM_DYLIB@)
> +
>  set(LLVM_DYLIB_COMPONENTS @LLVM_DYLIB_COMPONENTS@)
>
>  set(LLVM_ALL_TARGETS @LLVM_ALL_TARGETS@)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list