Bug 62226

Summary: Build Fails with LLVM
Product: Mesa Reporter: Serkan Hosca <serkan>
Component: Drivers/Gallium/r600Assignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: andreas.boll.dev, johannesobermayr, lonewolf, niels_ole
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: build log
Build libradeonllvm as static library

Description Serkan Hosca 2013-03-12 12:40:28 UTC
Created attachment 76398 [details]
build log

llvm is from git mirror as of git-svn-id https://llvm.org/svn/llvm-project/llvm/trunk@176858

and mesa is as of 6173cc19

The build config is:
  ./autogen.sh \
    --prefix=/usr \
    --sysconfdir=/etc \
    --with-gallium-drivers=r300,r600,radeonsi,nouveau,svga,swrast \
    --with-dri-drivers=i915,i965,r200,radeon,nouveau,swrast \
    --enable-gallium-llvm \
    --enable-egl \
    --enable-gallium-egl \
    --with-egl-platforms=drm,x11,wayland \
    --enable-shared-glapi \
    --enable-gbm \
    --enable-glx-tls \
    --enable-dri \
    --enable-glx \
    --enable-osmesa \
    --enable-gles1 \
    --enable-gles2 \
    --enable-texture-float \
    --enable-xa \
    --enable-xvmc \
    --enable-vdpau \
    --with-llvm-shared-libs \
    --enable-r600-llvm-compiler

