FWIW, I've got a powershell script that builds an exports.def file for recognizable C functions. You could adapt it to Python and make it part of the official build if the LLVM community thinks it will be beneficial to have libLLVM.dll The script is located here: https://github.com/mjsabby/LLVMSharp/blob/master/GenLLVMDLL.ps1 On Wed, Apr 1, 2015 at 9:03 AM, Reid Kleckner <rnk at google.com> wrote:> Windows DLLs generally require that you know what you want to export from > them. LLVM has no export annotations or export lists, so we don't support > building DLLs. If you are using mingw, then ld supports the > --export-all-symbols flag which might work, but I don't think it's well > tested. > > On Tue, Mar 31, 2015 at 11:33 AM, Hayden Livingston < > halivingston at gmail.com> wrote: > >> Upon reading http://llvm.org/docs/GettingStarted.html it says I can >> build shared libs, but when going to the CMake doc ( >> http://llvm.org/docs/CMake.html) it says Shared libraries are not >> supported on Windows and not recommended for other OSes. >> >> Is there a reason why? At least for on Windows. >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150401/2c45ed3e/attachment.html>
Sure, if you just want the C API, it's doable with dumpbin or mingw nm. We have a Unix implementation of that in llvm/tools/llvm-shlib/CMakeLists.txt, and we could definitely take a patch for a dumpbin-powered implementation for Windows. Still, this isn't the same as having the full C++ API available like we do on other platforms. On Wed, Apr 1, 2015 at 9:46 AM, Mukul Sabharwal <mjsabby at gmail.com> wrote:> FWIW, I've got a powershell script that builds an exports.def file for > recognizable C functions. > > You could adapt it to Python and make it part of the official build if the > LLVM community thinks it will be beneficial to have libLLVM.dll > > The script is located here: > > https://github.com/mjsabby/LLVMSharp/blob/master/GenLLVMDLL.ps1 > > On Wed, Apr 1, 2015 at 9:03 AM, Reid Kleckner <rnk at google.com> wrote: > >> Windows DLLs generally require that you know what you want to export from >> them. LLVM has no export annotations or export lists, so we don't support >> building DLLs. If you are using mingw, then ld supports the >> --export-all-symbols flag which might work, but I don't think it's well >> tested. >> >> On Tue, Mar 31, 2015 at 11:33 AM, Hayden Livingston < >> halivingston at gmail.com> wrote: >> >>> Upon reading http://llvm.org/docs/GettingStarted.html it says I can >>> build shared libs, but when going to the CMake doc ( >>> http://llvm.org/docs/CMake.html) it says Shared libraries are not >>> supported on Windows and not recommended for other OSes. >>> >>> Is there a reason why? At least for on Windows. >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >>> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150401/19624b36/attachment.html>
As far as I understand, the issue is to "not exporting every function" (and also potentially exporting C++ functions, which is a lot harder, because it may require "expanding" templates and name-mangiling). To actually support those features, it's necessary to have support from the compiler to say "I want to export this function, I don't want to export this function". For simple cases, then exporting everything may be fine. But for complex software projects, it's typically a bad idea to "export everything". -- Mats On 1 April 2015 at 17:46, Mukul Sabharwal <mjsabby at gmail.com> wrote:> FWIW, I've got a powershell script that builds an exports.def file for > recognizable C functions. > > You could adapt it to Python and make it part of the official build if the > LLVM community thinks it will be beneficial to have libLLVM.dll > > The script is located here: > > https://github.com/mjsabby/LLVMSharp/blob/master/GenLLVMDLL.ps1 > > On Wed, Apr 1, 2015 at 9:03 AM, Reid Kleckner <rnk at google.com> wrote: >> >> Windows DLLs generally require that you know what you want to export from >> them. LLVM has no export annotations or export lists, so we don't support >> building DLLs. If you are using mingw, then ld supports the >> --export-all-symbols flag which might work, but I don't think it's well >> tested. >> >> On Tue, Mar 31, 2015 at 11:33 AM, Hayden Livingston >> <halivingston at gmail.com> wrote: >>> >>> Upon reading http://llvm.org/docs/GettingStarted.html it says I can build >>> shared libs, but when going to the CMake doc >>> (http://llvm.org/docs/CMake.html) it says Shared libraries are not supported >>> on Windows and not recommended for other OSes. >>> >>> Is there a reason why? At least for on Windows. >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >> > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Independently of the technical details, etc., I personally wish there was an official way to have an LLVM DLL. I need it for my project and the way I currently do it is that I import/export every single class/function that I need. This is really not ideal since I need to 'patch' LLVM every time a new release is out. Also, if I need to use an extra class/function, then I need to rebuild LLVM, etc. So, yes, I would for one certainly welcome an official way to get an LLVM DLL... Alan> -----Original Message----- > From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] > On Behalf Of mats petersson > Sent: 01 April 2015 19:31 > To: Mukul Sabharwal > Cc: LLVM Developers Mailing List > Subject: Re: [LLVMdev] LLVM Shared DLL not supported reason > > As far as I understand, the issue is to "not exporting every function" > (and also potentially exporting C++ functions, which is a lot harder,because it> may require "expanding" templates and name-mangiling). To actually support > those features, it's necessary to have support from the compiler to say "Iwant> to export this function, I don't want to export this function". > > For simple cases, then exporting everything may be fine. But for complex > software projects, it's typically a bad idea to "export everything". > > -- > Mats > > On 1 April 2015 at 17:46, Mukul Sabharwal <mjsabby at gmail.com> wrote: > > FWIW, I've got a powershell script that builds an exports.def file for > > recognizable C functions. > > > > You could adapt it to Python and make it part of the official build if > > the LLVM community thinks it will be beneficial to have libLLVM.dll > > > > The script is located here: > > > > https://github.com/mjsabby/LLVMSharp/blob/master/GenLLVMDLL.ps1 > > > > On Wed, Apr 1, 2015 at 9:03 AM, Reid Kleckner <rnk at google.com> wrote: > >> > >> Windows DLLs generally require that you know what you want to export > >> from them. LLVM has no export annotations or export lists, so we > >> don't support building DLLs. If you are using mingw, then ld supports > >> the --export-all-symbols flag which might work, but I don't think > >> it's well tested. > >> > >> On Tue, Mar 31, 2015 at 11:33 AM, Hayden Livingston > >> <halivingston at gmail.com> wrote: > >>> > >>> Upon reading http://llvm.org/docs/GettingStarted.html it says I can > >>> build shared libs, but when going to the CMake doc > >>> (http://llvm.org/docs/CMake.html) it says Shared libraries are not > >>> supported on Windows and not recommended for other OSes. > >>> > >>> Is there a reason why? At least for on Windows. > >>> > >>> _______________________________________________ > >>> LLVM Developers mailing list > >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >>> > >> > > > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev