[llvm-dev] Shipping LLVM.dll for the C API with the Windows installer. (original) (raw)
Jakob Bornecrantz via llvm-dev llvm-dev at lists.llvm.org
Wed Apr 5 11:40:50 PDT 2017
- Previous message: [llvm-dev] Shipping LLVM.dll for the C API with the Windows installer.
- Next message: [llvm-dev] Shipping LLVM.dll for the C API with the Windows installer.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, Apr 5, 2017 at 5:20 PM, John Brawn <John.Brawn at arm.com> wrote:
We already half-have this, the LLVMBUILDLLVMCDYLIB cmake option builds a shared object which exports the llvm-c interface but it only works on Darwin.
tools/llvm-shlib/CMakeLists.txt is where how this is done is defined, and it looks like it does it by: * build LLVM.so * use nm+awk+sed to pick out the symbols starting with LLVM * build LLVM-C.so using a -reexportlibrary linker option I'm thinking that maybe we could make this not-darwin-specific by making use of utils/extractsymbols.py: * edit extractsymbols.py to add a --onlyunmangled option (or maybe --onlyprefix=LLVM or something like that) * on non-darwin use that instead of the existing command to get the symbols to export (or: make extractsymbols.py work on Darwin) * instead of building LLVM-C.so from LLVM.so using this -reexportlibrary option, instead build LLVM-C.so from the same libraries that LLVM.so is built from (where I use .so above, it also applies to .dll) John
Thanks for the info John!
I tried to enable LLVM_BUILD_LLVM_C_DYLIB on my linux machine to play around a little bit. I disabled the APPLE check to get past that. The config failed if I had BUILD_SHARED_LIBS also set to true. If I tried that without the flag it complained about missing: builddir/./lib/libLLVM.so
Which is a bit weird since it builds a lib/libLLVM-5.0svn.so.
I have to admit I'm a tiny bit in over my head here with the cmake scripts here.
Cheers, Jakob.
-----Original Message----- From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Jakob Bornecrantz via llvm-dev Sent: 05 April 2017 12:51 To: llvm-dev Subject: Re: [llvm-dev] Shipping LLVM.dll for the C API with the Windows installer.
On Thu, Mar 30, 2017 at 4:46 PM, Jakob Bornecrantz <wallbraker at gmail.com> wrote: > Hello list! > > So I'm wondering if there is a will to ship a DLL with the C API > exported? LLVM currently ships with LTO.dll which has some C api > functions exported, made from the export file tools/lto/lto.exports, > so it would not be the first DLL LLVM shipped. > > Currently I (and the users of my project[1]) are building it ourselves > using this script[2] derived from the LLVMSharp script[3]. Which adds > a extra long step for all users of ours and other projects like > LLVMSharp in order to use them. > > The resulting LLVM.dll exports 809 functions and weighs in at around > 18mb, so it would make the installer larger. There is also the cost of > maintaining a lists of export for the DLL, but hopefully we can use > the llvm-echo to test it on the windows nodes so any failure to add > new exports gets detected early. > > Now for the bike-shed questions, do we call it LLVM-c.dll or just > LLVM.dll? Annotate all functions with a LLVMEXPORT define or use a > llvm-c.exports file? > > Thoughts and feedback welcome. > > Cheers, Jakob. > > [1] http://volt-lang.org > [2] https://github.com/VoltLang/GenLLVMDLLPy/blob/master/GenLLVMDLL.py > [3] https://github.com/Microsoft/LLVMSharp/blob/master/tools/GenLLVMDLL.ps1 Ping? Any thoughts? What would be the best way to proceed? My cmake-fu is very weak so any pointers here from those knowledgeable and stakeholders in the code would be greatly appreciated. Cheers, Jakob.
LLVM Developers mailing list llvm-dev at lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
- Previous message: [llvm-dev] Shipping LLVM.dll for the C API with the Windows installer.
- Next message: [llvm-dev] Shipping LLVM.dll for the C API with the Windows installer.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]