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


Reply via email to