and the failure is:
../../../../src/gallium/drivers/r600/.libs/libr600.a(r600_llvm.o): In function `r600_tgsi_llvm':
r600_llvm.c:(.text+0x15ff): undefined reference to `radeon_llvm_create_func'
../../../../src/gallium/drivers/radeonsi/.libs/libradeonsi.a(radeonsi_shader.o): In function `si_pipe_shader_create':
radeonsi_shader.c:(.text+0x1dc6): undefined reference to `radeon_llvm_create_func'
radeonsi_shader.c:(.text+0x1ddd): undefined reference to `radeon_llvm_shader_type'
radeonsi_shader.c:(.text+0x200d): undefined reference to `radeon_llvm_create_func'
collect2: error: ld returned 1 exit status
libtool: install: error: relink `egl_gallium.la' with the above command before installing it
make[4]: *** [install-eglLTLIBRARIES] Error 1
make[4]: Leaving directory `/home/serkan/tmp/mesa-git/src/mesa/src/gallium/targets/egl-static'
make[3]: *** [install-am] Error 2
make[3]: Leaving directory `/home/serkan/tmp/mesa-git/src/mesa/src/gallium/targets/egl-static'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/home/serkan/tmp/mesa-git/src/mesa/src/gallium/targets'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/serkan/tmp/mesa-git/src/mesa/src'
make: *** [install-recursive] Error 1

attached is the full build log. The error happens in make install
Comment 1 Serkan Hosca 2013-03-12 12:46:20 UTC
llvm build config:
  ./configure \
    --prefix=/usr \
    --libdir=/usr/lib/llvm \
    --sysconfdir=/etc \
    --enable-shared \
    --enable-libffi \
    --enable-targets=all \
    --enable-optimized \
    --enable-experimental-targets=R600 \
    --disable-expensive-checks \
    --with-binutils-include=/usr/include \
    --enable-optimized
Comment 2 LoneVVolf 2013-03-25 16:18:47 UTC
No problems here building mesa b101a09 against llvm svn version 177821 .
Comment 3 LoneVVolf 2013-03-25 16:27:09 UTC
oops, i gave wrong commit number , it's git-712bac1 according to glxinfo.
Comment 4 Niels Ole Salscheider 2013-03-26 08:26:42 UTC
This is still an issue for me.

I use an out-of-tree build for mesa (and build the shared llvm libraries with cmake), though.
Comment 5 Niels Ole Salscheider 2013-04-01 20:05:39 UTC
The problem seems to be that the build system picks the already installed libllvmradeon9.2.0.so (from /usr/lib64) instead of the one that has just been built.

A workaround is to uninstall mesa before compiling and installing the new version.
Comment 6 Tom Stellard 2013-04-01 21:13:32 UTC
Created attachment 77291 [details] [review]
Build libradeonllvm as static library

Does this patch help?
Comment 7 Serkan Hosca 2013-04-01 22:07:22 UTC
(In reply to comment #6)
> Created attachment 77291 [details] [review] [review]
> Build libradeonllvm as static library
> 
> Does this patch help?

Yes, the patch fixes the build
Comment 8 Johannes Obermayr 2013-04-01 22:19:02 UTC
I am against this sort of patches.

Because autotools are stupid the second line should be the right attempt:

libradeonsi_la_LDFLAGS = -Wl,--no-undefined -shared -avoid-version \
        -L../radeon \
        $(LLVM_LDFLAGS)
Comment 9 Tom Stellard 2013-04-01 22:28:35 UTC
(In reply to comment #8)
> I am against this sort of patches.
> 

Can you explain why?
Comment 10 Johannes Obermayr 2013-04-01 23:03:16 UTC
(In reply to comment #9)
> (In reply to comment #8)
> > I am against this sort of patches.
> > 
> 
> Can you explain why?

Because you are working against aboll and me - we want to build as much '-shared' as possible (and also distributions [should] want to do so):
http://lists.freedesktop.org/archives/mesa-dev/2013-March/036449.html
http://lists.freedesktop.org/archives/mesa-dev/2013-March/036493.html

Also this statement is wrong:
"This library was originally changed to a shared object to work around
linker error in egl_static.so, but these appear to be fixed now."

It was changed to be built '-shared' because there were and possibly be troubles with crashing egl things if r600 AND radeonsi were built together (see on #dri-devel from mid december 2012 [MrCooper, jobermayr])

You should also see the conditional there. If it makes sense and is required (r600 AND radeonsi) it is shared. If it doesn't (r600 XOR radeonsi) it is static.
Comment 11 Christian König 2013-04-02 13:06:07 UTC
(In reply to comment #10)
> (In reply to comment #9)
> > (In reply to comment #8)
> > > I am against this sort of patches.
> > > 
> > 
> > Can you explain why?
> 
> Because you are working against aboll and me - we want to build as much
> '-shared' as possible (and also distributions [should] want to do so):
> http://lists.freedesktop.org/archives/mesa-dev/2013-March/036449.html
> http://lists.freedesktop.org/archives/mesa-dev/2013-March/036493.html
> 
> Also this statement is wrong:
> "This library was originally changed to a shared object to work around
> linker error in egl_static.so, but these appear to be fixed now."
> 
> It was changed to be built '-shared' because there were and possibly be
> troubles with crashing egl things if r600 AND radeonsi were built together
> (see on #dri-devel from mid december 2012 [MrCooper, jobermayr])
> 
> You should also see the conditional there. If it makes sense and is required
> (r600 AND radeonsi) it is shared. If it doesn't (r600 XOR radeonsi) it is
> static.

I don't think I like the general idea here, for most distributions driver size doesn't matter so much, but on the other hand it is highly likely that we want to have different version of this and other libs for r600 and radeonsi.

Christian.
Comment 12 Johannes Obermayr 2013-04-02 15:24:11 UTC
(In reply to comment #10)
> Also this statement is wrong:
> "This library was originally changed to a shared object to work around
> linker error in egl_static.so, but these appear to be fixed now."
> 
> It was changed to be built '-shared' because there were and possibly be
> troubles with crashing egl things if r600 AND radeonsi were built together
> (see on #dri-devel from mid december 2012 [MrCooper, jobermayr])
> 
> You should also see the conditional there. If it makes sense and is required
> (r600 AND radeonsi) it is shared. If it doesn't (r600 XOR radeonsi) it is
> static.

"Please test to make sure this works for your build configuration.

Tested-by: Michel Dänzer <michel.daenzer at amd.com>"

@MrCooper: Can you confirm the runtime assertion issue has been fixed (radeon AND radeonsi)?
http://people.freedesktop.org/~cbrill/dri-log/?channel=dri-devel&highlight_names=&date=2012-12-07
Comment 13 Michel Dänzer 2013-04-02 17:02:05 UTC
(In reply to comment #12)
> @MrCooper: Can you confirm the runtime assertion issue has been fixed
> (radeon AND radeonsi)?
> http://people.freedesktop.org/~cbrill/dri-log/?channel=dri-
> devel&highlight_names=&date=2012-12-07

Ah no, I failed to test this properly. :( Thanks for the reminder Johannes.

[ I read bug reports on the lists ]
Comment 14 Laurent carlier 2013-08-19 13:25:03 UTC
Fixed some time ago

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.