dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
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

  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).