blob: 7761fb11450c066a4eca58316531aee86871ca87 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# $NetBSD: bsd.pkg.help.mk,v 1.4 2006/08/04 07:34:25 rillig Exp $
#
# This is the integrated pkgsrc online help system. To query for the
# meaning of a variable, run "make help TOPIC=VARNAME". All variables from
# certain pkgsrc Makefile fragments that have inline comments are eligible
# for querying.
.if !defined(_PKGSRC_HELP_MK)
_PKGSRC_HELP_MK= # defined
_HELP_FILES= # empty
_HELP_FILES+= mk/defaults/mk.conf
_HELP_FILES+= mk/bsd.prefs.mk
_HELP_FILES+= mk/bsd.pkg.mk
_HELP_FILES+= mk/bsd.options.mk
_HELP_FILES+= mk/*/*.mk
_HELP_AWK= \
BEGIN { \
no = 0; yes = 1; \
hline = "==============="; \
hline = hline hline hline hline hline; \
found = no; var = no; comment = no; n = 0; \
rcsid = ""; \
last_line_was_rcsid = no; \
last_line_was_empty = yes; \
} \
/./ { \
if ($$0 ~ /^\\#.*\$$.*\$$$$/) { \
rcsid = $$0; \
last_line_was_rcsid = yes; \
} else { \
if (!(last_line_was_rcsid && $$0 == "\#")) { \
lines[n++] = $$0; \
} \
last_line_was_rcsid = no; \
} \
} \
($$1 == VARNAME"?=") || ($$1 == "\#"VARNAME"=") \
|| ($$1 == "\#" && $$2 == VARNAME && last_line_was_empty) { \
var = 1; \
} \
/^\#/ { \
comment = 1; \
} \
/^$$/ { \
if (var && comment) { \
found = yes; \
print hline; \
if (rcsid != "") { print rcsid; print "\#"; } \
for (i = 0; i < n; i++) { print lines[i]; } \
} \
var = no; comment = no; n = 0; \
} \
/./ { \
last_line_was_empty = no; \
} \
/^\\#$$/ || /^$$/ { \
last_line_was_empty = yes; \
} \
END { \
if (found) { \
print hline; \
} else { \
print "No help found for " VARNAME "."; \
} \
}
.if !defined(TOPIC) && defined(VARNAME)
TOPIC= ${VARNAME}
.endif
.if !defined(TOPIC) && defined(topic)
TOPIC= ${topic}
.endif
.PHONY: help
help:
.if !defined(TOPIC)
@${ECHO} "usage: "${MAKE:Q}" help TOPIC=<VARNAME>" 1>&2
.else
${_PKG_SILENT}${_PKG_DEBUG} set -e; \
cd ${PKGSRCDIR}; \
{ for i in ${_HELP_FILES}; do ${CAT} "$$i"; ${ECHO} ""; done; } \
| ${AWK} -v VARNAME=${TOPIC} '${_HELP_AWK}'
.endif
.endif
|