From: Jose Fonseca <jfonseca@vmware.com>
To: Dylan Baker <dylan@pnwbakers.com>
Cc: ML mesa-dev <mesa-dev@lists.freedesktop.org>,
ML dri-devel <dri-devel@lists.freedesktop.org>
Subject: Re: [RFC libdrm 0/2] Replace the build system with meson
Date: Fri, 24 Mar 2017 14:03:33 +0000 [thread overview]
Message-ID: <3c2042d2-0538-cbc2-3d26-faa204e5792b@vmware.com> (raw)
In-Reply-To: <149021627994.24719.9081074608793800913@localhost.localdomain>
On 22/03/17 20:57, Dylan Baker wrote:
> Quoting Jose Fonseca (2017-03-22 10:59:10)
>> On 17/03/17 02:28, Brian Paul wrote:
>>>
>>> [snip]
>>>
>>> Sure, I'd like to see one build system instead of two. Meson supports
>>> Windows so that's good. But the big issue is our automated build
>>> system. Replacing SCons with Meson could be a big deal in that
>>> context. It would at least involve pulling Meson into our toolchain and
>>> rewriting a bunch of Python code to grok Meson. I'd have to go off and
>>> investigate that to even see if it's a possibility. Maybe next week.
>>
>>
>> I don't have any experience with Meson. But for the record I don't have
>> much love for SCons. I long stopped using SCons for anything but Mesa.
>>
>> And my have good experience with cmake + ninja/msvc is positive. So
>> tools with similar architecture sound good overall.
>>
>> In fact, knowing what I know now, if I could go back in time, to when I
>> evaluated CMake and SCons, I'd chose CMake.
>>
>>
>> BTW, it seems that newer SCons will drop Python 2 support [1], which
>> might force us to rewrite a lot of SConsfiles/scripts any way. So
>> perhaps that's a good time to evaluate migrating to something else.
>>
>>
>>
>> That said, moving to another build system is always a herculian task.
>> Thought the benefit of having a single build system is appealing and
>> might save time down the line.
>>
>>
>>
>> But there are many questions I have about Meson: how confident are we
>> on Meson? Are big projects using it? How sure are we that it won't
>> become abandonware in a few years time? How does it compare with other
>> newer gen build systems?
>>
>
> Here's a not so complete list: https://github.com/mesonbuild/meson/wiki/Users
>
> Notably gnome is moving to meson (and some parts already use it), weston and
> libinput have ports, libepoxy uses meson, and gstreamer is using meson. I
> can't say for sure it's going to be around forever, but its been in development
> since late 2012 and still lands several patches a day, they were responsive to
> me when I sent a patch (that I still need to respin), and they seem to be
> picking up momentum from downstreams.
>
> As to how it compares to other build systems, it's fairly different than cmake
> and scons, it's much less scripting and much more declarative, you can look at
> the libdrm patch or the meson in libepoxy (which is more mature) to see the
> syntax. It doesn't expose python or a full scripting language, though it does
> have some fairly simple logic like if/elif/else and foreach, and they support
> modules that add functionality, but need to be merged upstream, this is how
> pkgconfig writing is implemented, for example. One of the things that it does
> better than autotools and (IMHO) cmake, is dependency management, in most cases
> it requires no special handling, the only case it does in mesa (so far) is for
> local python module dependencies in generators. I think that these are actually
> strengths of meson, it's simplicity makes it easy to understand and use.
>
> For support, it's written in pure python (using only the stdlib with no
> external deps), and requires python 3.4+. It has backends for ninja on Linux,
> ninja and visual studio on Windows, and xcode on macOS; Clang, GCC, and MSVC
> are considered first class compilers, some others might work, but are
> unsupported.
>
> I have a partial port of piglit to meson that I put together to see what
> porting from cmake to meson was like (with no plans to send to the list), I can
> push that somewhere for you to look at if you want to see the difference.
>
>>
>> We also have special requirements: one is cross-build from Linux to
>> MinGW, which on Mesa case requires building portions of the tree twice
>> -- once for host -- another for cross-mingw.
>
> Cross compiling for mingw is supported, and it provides a way to differentiate
> the build, host, and target machines [1], I've cross compiled for
> aarch64-linux-gnu, and it was trivial (I've been told autotools has a flag for
> this, but the meson approach is to write an ini file once, and use it again and
> again), and the first example of cross compiling is using mingw from linux [2].
>
> [1]https://github.com/mesonbuild/meson/wiki/Reference-manual#build_machine-object
> [2]https://github.com/mesonbuild/meson/wiki/Cross-compilation
Thanks for the info.
It still scares me a bit that most Meson users are mostly Linux focused.
Another tool I heard good about but have not direct experience is
https://bazel.build . Any thoughts about it?
Jose
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
next prev parent reply other threads:[~2017-03-24 14:03 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-16 21:25 [RFC libdrm 0/2] Replace the build system with meson Dylan Baker
2017-03-16 21:25 ` [RFC libdrm 1/2] Port build system to meson Dylan Baker
2017-03-16 21:25 ` [RFC libdrm 2/2] remove autotools build Dylan Baker
2017-03-16 21:32 ` [RFC libdrm 0/2] Replace the build system with meson Ilia Mirkin
2017-03-16 21:57 ` Dylan Baker
2017-03-17 10:05 ` Neil Armstrong
2017-03-16 22:36 ` Marek Olšák
2017-03-16 23:11 ` Dylan Baker
2017-03-17 1:53 ` Marek Olšák
2017-03-17 4:15 ` Dylan Baker
2017-03-17 21:18 ` Marek Olšák
2017-03-22 17:26 ` Jose Fonseca
2017-03-22 17:50 ` [Mesa-dev] " Marek Olšák
2017-03-16 23:35 ` Emil Velikov
2017-03-17 0:21 ` Dylan Baker
2017-03-17 0:41 ` Emil Velikov
2017-03-17 2:03 ` Jason Ekstrand
2017-03-17 2:28 ` Brian Paul
2017-03-22 17:59 ` Jose Fonseca
2017-03-22 20:57 ` [Mesa-dev] " Dylan Baker
2017-03-22 22:02 ` Rob Clark
2017-03-22 22:15 ` Eric Anholt
2017-03-22 22:33 ` Dylan Baker
2017-03-24 14:03 ` Jose Fonseca [this message]
2017-03-24 14:22 ` [Mesa-dev] " Daniel Stone
2017-03-24 15:47 ` Jose Fonseca
2017-03-25 20:15 ` [Mesa-dev] " Rob Clark
2017-03-24 16:23 ` Bas Nieuwenhuizen
2017-03-17 4:12 ` Dylan Baker
2017-03-17 6:02 ` Jonathan Gray
2017-03-20 13:55 ` [Mesa-dev] " Emil Velikov
2017-03-20 18:30 ` Matt Turner
2017-03-20 19:39 ` [Mesa-dev] " Emil Velikov
2017-03-20 21:28 ` Timothy Arceri
2017-03-20 21:38 ` Jason Ekstrand
2017-03-21 5:00 ` Jonathan Gray
2017-03-21 16:00 ` Matt Turner
2017-03-23 12:23 ` Jonathan Gray
2017-03-23 18:31 ` Emil Velikov
2017-03-21 15:57 ` [Mesa-dev] " Matt Turner
2017-03-21 17:16 ` Emil Velikov
2017-03-21 18:06 ` Matt Turner
2017-03-21 18:56 ` [Mesa-dev] " Emil Velikov
2017-03-21 19:08 ` Jason Ekstrand
2017-03-21 19:10 ` [Mesa-dev] " Matt Turner
2017-03-22 17:16 ` Emil Velikov
2017-03-24 20:59 ` Chad Versace
2017-03-24 20:44 ` [Mesa-dev] " Chad Versace
2017-03-28 16:59 ` Emil Velikov
2017-03-28 23:19 ` Timothy Arceri
2017-03-21 5:10 ` Jonathan Gray
2017-03-21 16:11 ` [Mesa-dev] " Matt Turner
2017-03-24 16:58 ` randyf
2017-03-20 19:29 ` Rob Clark
2017-03-21 14:44 ` Jani Nikula
2017-03-21 15:13 ` Grazvydas Ignotas
2017-03-21 15:15 ` Ilia Mirkin
2017-03-21 16:16 ` Dylan Baker
2017-03-21 16:22 ` Dylan Baker
2017-03-22 4:23 ` [Mesa-dev] " Jonathan Gray
2017-03-22 8:24 ` Jani Nikula
2017-03-22 21:05 ` Dylan Baker
2017-03-23 8:13 ` Jani Nikula
2017-03-21 16:50 ` Kai Wasserbäch
2017-03-21 17:34 ` Dylan Baker
2017-03-21 18:36 ` [Mesa-dev] " Kai Wasserbäch
2017-03-21 21:16 ` Dylan Baker
2017-03-22 16:40 ` Alex Deucher
2017-03-22 17:07 ` Rob Clark
2017-03-22 20:10 ` [Mesa-dev] " Dylan Baker
2017-03-22 21:48 ` Rob Clark
2017-03-23 21:56 ` Greg Hackmann
2017-03-23 22:14 ` Colin Cross
2017-03-23 23:56 ` Dylan Baker
2017-03-24 0:03 ` [Mesa-dev] " Colin Cross
2017-03-24 16:54 ` Dylan Baker
2017-03-23 1:18 ` [Mesa-dev] " Jonathan Gray
2017-03-23 1:38 ` Rob Clark
2017-03-24 13:42 ` Jose Fonseca
2017-03-24 17:13 ` Dylan Baker
2017-03-24 17:51 ` Eric Anholt
2017-03-24 18:34 ` [Mesa-dev] " Daniel Stone
2017-03-24 19:10 ` Kristian Høgsberg
2017-03-24 19:44 ` Jose Fonseca
2017-03-24 20:08 ` Kristian Høgsberg
2017-03-24 21:16 ` Jose Fonseca
2017-03-24 21:20 ` Jason Ekstrand
2017-03-24 21:34 ` [Mesa-dev] " Rob Clark
2017-03-25 1:25 ` Dylan Baker
2017-03-24 21:09 ` [Mesa-dev] " Rob Clark
2017-03-23 11:39 ` Emil Velikov
2017-03-23 17:54 ` Dylan Baker
2017-03-25 1:06 ` Kenneth Graunke
2017-03-22 22:30 ` [Mesa-dev] " Eric Anholt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3c2042d2-0538-cbc2-3d26-faa204e5792b@vmware.com \
--to=jfonseca@vmware.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=dylan@pnwbakers.com \
--cc=mesa-dev@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).