~lattis/muon

meson implementation in C

2aadae1 fix subproject variable scope

~lattis pushed to ~lattis/muon git

2 days ago

afe61da fix bucket_arr_clear

~lattis pushed to ~lattis/muon git

2 days ago
muon logo

#muon

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

#Features

  • muon analyze - a static analyzer for meson.build files. demo
  • muon fmt - a meson.build code formatter
  • An interactive stepping debugger with the dbg() function.
  • A built-in cross platform ninja implementation
  • fast

#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:

  • 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!

#Dependencies

Essential:

  • A c99 compatible toolchain

For pkgconf support:

  • libpkgconf
  • pkgconf or pkg-config

For [wrap-file] support:

  • libcurl
  • libarchive

To build documentation:

  • scdoc for muon.1 and meson.build.5
  • python3 and py3-yaml for meson-reference.3

To run most project tests:

  • python3

#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.