[llvm-dev] Windows vs Mac/Linux distribution discrepancy

Zachary Turner via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 23 12:40:59 PDT 2020


Dylibs (dlls) are not included because of COFF limitations.  You can’t
export an entire C++ codebase from a DLL because you overflow the number of
publicly exportable symbols.  Without a clear API boundary  this probably
won’t happen soon.

On Thu, Jul 23, 2020 at 12:09 PM Aaron Smith via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> The Visual Studio installer has an option to install Clang tools for
> Windows or you can build from source. I believe all the tools are not
> included in the prebuilt package because of size.
>
> On Thu, Jul 23, 2020 at 11:32 AM Dimitry Andric via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> On 23 Jul 2020, at 20:00, Alex Denisov via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>> >
>> > I’m trying to port some code built on top of LLVM/Clang to Windows,
>> > however I just discovered that the precompiled versions from
>> releases.llvm.org
>> > are missing all the libLLVM* and libclang* dlls.
>>
>> This is controlled by the following CMake settings (see
>> https://llvm.org/docs/CMake.html#llvm-specific-variables):
>>
>> LLVM_BUILD_LLVM_DYLIB:BOOL
>>
>> If enabled, the target for building the libLLVM shared library is added.
>> This library contains all of LLVM’s components in a single shared library.
>> Defaults to OFF. This cannot be used in conjunction with BUILD_SHARED_LIBS.
>> Tools will only be linked to the libLLVM shared library if
>> LLVM_LINK_LLVM_DYLIB is also ON. The components in the library can be
>> customised by setting LLVM_DYLIB_COMPONENTS to a list of the desired
>> components. This option is not available on Windows.
>>
>> LLVM_LINK_LLVM_DYLIB:BOOL
>>
>> If enabled, tools will be linked with the libLLVM shared library.
>> Defaults to OFF. Setting LLVM_LINK_LLVM_DYLIB to ON also sets
>> LLVM_BUILD_LLVM_DYLIB to ON. This option is not available on Windows.
>>
>> E.g. these options are off by default (probably because it saves build
>> time, but I'm just guessing here), and are not available on Windows (for
>> reasons unknown to me).
>>
>>
>> > Also, some tools (e.g. opt) are missing on Windows as well.
>>
>> I don't know about that, but maybe Hans Wennborg has more information.
>>
>>
>> > I’m curious whether it’s a technical limitation (i.e. certain things
>> don’t work on Windows),
>> > or something else?
>> >
>> > For the others out there building cross-platform tools based on LLVM:
>> > how do you deal with this issue? Am I supposed to build LLVM myself
>> there?
>>
>> Either you can link against distro-provided LLVM dynamic libraries, like
>> those shipped by Debian and Ubuntu, or you can link against the static
>> libraries in the release tarballs.
>>
>> But obviously, you could always build them yourself, and ship them with
>> your tools. This would give you the most flexibility.
>>
>> -Dimitry
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200723/c9055f7a/attachment.html>


More information about the llvm-dev mailing list