[Mesa-dev] [PATCH 7/7] meson: fix deps and underlinkage of libGL

Jon Turney jon.turney at dronecode.org.uk
Fri Dec 1 12:50:28 UTC 2017


On 30/11/2017 16:46, Emil Velikov wrote:
> On 30 November 2017 at 15:13, Jon Turney wrote:
>> On 29/11/2017 17:34, Dylan Baker wrote:
[...]
>>
>> Maybe it's me that's missing something...
>>
>> There are references to functions provided by these libraries (xcb_glx, xcb,
>> x11_xcb) in common code.
>>
> Having a reference to those (as printed by the linker as it errors) should help.
> 
> There's a lot of macros guarding the different parts of GLX - the
> obvious ones GLX_ seem there.
> 
> Another thing that comes to mind is the libloader_dri3_helper.
> It should be a noop/empty for non-Linux/BSD but something is going wrong?

Yes, as I wrote in the bit of my email you snipped, these dependencies 
come via libloader_dri3_helper.

When configured -Ddri3=false (which is always the case on non-linux 
targets), libGL is underlinked, so this patch is correct.

Even with this patch applied, mesa fails to build for linux when 
configured with -Ddri3=false, due to various undefined references to 
libXext:

> [3/3] Linking target src/glx/libGL.so.1.2.0.
> FAILED: src/glx/libGL.so.1.2.0
> cc  -o src/glx/libGL.so.1.2.0 'src/glx/GL at sha/src_glx_dummy.c.o' -Wl,--no-undefined -Wl,--as-needed -shared -fPIC -Wl,--start-group -Wl,-soname,libGL.so.1 -Wl,--whole-archive src/glx/libglx.a -Wl,--no-whole-archive src/mapi/glapi/libglapi_static.a src/mapi/shared-glapi/libglapi.so.0.0.0 src/loader/libloader.a src/util/libmesa_util.a src/util/libxmlconfig.a -pthread -Wl,-Bsymbolic -Wl,--gc-sections -ldrm -ldl -lm -Wl,--end-group -lX11 -lxcb-glx -lxcb -lX11-xcb -lX11 -lxcb -lxcb-dri2 -ldrm -lX11 -ldrm -lz -lexpat -lm '-Wl,-rpath,$ORIGIN/:$ORIGIN/../mapi/shared-glapi' -Wl,-rpath-link,/home/jon/src/mesa/build/src/glx:/home/jon/src/mesa/build/src/mapi/shared-glapi
> src/glx/libglx.a(dri2.c.o): In function `DRI2CloseDisplay':
> /home/jon/src/mesa/build/../src/glx/dri2.c:58: undefined reference to `XextRemoveDisplay'
> src/glx/libglx.a(dri2.c.o): In function `DRI2FindDisplay':
> /home/jon/src/mesa/build/../src/glx/dri2.c:81: undefined reference to `XextFindDisplay'
> /home/jon/src/mesa/build/../src/glx/dri2.c:81: undefined reference to `XextCreateExtension'
> /home/jon/src/mesa/build/../src/glx/dri2.c:81: undefined reference to `XextAddDisplay'
> src/glx/libglx.a(dri2.c.o): In function `DRI2EventToWire':
> /home/jon/src/mesa/build/../src/glx/dri2.c:168: undefined reference to `XMissingExtension'
> src/glx/libglx.a(dri2.c.o): In function `DRI2WireToEvent':
> /home/jon/src/mesa/build/../src/glx/dri2.c:93: undefined reference to `XMissingExtension'
> src/glx/libglx.a(dri2.c.o): In function `DRI2QueryVersion':
> /home/jon/src/mesa/build/../src/glx/dri2.c:229: undefined reference to `XMissingExtension'
> src/glx/libglx.a(dri2.c.o): In function `DRI2Connect':
> /home/jon/src/mesa/build/../src/glx/dri2.c:275: undefined reference to `XMissingExtension'
> src/glx/libglx.a(dri2.c.o): In function `DRI2Authenticate':
> /home/jon/src/mesa/build/../src/glx/dri2.c:344: undefined reference to `XMissingExtension'
> src/glx/libglx.a(dri2.c.o):/home/jon/src/mesa/build/../src/glx/dri2.c:371: more undefined references to `XMissingExtension' follow
> src/glx/libglx.a(dri2_glx.c.o): In function `dri2_copy_drawable':
> /home/jon/src/mesa/build/../src/glx/dri2_glx.c:635: undefined reference to `XFixesCreateRegion'
> /home/jon/src/mesa/build/../src/glx/dri2_glx.c:637: undefined reference to `XFixesDestroyRegion'
> src/glx/libglx.a(dri2_glx.c.o): In function `__dri2CopySubBuffer':
> /home/jon/src/mesa/build/../src/glx/dri2_glx.c:597: undefined reference to `XFixesCreateRegion'
> /home/jon/src/mesa/build/../src/glx/dri2_glx.c:608: undefined reference to `XFixesDestroyRegion'
> src/glx/libglx.a(dri_glx.c.o): In function `__glXReportDamage':
> /home/jon/src/mesa/build/../src/glx/dri_glx.c:348: undefined reference to `XFixesCreateRegion'
> /home/jon/src/mesa/build/../src/glx/dri_glx.c:350: undefined reference to `XDamageAdd'
> /home/jon/src/mesa/build/../src/glx/dri_glx.c:351: undefined reference to `XFixesDestroyRegion'
> src/glx/libglx.a(dri_glx.c.o): In function `has_damage_post':
> /home/jon/src/mesa/build/../src/glx/dri_glx.c:296: undefined reference to `XDamageQueryVersion'
> src/glx/libglx.a(XF86dri.c.o): In function `close_display':
> /home/jon/src/mesa/build/../src/glx/XF86dri.c:82: undefined reference to `XextRemoveDisplay'
> src/glx/libglx.a(XF86dri.c.o): In function `find_display':
> /home/jon/src/mesa/build/../src/glx/XF86dri.c:77: undefined reference to `XextFindDisplay'
> /home/jon/src/mesa/build/../src/glx/XF86dri.c:77: undefined reference to `XextCreateExtension'
> /home/jon/src/mesa/build/../src/glx/XF86dri.c:77: undefined reference to `XextAddDisplay'
> src/glx/libglx.a(XF86dri.c.o): In function `XF86DRIQueryVersion':
> /home/jon/src/mesa/build/../src/glx/XF86dri.c:125: undefined reference to `XMissingExtension'
> src/glx/libglx.a(XF86dri.c.o): In function `XF86DRIQueryDirectRenderingCapable':
> /home/jon/src/mesa/build/../src/glx/XF86dri.c:155: undefined reference to `XMissingExtension'
> src/glx/libglx.a(XF86dri.c.o): In function `XF86DRIOpenConnection':
> /home/jon/src/mesa/build/../src/glx/XF86dri.c:184: undefined reference to `XMissingExtension'
> src/glx/libglx.a(XF86dri.c.o): In function `XF86DRIAuthConnection':
> /home/jon/src/mesa/build/../src/glx/XF86dri.c:235: undefined reference to `XMissingExtension'
> src/glx/libglx.a(XF86dri.c.o): In function `XF86DRICloseConnection':
> /home/jon/src/mesa/build/../src/glx/XF86dri.c:264: undefined reference to `XMissingExtension'
> src/glx/libglx.a(XF86dri.c.o):/home/jon/src/mesa/build/../src/glx/XF86dri.c:289: more undefined references to `XMissingExtension' follow
> collect2: error: ld returned 1 exit status
> ninja: build stopped: subcommand failed.


More information about the mesa-dev mailing list