Changeset View
Changeset View
Standalone View
Standalone View
Mk/Uses/ninja.mk
Show All 9 Lines | |||||
# | # | ||||
# MAINTAINER: ports@FreeBSD.org | # MAINTAINER: ports@FreeBSD.org | ||||
.if !defined(_INCLUDE_USES_NINJA_MK) | .if !defined(_INCLUDE_USES_NINJA_MK) | ||||
_INCLUDE_USES_NINJA_MK= yes | _INCLUDE_USES_NINJA_MK= yes | ||||
_valid_ARGS= build make run | _valid_ARGS= build make run | ||||
.for _arg in ${ninja_ARGS} | . for _arg in ${ninja_ARGS} | ||||
. if empty(_valid_ARGS:M${_arg}) | . if empty(_valid_ARGS:M${_arg}) | ||||
IGNORE= 'USES+= ninja:${ninja_ARGS}' usage: argument [${_arg}] is not recognized | IGNORE= 'USES+= ninja:${ninja_ARGS}' usage: argument [${_arg}] is not recognized | ||||
. endif | . endif | ||||
.endfor | . endfor | ||||
.if empty(ninja_ARGS) | . if empty(ninja_ARGS) | ||||
ninja_ARGS+= make | ninja_ARGS+= make | ||||
.endif | . endif | ||||
.if ${ninja_ARGS:Mmake} | . if ${ninja_ARGS:Mmake} | ||||
ninja_ARGS+= build | ninja_ARGS+= build | ||||
.endif | . endif | ||||
.if ${NINJA_DEFAULT} == ninja | . if ${NINJA_DEFAULT} == ninja | ||||
NINJA_CMD= ninja | NINJA_CMD= ninja | ||||
_NINJA_PORT= devel/ninja | _NINJA_PORT= devel/ninja | ||||
.elif ${NINJA_DEFAULT} == samurai | . elif ${NINJA_DEFAULT} == samurai | ||||
NINJA_CMD= samu | NINJA_CMD= samu | ||||
_NINJA_PORT= devel/samurai | _NINJA_PORT= devel/samurai | ||||
MAKE_ENV+= SAMUFLAGS="-v -j${MAKE_JOBS_NUMBER}" | MAKE_ENV+= SAMUFLAGS="-v -j${MAKE_JOBS_NUMBER}" | ||||
. if ${ninja_ARGS:Mbuild} && !${BINARY_ALIAS:U:Mninja=*} | . if ${ninja_ARGS:Mbuild} && !${BINARY_ALIAS:U:Mninja=*} | ||||
# Cmake and Meson have native support for Samurai and detect and | # Cmake and Meson have native support for Samurai and detect and | ||||
# use it when Ninja is not available in the build environment. The | # use it when Ninja is not available in the build environment. The | ||||
# alias is needed for other ports which call Ninja directly and do | # alias is needed for other ports which call Ninja directly and do | ||||
# not fall back to Samurai. There should be no harm in providing it | # not fall back to Samurai. There should be no harm in providing it | ||||
# generally. | # generally. | ||||
BINARY_ALIAS+= ninja=samu | BINARY_ALIAS+= ninja=samu | ||||
. endif | . endif | ||||
.else | . else | ||||
IGNORE= invalid DEFAULT_VERSIONS+=ninja=${NINJA_DEFAULT} | IGNORE= invalid DEFAULT_VERSIONS+=ninja=${NINJA_DEFAULT} | ||||
.endif | . endif | ||||
.if ${ninja_ARGS:Mbuild} | . if ${ninja_ARGS:Mbuild} | ||||
BUILD_DEPENDS+= ${NINJA_CMD}:${_NINJA_PORT} | BUILD_DEPENDS+= ${NINJA_CMD}:${_NINJA_PORT} | ||||
# Humanize build log and include percentage of completed jobs %p in it. | # Humanize build log and include percentage of completed jobs %p in it. | ||||
# See samu(1) or the Ninja manual. | # See samu(1) or the Ninja manual. | ||||
MAKE_ENV+= NINJA_STATUS="[%p %s/%t] " | MAKE_ENV+= NINJA_STATUS="[%p %s/%t] " | ||||
.endif | . endif | ||||
.if ${ninja_ARGS:Mmake} | . if ${ninja_ARGS:Mmake} | ||||
. if ${NINJA_DEFAULT} == ninja | . if ${NINJA_DEFAULT} == ninja | ||||
# samu does not support GNU-style args, so we cannot just append | # samu does not support GNU-style args, so we cannot just append | ||||
# -v last. samu gets this via SAMUFLAGS above but ninja does not | # -v last. samu gets this via SAMUFLAGS above but ninja does not | ||||
# support an equivalent environment variable. | # support an equivalent environment variable. | ||||
MAKE_ARGS+= -v | MAKE_ARGS+= -v | ||||
. endif | . endif | ||||
CMAKE_ARGS+= -GNinja | CMAKE_ARGS+= -GNinja | ||||
MAKEFILE= | MAKEFILE= | ||||
MAKE_CMD= ${NINJA_CMD} | MAKE_CMD= ${NINJA_CMD} | ||||
MAKE_FLAGS= | MAKE_FLAGS= | ||||
# Set a minimal job of 1 | # Set a minimal job of 1 | ||||
_MAKE_JOBS= -j${MAKE_JOBS_NUMBER} | _MAKE_JOBS= -j${MAKE_JOBS_NUMBER} | ||||
_DESTDIR_VIA_ENV= yes | _DESTDIR_VIA_ENV= yes | ||||
.endif | . endif | ||||
.if ${ninja_ARGS:Mrun} | . if ${ninja_ARGS:Mrun} | ||||
RUN_DEPENDS+= ${NINJA_CMD}:${_NINJA_PORT} | RUN_DEPENDS+= ${NINJA_CMD}:${_NINJA_PORT} | ||||
.endif | . endif | ||||
.endif | .endif |