[PATCH 1/1] build/cmake: Fix CMP0023 warning with libffi
Jan Vesely
jan.vesely at rutgers.edu
Wed Sep 3 07:55:42 PDT 2014
On Wed, 2014-09-03 at 10:41 -0400, Brad King wrote:
> On 09/03/2014 05:26 AM, Dan Liew wrote:
> >>>> - target_link_libraries( LLVMInterpreter ${FFI_LIBRARY_PATH} )
> >>>> + target_link_libraries( LLVMInterpreter ${cmake_2_8_12_PRIVATE} ${FFI_LIBRARY_PATH} )
> >
> > Shouldn't you be using ${cmake_2_8_12_INTERFACE} rather than
> > ${cmake_2_8_12_PRIVATE}? If you build using libffi presumably any
> > client of LLVM using the interpreter needs to link against it too
> > hence this library should end up in INTERFACE_LINK_LIBRARIES
>
> Unless LLVMInterpreter's header files make reference to libffi
> symbols such that application code including them might get
> direct references, then PRIVATE is the correct keyword. You
> are telling CMake that the library has an implementation-only
> dependency on the ffi library.
thank you both for looking at this.
libffi is only used in one file
(lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp) and it is never
part of the llvm interface.
>
> In the case that LLVMInterpreter is a static library CMake will
> still take care of linking dependents transitively to ffi. It
> puts in INTERFACE_LINK_LIBRARIES a $<LINK_ONLY:ffi> generator
> expression that tells dependents of LLVMInterpreter that they
> need to link to the library but need no usage requirements
> from it.
I wondered how cmake handles link dependencies of static libraries.
thanks for the explanation.
jan
>
> -Brad
>
--
Jan Vesely <jan.vesely at rutgers.edu>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140903/77d533e9/attachment.sig>
More information about the llvm-commits
mailing list