This morning I was unable to compile a 32 bit mesa from git. 64 bit compiled properly. This was on a 64 bit install of Arch Linux with multiarch enabled and using gcc version 4.9.0 20140521 (prerelease) from the official repositories. I've bisected the issue to this commit: 7a63bd960c33127dbce0e5802a7cda96dc011104 automake: correctly append the version-script Here's my configure line for the build: export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" export LLVM_CONFIG="/usr/bin/llvm-config32" CFLAGS="-m32 -msse -msse2 -march=i686 -mfpmath=sse -mtune=generic -O2 -pipe" CXXFLAGS="-m32 -msse -msse2 -march=i686 -mfpmath=sse -mtune=generic -O2 -pipe" ./autogen.sh \ --prefix=/usr \ --sysconfdir=/etc \ --with-dri-driverdir=/usr/lib32/xorg/modules/dri \ --with-gallium-drivers=r300,r600,nouveau,svga,swrast \ --with-dri-drivers=i915,i965,r200,radeon,nouveau,swrast \ --with-llvm-shared-libs \ --enable-gallium-egl --enable-shared-glapi \ --enable-gallium-llvm \ --enable-gallium-gbm \ --enable-glx-tls \ --enable-gles1 \ --enable-gles2 \ --enable-egl \ --enable-dri \ --enable-glx \ --disable-xa \ --enable-osmesa \ --enable-gbm \ --enable-texture-float \ --enable-32-bit \ --disable-xvmc \ --disable-vdpau \ --libdir=/usr/lib32 The linker error produced is: make[3]: Entering directory '/var/abs/local/mesa-git/lib32-mesa-git/src/build/src/gallium/targets/egl-static' CC egl.lo CC egl_pipe.lo CC egl_st.lo CXXLD egl_gallium.la .libs/egl.o: In function `create_drm_screen': egl.c:(.text+0x8f): undefined reference to `loader_get_driver_for_fd' .libs/egl.o: In function `_eglMain': egl.c:(.text+0x1da): undefined reference to `loader_set_logger' collect2: error: ld returned 1 exit status Makefile:917: recipe for target 'egl_gallium.la' failed make[3]: *** [egl_gallium.la] Error 1 make[3]: Leaving directory '/var/abs/local/mesa-git/lib32-mesa-git/src/build/src/gallium/targets/egl-static'
The issue was really introduced by commit 39ae284a6941df5942602c027d4a8863ca35e654 Author: Emil Velikov <emil.l.velikov@gmail.com> Date: Sat May 10 15:59:03 2014 +0100 egl-static: include libradeonwinsys.la only once which removed libloader.la from LIBADD. CC Emil.
Handling of the egl_platform is slightly move convoluted than expected. platform_drm - things will build nicely as the loader* symbols are provided via gbm/libgbm. Everything else - the symbols are missing. Might be better off re-adding the libloader + multiple-declarations for now.
Jose has pushed a patch that adds the symbol back, although it causes a multiple definition of loader* as expected - bug 79382. Proper fix is available http://patchwork.freedesktop.org/patch/26746/
Fixed with commit febec731475a5b288cc50660b2d32780e395b950 Author: Emil Velikov <emil.l.velikov@gmail.com> Date: Wed May 28 15:43:35 2014 +0100 st/egl: do not link against libloader Move the link to the final targets, like any other place in mesa/gallium. This allows better visibilty and will prevent us from including the library archive twice. Resolves multiple definition of `loader_get_pci_id_for_fd' multiple definition of `loader_get_pci_id_for_fd'
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.