muon
muon is an implementation of the meson build system in c99 with minimal
dependencies.
Non-features
- bug-for-bug compatibility with meson. In fact,
muonaspires to be stricter than meson in cases where meson's implementation seems error prone.muonuses the official meson documentation as its specification. - cli compatibility with meson.
muonhas different flags, subcommands, etc., and should not be renamed/symlinked to meson.
Contributions welcome:
- language support for languages other than C and C++
Other differences from meson are described in doc/differences.md
Status
muon is complete enough to build complicated projects, however, many things
are still not implemented. If you want to contribute, try using muon to build
your favorite project. Patches and bug reports welcome!
Requirements
muon requires various POSIX interfaces and a compiler offering c99 support.
In addition, dependency discovery requires libpkgconf, and wrap support
requires libcurl and libarchive.
A ninja-compatible build tool (e.g. samurai) is also required to bootstrap muon, but can be optionally embedded into muon after bootstrapping.
Documentation requires scdoc in order to be built.
Building
You can bootstrap muon like this:
./bootstrap.sh build
You can then use the bootstrapped muon to build itself:
build/muon setup build
ninja -C build
Contributing
Please refer to the contributing guide before sending patches. Send patches on the mailing list, report issues on the issue tracker, and discuss in #muon on libera.chat.
License
muon is licensed under the GPL version 3 (see LICENSE). Tests under
tests/project were copied from the meson project tests and are licensed
under Apache 2.0.
Credits
Although I had already had the idea to re-implement meson in C, I was initially
inspired to actually go out and do it when I saw boson. muon's code was
originally based on boson, though has since been almost completely rewritten.