Hey folks,

I wanted to spend some time to get out an updated version of XQuartz to users 
to address some bugs in the previous release, and I'm hitting a build time 
issue I'm hoping folks here can help with.

TL;DR: I want to figure out how to specify how to link zlib because meson is 
detecting it incorrectly.

I'm using mesa 21.3 right now (since that is that I had in the previous 
release) and meson 0.62.1.

It looks like we detect zlib via:

dep_zlib = dependency('zlib', version : '>= 1.2.3',
                     fallback : ['zlib', 'zlib_dep'],
                     required : get_option('zlib'))

It looks like dependency() is implemented (in part) using cmake, which is 
giving me an undesired result when using cmake 3.22.4.  Specifically, it gives 
me a path specific to zlib that is present inside the SDK that was used to 
build cmake, not the SDK that I'm using to build mesa.  This difference in SDK 
is important because cmake is built with the current macOS SDK (which contains 
arm64 + x86_64 support), but I need to also build mesa for i386 (using an older 
macOS 10.13 SDK).  With cmake present, dependency() is returning the path to 
libz.tbd in my current SDK which is missing the i386 slice, leading to link 
failures.

If I uninstall cmake, meson detects how to compile/link correctly (ie: just use 
'-lz') with a compile test:
   {"name": "zlib", "version": "1.2.11", "compile_args": [], "link_args": 
["-lz"]}

So, I have a few questions:
  1 - Is there a way to override these entries on the meson command line?
  2 - Is there a way to tell dependency() to prefer compile test over cmake?
  3 - Is the incorrect detection here something that is probably a bug in 
mesa's use of meson, meson itself, or cmake? (ie: where do you suggest I go to 
investigate this next step)

I have a workaround for now (uninstalling cmake during the mesa build), but I'd 
certainly like to make this more reliable for others.

Thanks,
Jeremy

Reply via email to