Óscar Fuentes <ofv at wanadoo.es> wrote:> The following message is a courtesy copy of an article
> that has been posted to gmane.comp.compilers.llvm.devel as well.
>
> nobled <nobled at dreamwidth.org> writes:
>
>>>> The LLVM 2.7 release notes say you can use ./configure
--enable-shared
>>>> to build LLVM as a shared library (libLLVM2.7.so), and the LLVM
tools
>>>> will link against that instead of including the static
libraries, so I
>>>> was wondering:
>>>>
>>>> Is there a way to configure LLVM the same way using CMake (so
it can
>>>> work on Windows)?
>>>
>>> There is no way right now. It could be easily implemented for
MinGW, but
>>> not for MSVC. The binutils included with MinGW do not require
>>> __declspec(dllexport/dllimport) for exporting/importing symbols on
dlls.
>>>
>>> [snip]
>> Okay, but in the *general* case, how do I configure LLVM that way with
>> CMake (not necessarily on Windows)? running `cmake -i` never gives any
>> option that looks like "compile a shared library". Do the
./configure
>> and cmake ways of compiling not have parity, options-wise?
>
> No options-wise. Maybe some functionality-wise.
>
> On cmake, when you want to generate shared libraries, you pass
> -DBUILD_SHARED_LIBS That's a general cmake option, i.e. it should work
> on all projects that use cmake (as far as they make sense for each
> specific project.)
>
> AFAIK, the `configure&make' build had so-so support for shared
> libraries. Maybe that is fixed now. What they implemented recently was
> one option for generating a single shared library containing all LLVM.
Right, that was my original question--when you build libLLVM2.7.so
with --enable-shared, LLVM's own tools link against it, but how do you
link third-party sources against it (instead of the individual shared
libs)? Is there an llvm-config option that will give the
cflags/ldflags for that? (and if there isn't, would it be easy to add
one for 2.8?)