Good Afternoon,
Over the last few days, I've been toying with the idea of converting the existing build system for wine from autotools over to mesonbuild for the additional flexibility in dependency compilation (i.e. autobuilding dependencies as subprojects via wrapdb if shared libraries are not present).
Several other large projects are starting or have recently finished similar conversion projects (Mesa3D) and if I move forward with this task to completion, I'd like to clarify beforehand whether a pull request for this would be considered?
Best Regards, Nathan Singer
Hi,
On Sun, Jul 21, 2019 at 09:45:50PM -0700, Nathan Singer wrote:
Over the last few days, I've been toying with the idea of converting the existing build system for wine from autotools over to mesonbuild for the additional flexibility in dependency compilation (i.e. autobuilding dependencies as subprojects via wrapdb if shared libraries are not present).
Wine is a bit special, because it builds "winegcc", which is then subsequently used as a compiler, and it also builds 32 and 64 bit code in one invocation.
Autoconf handles this quite nicely, because it allows subdirectories to be configured for different targets. This also allows cross-compilation, basically for free.
Pulling in dependencies automatically is less of an interesting use case than you think. Most users will get Wine through their Linux distribution, and the very first thing distribution maintainers do is turn off all of that automation, and remove any copies of third-party libraries to avoid accidentally linking against them instead of the "official" version that receives security support.
The most useful thing you can give users is a quickstart guide that has readymade commands to install the required build dependencies for the ten most popular Linux distributions. The second most useful thing would be a Dockerfile.
Meson might have other potential benefits that might make it worth looking at, but I believe (I'm not much of a contributor after fixing Fiber support for SPARC at some time in the early naughties) that getting this to work without regressions will be difficult.
Simon
On Mon, 22 Jul 2019 at 19:53, Simon Richter Simon.Richter@hogyros.de wrote:
Pulling in dependencies automatically is less of an interesting use case than you think. Most users will get Wine through their Linux distribution, and the very first thing distribution maintainers do is turn off all of that automation, and remove any copies of third-party libraries to avoid accidentally linking against them instead of the "official" version that receives security support.
I'm sure some people disagree with me, but in fact, that particular kind of pulling in dependencies is something that I think should actively be discouraged.
Henri
I think it would be very interesting to see how a meson wine build would perform and affect the workflow. One benefit I don't see mentioned is the ability to generate compile_commands.json, which allows IDEs to perform intelli-sense on the codebase. Right now I use bear ( https://github.com/rizsotto/Bear), but this requires you to regenerate the compile_commands.json whenever you add a file to wine.
If you can get past the technical hurdles mentioned above and more, I think many people would be interested in having it as an option alongside autotools.
On Mon, Jul 22, 2019 at 12:46 AM Nathan Singer dundir@gmail.com wrote:
Good Afternoon,
Over the last few days, I've been toying with the idea of converting the existing build system for wine from autotools over to mesonbuild for the additional flexibility in dependency compilation (i.e. autobuilding dependencies as subprojects via wrapdb if shared libraries are not present).
Several other large projects are starting or have recently finished similar conversion projects (Mesa3D) and if I move forward with this task to completion, I'd like to clarify beforehand whether a pull request for this would be considered?
Best Regards, Nathan Singer
On 7/22/19 6:44 PM, Derek Lesho wrote:
I think it would be very interesting to see how a meson wine build would perform and affect the workflow. One benefit I don't see mentioned is the ability to generate compile_commands.json, which allows IDEs to perform intelli-sense on the codebase. Right now I use bear ( https://github.com/rizsotto/Bear), but this requires you to regenerate the compile_commands.json whenever you add a file to wine.
If you can get past the technical hurdles mentioned above and more, I think many people would be interested in having it as an option alongside autotools.
CMake projects integrate pretty well with IDEs too, letting them figure out what files are part of which (sub-)project and build target, what macros are used with the build, and what's defined/declared where, using the pre-build cache. It also works fine on Windows and generates VS projects. How well does Meson work compared to CMake, and what are its benefits/drawbacks compared to other build systems?