Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
muon(1)			    General Commands Manual		       muon(1)

NAME
       muon - a	meson-compatible build system

SYNOPSIS
       muon [-vh] [-C <chdir>] <command> [<args>]

       muon setup [-D[subproject:]option=value...] build
       cd build
       <invoke backend build tool>
       muon test [options]
       muon install [options]

DESCRIPTION
       muon  interprets	 source	 files	written	 in the	meson dsl and produces
       buildfiles for a	backend.  Currently  the  only	supported  backend  is
       ninja.

       When  building  meson  projects with muon, you typically	first start by
       running the setup command in the	project	root.  This will create	build-
       files for the backend in	the build dir you specify.   You  then	invoke
       the backend, e.g.

	   ninja -C <build dir>

       If  the	project	 defines tests,	you may	run them with the test subcom-
       mand, and finally install the project with the install subcommand.

OPTIONS
          -v -	enable verbose output
          -C <path> - chdir to	path before executing a	command
          -h -	print a	help message

COMMANDS
       muon requires a command.

       All commands accept a -h	option which prints a brief summary  of	 their
       usage.

   analyze
	   muon	analyze

	   Run a static	analyzer on the	current	project.

	   OPTIONS:
	      -l - optimize output for	editor linter plugins.	For example, a
	       diagnostic is added for the subdir() callsite, so that the edi-
	       tor can highlight subdirs with errors in	them.
	      -q - only report	errors
	      -O  <path>  -  read project file	with matching path from	stdin.
	       This is useful for editor linter	plugins	that run as  you  type
	       on files	that aren't saved to disk.
	      -i  <path>  -  analyze  the  single file	path in	internal mode.
	       This is useful for catching bugs	in scripts that	will be	evalu-
	       ated with muon internal eval.
	      -t - print a tree of all	meson source files that	are evaluated
	      -d <var>	- print	the location of	the definition of var
	      -W [no-]<diagnostic> - enable or	disable	a particular  diagnos-
	       tic, e.g. unused-variable.
	      -W list - list available	diagnostics.
	      -W error	- turn all warnings into errors.

   benchmark
	   See documentation for the test subcommand.

   check
	   muon	check [-p|-d] [-m<x|f>]	<filename>

	   Check if filename parses.

	   OPTIONS:
	      -p - print the parsed ast
	      -d - print the dissasembly
	      -m  <mode>  - set the compilation mode.	`f` parses for format-
	       ting, `x` compiles for the extended language (e.g. user-defined
	       functions)

   fmt
	   muon	fmt [-i] [-q] [-c <muon_fmt.ini>] <file>[ <file>[...]]

	   Format a source file.

	   OPTIONS:
	      -q - exit with 1	if files would be modified by muon fmt
	      -i - format files in-place
	      -c <muon_fmt.ini> - read	configuration from muon_fmt.ini
	      -e - try	to read	configuration from .editorconfig.  Only	inden-
	       tation related settings are recognized.

	   CONFIGURATION OPTIONS
       +-------------------+------------+---------+------------------+
       | key		   | type	| default | description	     |
       +-------------------+------------+---------+------------------+
       | max_line_len	   | int	| 80	  | The	     maximum |
       |		   |		|	  | length  of lines |
       |		   |		|	  | before they	 are |
       |		   |		|	  | split	     |
       +-------------------+------------+---------+------------------+
       | indent_style	   | space|tab	| space	  | Wether   to	 use |
       |		   |		|	  | spaces  or	tabs |
       |		   |		|	  | for	indentation  |
       +-------------------+------------+---------+------------------+
       | indent_size	   | int	| 4	  | For	indent_style |
       |		   |		|	  | =	space,	 the |
       |		   |		|	  | number of spaces |
       |		   |		|	  | to indent by per |
       |		   |		|	  | level	     |
       +-------------------+------------+---------+------------------+
       | insert_fi-	   | bool	| true	  | Whether  or	 not |
       | nal_newline	   |		|	  | to	  insert   a |
       |		   |		|	  | trailing newline |
       |		   |		|	  | at	the  end  of |
       |		   |		|	  | the	file	     |
       +-------------------+------------+---------+------------------+
       | end_of_line	   | lf|crlf|cr	| <unset> | The	type of	line |
       |		   |		|	  | ending  to	use. |
       |		   |		|	  | If this value is |
       |		   |		|	  | not	set then the |
       |		   |		|	  | line  ending  of |
       |		   |		|	  | the	 first	line |
       |		   |		|	  | in	the   source |
       |		   |		|	  | file   will	  be |
       |		   |		|	  | used.	     |
       +-------------------+------------+---------+------------------+
       | space_array	   | bool	| false	  | Whether  to	 in- |
       |		   |		|	  | clude     spaces |
       |		   |		|	  | around array el- |
       |		   |		|	  | ements (ex.	 [1] |
       |		   |		|	  | vs [ 1 ])	     |
       +-------------------+------------+---------+------------------+
       | kwargs_force_mul- | bool	| false	  | Make  every	dic- |
       | tiline		   |		|	  | tionary  literal |
       |		   |		|	  | and	    function |
       |		   |		|	  | call with kwargs |
       |		   |		|	  | expand into	mul- |
       |		   |		|	  | tiple lines.     |
       +-------------------+------------+---------+------------------+
       | wide_colon	   | bool	| false	  | Whether to put a |
       |		   |		|	  | space before the |
       |		   |		|	  | colon   operator |
       |		   |		|	  | (ex.    `key   : |
       |		   |		|	  | val`)	     |
       +-------------------+------------+---------+------------------+
       | no_sin-	   | bool	| false	  | Don't   add	   a |
       | gle_comma_func-   |		|	  | trailing   comma |
       | tion		   |		|	  | to	  multi-line |
       |		   |		|	  | function   calls |
       |		   |		|	  | with  only	 one |
       |		   |		|	  | argument.	     |
       +-------------------+------------+---------+------------------+
       | sort_files	   | bool	| true	  | Whether  to	sort |
       |		   |		|	  | the	arguments of |
       |		   |		|	  | files()	     |
       +-------------------+------------+---------+------------------+
       | group_arg_value   | bool	| true	  | Whether to group |
       |		   |		|	  | strings in array |
       |		   |		|	  | literals	such |
       |		   |		|	  | that     command |
       |		   |		|	  | line   arguments |
       |		   |		|	  | that    take   a |
       |		   |		|	  | value remain  on |
       |		   |		|	  | the	same line as |
       |		   |		|	  | the	 value.	 The |
       |		   |		|	  | heuristic	used |
       |		   |		|	  | is	 that  if  a |
       |		   |		|	  | string    starts |
       |		   |		|	  | with `-` and the |
       |		   |		|	  | next string	does |
       |		   |		|	  | not,   put	both |
       |		   |		|	  | strings  on	 the |
       |		   |		|	  | same line	     |
       +-------------------+------------+---------+------------------+
       | sim-		   | bool	| false	  | Whether to auto- |
       | plify_string_lit- |		|	  | matically	con- |
       | erals		   |		|	  | vert   multiline |
       |		   |		|	  | string  literals |
       |		   |		|	  | without	new- |
       |		   |		|	  | lines,  as	well |
       |		   |		|	  | as	   f-strings |
       |		   |		|	  | without  format- |
       |		   |		|	  | ting  into	sin- |
       |		   |		|	  | gle-quoted	     |
       |		   |		|	  | string literals. |
       +-------------------+------------+---------+------------------+
       | indent_be-	   | str	| ' '	  | The	  indent  to |
       | fore_comments	   |		|	  | put	      before |
       |		   |		|	  | trailing	com- |
       |		   |		|	  | ments	     |
       +-------------------+------------+---------+------------------+
       | sticky_parens	   | bool	| false	  | Controls whether |
       |		   |		|	  | parenthesis	used |
       |		   |		|	  | for	grouping are |
       |		   |		|	  | stuck  to	what |
       |		   |		|	  | they  enclose or |
       |		   |		|	  | are	exploded out |
       |		   |		|	  | to be  on  their |
       |		   |		|	  | own	lines.	     |
       +-------------------+------------+---------+------------------+
       | continuation_in-  | bool	| false	  | Controls whether |
       | dent		   |		|	  | a multiline	con- |
       |		   |		|	  | ditional  in  an |
       |		   |		|	  | if	   statement |
       |		   |		|	  | gets   an  extra |
       |		   |		|	  | indent.	     |
       +-------------------+------------+---------+------------------+

   install
	   muon	install	[-n]

	   Installs the	project. The DESTDIR environment variable is respected
	   and will prefix all installation directories	if it is present.

	   OPTIONS:
	      -n - dry	run
	      -d <destdir> - set destdir

   internal
	   muon	internal <command> [<args>]

	   Internal contains several  subcommands  used	 by  muon  internally.
	   These  commands are subject to change at any	time and should	not be
	   relied upon.

	   SUBCOMMANDS:
	      eval - evaluate a source	file
	      exe - execute a command
	      repl - start a meson dsl	repl
	      dump_funcs - output all supported functions and arguments

   internal eval
	   muon	internal eval [-e] [-s]	<filename> [<args>]

	   Evaluate a source file.  The	interpreter  environment  is  substan-
	   tially  different  from the typical environment during setup. Build
	   related functions are unavailable, as well as many other  functions
	   including subdir.  Additionally, the	variable argv is defined as an
	   array containing the	commandline starting at	<filename>.

	   OPTIONS:
	      -e - lookup <filename> as an embedded script
	      -s  - disable functions that are	unsafe to be called at random,
	       particularly `run_command()`.  The motivation for this flag  is
	       so that automated fuzz testing can be used without accidentally
	       executing something like	`run_command('rm', '-rf', '/')`.

   internal exe
	   muon	 internal  exe	[-f  <input  file>]  [-c  <output  file>]  [-e
	   <env.dat>] [-a <args.dat>] [-R <file>] [-- <cmd> [<args>]]

	   Execute <cmd> with arguments	<args>.

	   OPTIONS:
	      -f <input file> - pass input file as stdin to <cmd>
	      -c <output file>	- capture stdout of <cmd> and write it to out-
	       put file
	      -e <env.dat> - read and set environment variables from env.dat
	      -a <args.dat> - read and	set command from args.dat
	      -R <file> - remove file if it exists before executing the  com-
	       mand

   internal repl
	   muon	internal repl

	   Start  a  meson  dsl	 repl.	The functions available	are limited as
	   with	internal eval.

   internal dump_funcs
	   muon	internal dump_funcs

	   Print all supported functions, methods, and module  functions  with
	   their  arguments, argument types, and return	types to stdout.  This
	   subcommand is mainly	useful for generating  https://muon.build/sta-
	   tus.html.

   meson
	   [muon] meson	...

	   A  compatibility  layer  that  attempts  to translate all flags and
	   operands from meson cli syntax to muon cli  syntax.	 For  example,
	   the following two commands:

	       muon meson setup	build --werror --prefix=/
	       muon meson test -C build	--list

	   Would  be  translated  into the following two muon versions respec-
	   tively:

	       muon setup -Dwerror=true	-Dprefix=/ build
	       muon -C build test -l

	   This	compatibility layer is also enabled when muon's	executable  is
	   named meson.

	   For a more detailed usage information you can use the following two
	   commands:

	       muon meson -h
	       muon meson <subcommand> -h

	   NOTE:  This	is a best-effort translation and does not guarantee or
	   imply full cli compatibility.  Many unimplemented flags are ignored
	   and attempting to use an unsupported	subcommands will result	in  an
	   error.

   options
	   muon	options	[-a] [-m]

	   Lists available project options and defaults.  This command may ei-
	   ther	 be run	from the project root or from a	build directory.  Run-
	   ning	this command from a build directory highlights configured  op-
	   tion	values in the output, whereas running it from the project root
	   causes the default value for	each option to be highlighted.

	   OPTIONS:
	      -a - Include builtin global and per-project options in the out-
	       put.
	      -m - Only display option	values that have been modified.

   samu
	   muon	samu [<args>]

	   Executes  an	 embedded copy of samu(1).  This command requires that
	   muon	was compiled with samu enabled.

   setup
	   muon	setup  [-D[subproject:]option=value...]	 [-c  <compiler	 check
	   cache.dat>] [-b] <build dir>

	   Interpret all source	files and generate buildfiles in build dir.

	   OPTIONS:
	      -D  [subproject:]option=value - Set build options.  Options are
	       either built in or project-defined.  Subproject options can  be
	       specified  by  prepending  the subproject's name	and a colon to
	       the option.  This option	may be specified multiple times.
	      -c <path> - load	compiler check cache dump from path.  This  is
	       used internally when creating the regeneration command.
	      -b - Break on error.  When this option is passed, muon will en-
	       ter  a  debugging repl when a fatal error is encountered.  From
	       there you can inspect and modify	state, and optionally continue
	       setup.

   summary
	   muon	summary

	   Print a previously configured project's summary.

   test
	   muon	test [-d <display mode>] [-o <output>] [-e <setup>]  [-f]  [-j
	   <jobs>]   [-l]   [-R]   [-s	 <suite>]   [-S]  [-v  [-v]]   [<test>
	   [<test>[...]]

	   Execute tests defined in source files.

	   The default is to execute all tests,	but you	can also specify which
	   tests to execute on the command line.

	   <test> should consist of an optional	project	name,  followed	 by  a
	   colon and then a test name.	Either may be omitted. For example,

	   "test name" and ":test name"	will match all tests named 'test name'
	   in any project.
	   "proj:test  name"  will  match  all	tests named 'test name'	in the
	   project 'proj'.
	   "proj:" will	match all tests	in the project 'proj'.

	   Additionally, the test name may be a	glob expression.  For example,

	   "proj:long*"	will match all tests with names	starting  with	'long'
	   in the project 'proj'.

	   OPTIONS:
	      -d <display mode> - Control test	progress output.  display mode
	       can  be	one of auto, dots, or bar.  dots prints	a '.' for suc-
	       cess and	'E' for	error, bar prints a progress bar with an error
	       count.  The default mode, auto, selects bar if the  output  de-
	       vice is a terminal or dots otherwise.
	      -o  <output  mode>  - Control test results output.  term	prints
	       failures	and output to the terminal, html generates  a  single-
	       page  html  report, and json outputs test information to	a json
	       file.
	      -e <setup> - Use	test setup setup.
	      -f - Fail fast. exit after first	test failure is	encountered.
	      -j - Set	the number of jobs used	when running tests.
	      -l - List tests that would  be  run  with  the  current	setup,
	       suites,	etc.  The format of the	output is <project name>:<list
	       of suites> - <test_name>.
	      -R - No rebuild.	 Disable  automatic  build  system  invocation
	       prior to	running	tests.
	      -s <suite> - Only run tests in suite suite.  This option	may be
	       specified multiple times.
	      -S - print a summary of test results, including the duration of
	       each test
	      -v  - Increase verbosity.  When passed once, print test results
	       as they are completed.  When passed twice, the stdout/stderr of
	       tests is	not captured.

   version
	   muon	version

	   Print out version information as well as enabled features.

EXTENSIONS
       muon provides some extra	functions that may  be	called	within	source
       files. They are documented below.

          dbg() - Begin an interactive	debugger.
          p(value) - Print any	value's	internal representation.  For example,
	   `p('hello')`	prints `'hello'`.

SEE ALSO
       meson.build(5) meson-reference(3) meson(1)

AUTHORS
       Maintained  by  Stone  Tickle  <lattis@mochiro.moe>, who	is assisted by
       other open source contributors.	For more information about muon	devel-
       opment, see <https://sr.ht/~lattis/muon>.

				  2025-04-14			       muon(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=muon&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help