Lines 4-29
Link Here
|
4 |
# |
4 |
# |
5 |
# Feature: ninja |
5 |
# Feature: ninja |
6 |
# Usage: USES=ninja |
6 |
# Usage: USES=ninja |
|
|
7 |
# Valid ARGS: build, make (default), run |
7 |
# |
8 |
# |
|
|
9 |
# build add a build dependency on ninja |
10 |
# make use ninja for the build instead of make, implies "build" |
11 |
# run add a run dependency on ninja |
12 |
# |
8 |
# MAINTAINER: portmgr@FreeBSD.org |
13 |
# MAINTAINER: portmgr@FreeBSD.org |
9 |
|
14 |
|
10 |
.if !defined(_INCLUDE_USES_NINJA_MK) |
15 |
.if !defined(_INCLUDE_USES_NINJA_MK) |
11 |
_INCLUDE_USES_NINJA_MK= yes |
16 |
_INCLUDE_USES_NINJA_MK= yes |
12 |
|
17 |
|
13 |
.if !empty(ninja_ARGS) |
18 |
_valid_ARGS= build make run |
14 |
IGNORE= Incorrect 'USES+= ninja:${ninja_ARGS}' ninja takes no arguments |
19 |
|
|
|
20 |
.for _arg in ${ninja_ARGS} |
21 |
. if empty(_valid_ARGS:M${_arg}) |
22 |
IGNORE= 'USES+= ninja:${ninja_ARGS}' usage: argument [${_arg}] is not recognized |
23 |
. endif |
24 |
.endfor |
25 |
|
26 |
.if empty(ninja_ARGS) |
27 |
ninja_ARGS+= make |
15 |
.endif |
28 |
.endif |
16 |
|
29 |
|
17 |
MAKE_ARGS+= -v |
30 |
.if ${ninja_ARGS:Mmake} |
|
|
31 |
ninja_ARGS+= build |
32 |
.endif |
18 |
|
33 |
|
19 |
BUILD_DEPENDS+= ninja:devel/ninja |
34 |
.if ${NINJA_DEFAULT} == ninja |
|
|
35 |
NINJA_CMD= ninja |
36 |
_NINJA_PORT= devel/ninja |
37 |
.elif ${NINJA_DEFAULT} == samurai |
38 |
NINJA_CMD= samu |
39 |
_NINJA_PORT= devel/samurai |
40 |
MAKE_ENV+= SAMUFLAGS="-v -j${MAKE_JOBS_NUMBER}" |
41 |
. if ${ninja_ARGS:Mbuild} && !${BINARY_ALIAS:U:Mninja=*} |
42 |
# Cmake and Meson have native support for Samurai and detect and |
43 |
# use it when Ninja is not available in the build environment. The |
44 |
# alias is needed for other ports which call Ninja directly and do |
45 |
# not fall back to Samurai. There should be no harm in providing it |
46 |
# generally. |
47 |
BINARY_ALIAS+= ninja=samu |
48 |
. endif |
49 |
.else |
50 |
IGNORE= invalid DEFAULT_VERSIONS+=ninja=${NINJA_DEFAULT} |
51 |
.endif |
20 |
|
52 |
|
|
|
53 |
.if ${ninja_ARGS:Mbuild} |
54 |
BUILD_DEPENDS+= ${NINJA_CMD}:${_NINJA_PORT} |
55 |
# Humanize build log and include percentage of completed jobs %p in it. |
56 |
# See samu(1) or the Ninja manual. |
57 |
MAKE_ENV+= NINJA_STATUS="[%p %s/%t] " |
58 |
.endif |
59 |
|
60 |
.if ${ninja_ARGS:Mmake} |
61 |
MAKE_ARGS+= -v |
21 |
CMAKE_ARGS+= -GNinja |
62 |
CMAKE_ARGS+= -GNinja |
22 |
MAKEFILE= |
63 |
MAKEFILE= |
23 |
MAKE_CMD= ninja |
64 |
MAKE_CMD= ${NINJA_CMD} |
24 |
MAKE_FLAGS= |
65 |
MAKE_FLAGS= |
25 |
# Set a minimal job of 1 |
66 |
# Set a minimal job of 1 |
26 |
_MAKE_JOBS= -j${MAKE_JOBS_NUMBER} |
67 |
_MAKE_JOBS= -j${MAKE_JOBS_NUMBER} |
27 |
_DESTDIR_VIA_ENV= yes |
68 |
_DESTDIR_VIA_ENV= yes |
|
|
69 |
.endif |
28 |
|
70 |
|
|
|
71 |
.if ${ninja_ARGS:Mrun} |
72 |
RUN_DEPENDS+= ${NINJA_CMD}:${_NINJA_PORT} |
29 |
.endif |
73 |
.endif |
|
|
74 |
|
75 |
.endif |