muon is an implementation of the meson build system in c99 with minimal dependencies.
muon analyze
- a static analyzer for meson.build files. demomuon fmt
- a meson.build code formatter- An interactive stepping debugger with the
dbg()
function. - A built-in cross platform ninja implementation
- fast
muon
is close to feature-complete with the core of meson for c
and c++
.
See the status page for more detailed information.
Things missing include:
- cross-compilation support
- build optimizations like pch and unity
- some
b_
options - dependencies with a custom configuration tool
- many modules
Other differences from meson are described in doc/differences.md
If you want to contribute, try using muon
to build your favorite project.
Patches and bug reports welcome!
Essential:
- A c99 compatible toolchain
For pkgconf
support:
libpkgconf
pkgconf
orpkg-config
For [wrap-file]
support:
libcurl
libarchive
To build documentation:
scdoc
for muon.1 and meson.build.5python3
andpy3-yaml
for meson-reference.3
To run most project tests:
python3
If you already have meson or muon and are not interested in bootstrapping, you can just do a typical meson configure, build, install:
$meson setup build
cd build
ninja build
$meson test
$meson install
Otherwise, you must bootstrap muon.
The bootstrapping process has two stages. The first stage produces a muon
binary capable of building itself (but not necessarily anything else). The
second stage produces the final binary.
Stage 1:
./bootstrap.sh build
This will by default build a ninja implementation (samu) into the resulting
executable. To disable this behavior use CFLAGS=-DBOOTSTRAP_NO_SAMU
.
Stage 2:
build/muon setup build
build/muon -C build samu
build/muon -C build test
build/muon -C build install
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.
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.
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.