diff options
-rw-r--r-- | eclass/ninja-utils.eclass | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/eclass/ninja-utils.eclass b/eclass/ninja-utils.eclass index c5f34934192f..cf98e866d152 100644 --- a/eclass/ninja-utils.eclass +++ b/eclass/ninja-utils.eclass @@ -26,6 +26,16 @@ esac if [[ -z ${_NINJA_UTILS_ECLASS} ]]; then _NINJA_UTILS_ECLASS=1 +# @ECLASS_VARIABLE: NINJA +# @PRE_INHERIT +# @DESCRIPTION: +# Specify a compatible ninja implementation to be used by eninja(). +# At this point only "ninja" and "samu" are explicitly supported, +# but other values can be set where NINJA_DEPEND will then be set +# to a blank variable. +# The default is set to "ninja". +: ${NINJA:=ninja} + # @ECLASS_VARIABLE: NINJAOPTS # @DEFAULT_UNSET # @DESCRIPTION: @@ -35,6 +45,18 @@ _NINJA_UTILS_ECLASS=1 inherit multiprocessing +case "${NINJA}" in + ninja) + NINJA_DEPEND=">=dev-util/ninja-1.8.2" + ;; + samu) + NINJA_DEPEND="dev-util/samurai" + ;; + *) + NINJA_DEPEND="" + ;; +esac + # @FUNCTION: eninja # @USAGE: [<args>...] # @DESCRIPTION: @@ -48,7 +70,8 @@ eninja() { if [[ -z ${NINJAOPTS+set} ]]; then NINJAOPTS="-j$(makeopts_jobs "${MAKEOPTS}" 999) -l$(makeopts_loadavg "${MAKEOPTS}" 0)" fi - set -- ninja -v ${NINJAOPTS} "$@" + [[ -n "${NINJA_DEPEND}" ]] || ewarn "Unknown value '${NINJA}' for \${NINJA}" + set -- "${NINJA}" -v ${NINJAOPTS} "$@" echo "$@" >&2 "$@" || die "${nonfatal_args[@]}" "${*} failed" } |