[RFC PATCH 0/5] XAudio PE conversion.

Zebediah Figura (she/her) zfigura at codeweavers.com
Tue Aug 31 22:07:32 CDT 2021

On 8/31/21 1:57 PM, Rémi Bernon wrote:
> On 8/31/21 8:06 PM, Zebediah Figura (she/her) wrote:
>> (1) I really don't want to have to build any libraries that aren't part
>> of Wine. More importantly, I don't want anyone who's not a regular Wine
>> developer to ever have to build any libraries that aren't part of Wine.
>> Also, if I do need to build (say) libvkd3d-shader, I want to *only* have
>> to build libvkd3d-shader and not all of the Wine dependencies at once.
>> This is quite likely the only thing that holds me back from contributing
>> to wine-mono (not that this is entirely Esme's fault; the problem
>> affects mono upstream, although wine-mono has doubled down on it)
> (Well, things like zlib is clearly not part of Wine, but TBH I don't
> really see how vkd3d is not a part of Wine.)

(Well, vkd3d is worked on almost exclusively by Wine developers, and 
hosted on winehq.org, but it's really meant to be a separate project 
usable outside of Wine. That said, if it were just vkd3d I probably 
wouldn't complain—after all, if we hadn't decided to split out vkd3d 
into a separate library all of that stuff would have been in Wine anyway.)

> With the PoC you could already be working on the dependencies sources in
> the "wine-ext" umbrella project, building whichever Wine module depends
> on it to test it. If you don't need to build any Wine module to test it,
> then just build the project with its own build system.
> Then, having a separate umbrella project has its drawbacks and I agree
> with Alexandre here that it makes bisection inconvenient. But even if we
> consider having the sources included in Wine you could very well have a
> configure flag to point to an alternate source location, while still
> using Wine makefiles to build the corresponding Wine module.

I may have miscommunicated; what I'm getting at is that I currently 
don't have to compile, say, libgnutls, and I would like to continue not 
having to compile libgnutls. Ideally I'd like to be able to link to 
pre-compiled static and shared libraries, and even more ideally I 
shouldn't have to manually set up configure to find them. Granted, 
without integrating those into a package somehow this is going to be 

I guess the thing that makes this painful (in the projects I have worked 
with that do submodules, most prominently Proton and Mono) is twofold:

(1) build system recursion makes full builds *much* slower even when 
there's nothing to build. Granted, your PoC makes this a non-issue, but 
I'm also much less optimistic than Alexandre that trying to bypass 
projects' build systems is a good idea. Also granted, there are ways to 
get around this regardless...

(2) full builds are much slower anyway. This is particularly a problem 
for non-regular contributors [or even non-contributors who want to build 
a project from source, which is quite common!] It's also a problem if we 
end up compiling subprojects using Wine's tooling somehow, because that 
can easily change a *lot*.

Granted, I haven't actually tried, maybe the number and scope of 
subprojects we actually have makes this not much of an issue. But the 
number looks comparable to those projects that I hate dealing with, and 
the scope doesn't look that different...

More information about the wine-devel mailing list