Build system
If libafl has to be multi platform, we cannot really use just GNU makefiles.
I propose meson as it was recently adopted by QEMU it and seems a sane build system, more than cmake for sure.
We can maintain both meson files and raw makefiles for linux/bsd if needed.
In addition, meson supports C C++ and Rust so we can use the same build system to build all the bindings.
Personally only used cmake, and makefiles, but I cannot wait to move on to something better 👍 Meson sounds good to me.
We may still want to use cargo for rust btw, meson seems odd for this (https://github.com/mesonbuild/meson/issues/2173) /edit: I don't want to use external crates, just wondering how mature meson as rust build system could be, when everybody else uses cargo
And what about ninja and others? We are not in a hurry so I would propose we take time to see what features we need and which solution works best for us. We can use this issue to trace this. So:
Support Linux, bsd (Mac, open, firefly, etc). Solaris? What else?
Support building c,c++,rust. What else?
Support Linux, bsd (Mac, open, firefly, etc). Solaris? What else?
Windows for sure, Linux kernel maybe
Support building c,c++,rust. What else?
Scripting languages, but they don't need a build system
On the other hand https://www.rojtberg.net/1481/do-not-use-meson/
On the other hand https://www.rojtberg.net/1481/do-not-use-meson/
This is two years old, in the meantime qemu and others switched to meson. It seems sane. Here's a reddit post https://www.reddit.com/r/cpp/comments/eppqhj/cmake_vs_meson_vs_bazel/ Buck and Bazel and others are too enterprisey I think. Ninja isn't really the same thing, we would still write cmake or some other frontend and let it do the lifting.
For me qemu is the largest reason for us to switch to meson, less build systems is better.