Code Monkey home page Code Monkey logo

muon's Introduction

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!

Additionally, muon is not fully supported on all platforms yet. The current status may be viewed on muon's ci dashboard. Platforms with some or all tests disabled are currently WIP and platforms not tested in CI have unknown status. In general, posix systems should work fine.

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.

muon's People

Contributors

1ace avatar aeldidi avatar amcn avatar annacrombie avatar apprehensions avatar arsenarsen avatar bl4ckb0ne avatar bolt-thrower avatar burniintree avatar dcbaker avatar dffdff2423 avatar eli-schwartz avatar ffy00 avatar guijan avatar ikegami-t avatar ioraff avatar jcwasmx86 avatar jscott0 avatar kaniini avatar ldrumm avatar ma8ma avatar michaelforney avatar rofl0r avatar sertonix avatar tachi107 avatar torque avatar vtorri avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.