annacrombie / muon

An implementation of the meson build system in c99
https://muon.build
GNU General Public License v3.0
136 stars 9 forks source link
build-system c99 meson
muon logo

muon

muon is an implementation of the meson build system in c99 with minimal dependencies.

Features

Status

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:

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!

Dependencies

Essential:

For pkgconf support:

For [wrap-file] support:

To build documentation:

To run most project tests:

Install

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

Contribute

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.