From: orbea <or...@riseup.net> samurai is a ninja-compatible build tool written in C which works with cmake, meson and other users of ninja.
It is feature-complete and supports most of the same options as ninja. Signed-off-by: orbea <or...@riseup.net> Signed-off-by: Sam James <s...@gentoo.org> --- eclass/ninja-utils.eclass | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/eclass/ninja-utils.eclass b/eclass/ninja-utils.eclass index c5f34934192f..67f7a6b5e8a7 100644 --- a/eclass/ninja-utils.eclass +++ b/eclass/ninja-utils.eclass @@ -26,6 +26,15 @@ esac if [[ -z ${_NINJA_UTILS_ECLASS} ]]; then _NINJA_UTILS_ECLASS=1 +# @ECLASS_VARIABLE: NINJA +# @PRE_INHERIT +# @DEFAULT_UNSET +# @DESCRIPTION: +# Specify a compatible ninja implementation to be used by eninja. +# At this point only "ninja" and "samu" are supported. +# The default is set to "ninja". +: ${NINJA:=ninja} + # @ECLASS_VARIABLE: NINJAOPTS # @DEFAULT_UNSET # @DESCRIPTION: @@ -35,6 +44,19 @@ _NINJA_UTILS_ECLASS=1 inherit multiprocessing +case "${NINJA}" in + ninja) + NINJA_DEPEND=">=dev-util/ninja-1.8.2" + ;; + samu) + NINJA_DEPEND="dev-util/samurai" + ;; + *) + eerror "Unknown value for \${NINJA}" + die "Value ${NINJA} is not supported" + ;; +esac + # @FUNCTION: eninja # @USAGE: [<args>...] # @DESCRIPTION: @@ -48,7 +70,7 @@ eninja() { if [[ -z ${NINJAOPTS+set} ]]; then NINJAOPTS="-j$(makeopts_jobs "${MAKEOPTS}" 999) -l$(makeopts_loadavg "${MAKEOPTS}" 0)" fi - set -- ninja -v ${NINJAOPTS} "$@" + set -- "${NINJA}" -v ${NINJAOPTS} "$@" echo "$@" >&2 "$@" || die "${nonfatal_args[@]}" "${*} failed" } -- 2.35.1