[Mesa-dev] [PATCH] configure.ac: fix the --disable-llvm-shared-libs build
Tom Stellard
tom at stellard.net
Tue Apr 19 19:59:48 UTC 2016
On Tue, Apr 19, 2016 at 07:39:13PM +0100, Emil Velikov wrote:
> Hi Chuck,
>
> Thanks for chipping in.
>
> On 19 April 2016 at 15:47, Chuck Atkins <chuck.atkins at kitware.com> wrote:
> > This still doesn't quite give what you want. One can also have an llvm with
> > component shared libs. So there's three different options for llvm library
> > configurations: a single shared lib, component shared libs, or component
> > static libs.
> From the three - only single shared lib and component static libs are supported.
>
> Personally I'm leaning that we ought to go with the latter only... Esp
> considering the problems that people tend to have with mesa + steam,
> every so often.
>
> IIRC all the issues that we had with static llvm have been resolved.
> Plus we have great people like Kai who promptly send patches when
> things break (which hasn't happen in a long time)
>
> Tom, what is your view on the topic - are you ok with us switching
> back to static one and/or nuking the shared one ? Iirc Jose was clear
> that in his view one should just static link LLVM. I believe that's
> still the case, right Jose ?
>
The shared option is useful for development, because then you don't
need to rebuild mesa every time you make an LLVM change, so I don't want
to remove it.
I don't really have a strong opinion of what should be default. Static
libraries have the disadvantage of requiring you to explicitly list the
libraries you need, so if a library changes names or a new dependency is
added, the build will break.
Static libraries builds also take up a huge amount of disk/memory since
each pipe driver and state tracker has their own copy of LLVM linked in.
-Tom
> Dave, I believe you guys were building with static llvm and/or private
> version explicitly for mesa. Would shifting to static LLVM be an
> option for you guys ?
>
> > To ensure you're getting just the static libs or just the
> > shared libs, you'll need to wrap the link lines in -Bstatic or -Bdynamic.
> > Something like (in pseudo code, not actual make or autoconf syntax):
> >
> > if use_llvm
> > then
> > if use_llvm_shared
> > then
> > if single_library
> > then
> > # (whatever logic you need to deal with the different library naming
> > issues)
> > LLVM_LIBS="-lLLVM'" or LLVM_LIBS="-LLVM-3.7"
> > else # use llvm component libs
> > LLVM_LIBS="-Wl,--push-state,-Bdynamic `$LLVM_CONFIG --libs
> > $LLVM_COMPONENTS` -Wl,--pop-state"
> > endif
> > else # use_llvm_static
> > LLVM_LIBS="-Wl,--push-state,-Bstatic `$LLVM_CONFIG --libs
> > $LLVM_COMPONENTS` -Wl,--pop-state"
> > endif
> >
> So far we did not need to have the -Bstatic/-Bdynamic as LLVM as of
> recently introduced the experimental option of multiple shared
> libraries. I guess that will lead to confusion as it gets more common
> (less experimental)
>
> > LLVM_LIBS="-L`$LLVM_CONFIG --libdir` $LLVM_LIBS"
> > endif
> >
> > - Chuck
> >
> > On Mon, Apr 18, 2016 at 11:01 PM, Jonathan Gray <jsg at jsg.id.au> wrote:
> >>
> >> This patch is still required for master.
> >>
> >> On Sun, Feb 28, 2016 at 02:47:03PM +1100, Jonathan Gray wrote:
> >> > When building with --disable-llvm-shared-libs use llvm-config --libfiles
> >> > instead of of --libs so the full path to the .a files is used instead of
> >> > -lname.
> >> >
> I would imagine that the issue here is cause because the llvm
> libraries are not in the standard location correct ? I.e. they are
> places somewhere like /usr/lib/llvm while the linker looks only in
> /usr/lib.
>
> Personally I'm fine with the using --libnames when static linking, but
> I'd appreciate if we can check that different versions of llvm-config
> produce the same (correct) output throughout.
> Based on the llvm-config code --libnames exists since 3.3.0 (at least)
> so that's great. Running 3.7 and it's fine, although I cannot test
> other versions, can anyone else it a try ?
>
> * OpenCL - 3.5.0
> * r300 - 'any' (3.3.0) LLVM
> This should be demoted to a warning and a big fat note should be added
> in the GL_VERSION string... But that's another topic
> * r600/radeonsi - 3.6.0
> * swr 3.6.0
> * llvmpipe - 3.3.0
>
> Thanks
> Emil
More information about the mesa-dev
mailing list