Skip to content

muon

  • Check meson.cross and ensure its contents are valid for muon
  • Depends on itself or meson to cross compile on a glibc host
  • muon from muon-bootstrap is binary identical to muon from muon from muon-bootstrap so prefer 2 stage bootstrap instead of 3
  • Rename build-bootstrap/muon-bootstrap to build-bootstrap/muon to leverage glaucus-muon which calls muon not muon-bootstrap
  • Prefer builtin (default) to bestline (linenoise fork) as readline implementation to prevent an additional dependency
  • muon enables their builtin samurai by default removing the need to maintain a separate version or use CFLAGS=-DBOOTSTRAP_NO_SAMU)
  • muon defaults to default_library=static unlike meson

  • muon, meson and cmake do not support exec-prefix

  • muon now supports --cross-file using muon setup -p cross:<file>

  • muon defaults to $prefix/com for sharedstatedir, while meson defaults to /var/lib if prefix=/usr

  • Alpine uses the following for abuild-muon:

exec muon meson setup \
-Db_staticpic=true \
-Dpython.bytecompile=0 \
-Dwerror=false \
  • Check if we should set $SAMUFLAGS for muon samu:
    • if SAMUFLAGS=$MAKEFLAGS then $MAKEFLAGS should only contain -j X
    • glaucus adds an additional -O so this won’t work
    • still glaucus provides a samu wrapper which passes -j X to muon samu making this unnecessary?
  • Run muon -C build before configure options instead of providing build as the last argument?
  • -Dcpp_std=c++17 vs c++23 for muon?
  • b_ndebug=true disables assertions
  • buildtype=release sets debug=false
  • default_library=shared prevents static libraries from being built (wayland and libxkbcommon)
  • default_both_libraries=shared controls what is used internally for linking (defaults to shared on meson and auto on muon)
  • Explicitly set both default_library and default_both_libraries to shared as projects can override them otherwise (this is needed even when meson defaults to default_library=shared)
  • prefer_static=false is the default on both muon and meson
  • abuild-meson uses custom cross files on Alpine
  • When the prefix is /usr: sysconfdir defaults to /etc, localstatedir defaults to /var, and sharedstatedir defaults to /var/lib
  • meson only understands cpu_family and not cpu