vtorri / muon

An implementation of the meson build system in c99

Home Page:https://muon.build

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

muon logo

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.

About

An implementation of the meson build system in c99

https://muon.build

License:GNU General Public License v3.0


Languages

Language:C 76.3%Language:Meson 19.1%Language:Python 2.7%Language:Shell 0.7%Language:C++ 0.7%Language:Assembly 0.3%Language:Vim Script 0.1%Language:Cython 0.0%Language:Roff 0.0%Language:Batchfile 0.0%Language:Fortran 0.0%Language:LLVM 0.0%Language:Lex 0.0%