[PATCH] D12488: Enable linking tools, shared libraries against libLLVM
Andrew Wilkins via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 31 00:02:51 PDT 2015
axw created this revision.
axw added reviewers: chandlerc, beanz, pcc.
axw added a subscriber: llvm-commits.
Three closely related changes, to have a mode in which we link all
executables and shared libraries against libLLVM.
1. Add a new LLVM_LINK_LLVM_DYLIB cmake option, which, when ON, will link
executables and shared libraries against libLLVM. For this to work, it
is necessary to also set LLVM_BUILD_LLVM_DYLIB and LLVM_DYLIB_EXPORT_ALL.
It is not strictly necessary to set LLVM_DISABLE_LLVM_DYLIB_ATEXIT, but
we also default to OFF in this mode, or tools tend to misbehave (e.g.
stdout may not flush on exit when output is buffered.)
llvm-config and Tablegen do not use libLLVM, as they are dependencies of
libLLVM.
2. Modify llvm-go to take a new flag, "linkmode=component-libs|dylib".
Depending on which one is passed (default is component-libs), we link
with the individual libraries or libLLVM respectively. We pass in dylib
when LLVM_LINK_LLVM_DYLIB is ON.
3. Fix LLVM_DYLIB_EXPORT_ALL on Linux, and expand the symbols exported to
actually export all. Don't strip leading underscore from symbols on Linux,
and make sure we get all exported symbols and weak-with-default symbols
("W" in nm output). Without these changes, passes won't load because
the "Annotate..." symbols defined in lib/Support/Valigrind.cpp are not
found.
Testing:
- Ran default build ("ninja") with LLVM, clang, compiler-rt, llgo, lldb.
- Ran "check", "check-clang", "check-tsan", "check-libgo" targets. I've
never had much success with LLDB tests, and llgoi is currently broken
so check-llgo fails for an unrelated reason.
- Ran "lldb" to ensure it loads.
http://reviews.llvm.org/D12488
Files:
CMakeLists.txt
cmake/modules/AddLLVM.cmake
cmake/modules/TableGen.cmake
tools/llvm-config/CMakeLists.txt
tools/llvm-go/llvm-go.go
tools/llvm-shlib/CMakeLists.txt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D12488.33557.patch
Type: text/x-patch
Size: 14274 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150831/508f8855/attachment.bin>
More information about the llvm-commits
mailing list