[FFmpeg-devel] [RFC] New build system

Josh de Kock josh at itanimul.li
Thu Jun 14 19:03:07 EEST 2018


Hi,

The current build system is a rather large, and complex monolithic build 
system. The configure script takes a sizeable amount of time to execute, 
making improving, and modifying it a pain. It is completely written 
custom from scratch, while this may not sound terrible it definitely 
makes maintaining it more difficult than it needs to be (there have been 
23 emails, or about 5% of the ML volume, regarding configure since the 
start of the month). As you all probably know, there are many issues 
with building on Windows, some include the configure script taking 
considerably longer than on other platforms. A new build system could 
solve most of these issues if done correctly, as well as having other 
added benefits.

As such, I'd like to propose adopting a new build system to FFmpeg, 
namely Meson[1]. There has already been a fair amount of work (not by 
me) put into this, producing something which builds a fully working 
static configuration (configurable options are not implemented yet), on 
Linux, Windows and macOS[2]. If you would like to try it out, it 
currently requires Meson from master. VLC will also likely be switching 
to Meson, which is another reason to consider it.

I remember JEEB and atomnuker potentially being interested in this, but 
unsure if they still are.

What's working?
- Working Windows support
- Working Linux support
- Working macOS support
- Non-FATE tests

What's left to do?
- Assembler extensions (mmx etc..)
- Porting the FATE test suite
- Continue going over the configure script and importing various
   bits of logic
- Exposing options, for now everything is automatically enabled
- Compatibility ./configure shell script

[1] https://github.com/mesonbuild/meson
[2] https://github.com/MathieuDuponchelle/FFmpeg

Any comments, and thoughts on a new build system would be much 
appreciated including concerns regarding it.

-- 
Josh


More information about the ffmpeg-devel mailing list