Adds support for using msvc, as well as a proper detection step for linkers. Static and shared linkers are both tied to the compiler object for now.
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. demomuon 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:
libpkgconfpkgconforpkg-config
For [wrap-file] support:
libcurllibarchive
To build documentation:
scdocfor muon.1 and meson.build.5python3andpy3-yamlfor 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.