3 # This file is in the public domain.
10 t=$(mktemp -d -t makeman)
11 trap 'test -d $t && rm -rf $t' exit
13 srcdir=$(realpath ../../..)
14 make="make -C $srcdir -m $srcdir/share/mk"
17 # usage: no_targets all_targets yes_targets
23 if [ "${t1}" = "${t2}" ] ; then
33 ALL_TARGETS=$(echo $(${make} targets | tail -n +2))
35 for target in ${ALL_TARGETS} ; do
37 env -i ${make} showconfig \
38 SRC_ENV_CONF=/dev/null SRCCONF=/dev/null \
39 __MAKE_CONF=/dev/null \
40 TARGET_ARCH=${target#*/} TARGET=${target%/*} |
41 while read var _ val ; do
43 if [ $opt = "$prev_opt" ]; then
44 echo "$target: ignoring duplicate option $opt" >&2
56 echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2
60 done > $t/settings.target
61 if [ -r $t/settings ] ; then
62 join -t\ $t/settings $t/settings.target > $t/settings.new
63 mv $t/settings.new $t/settings
65 mv $t/settings.target $t/settings
69 while read opt targets ; do
70 if [ "${targets}" = "${ALL_TARGETS}" ] ; then
72 elif [ -z "${targets}" ] ; then
75 echo "WITHOUT_${opt}" $(no_targets "${ALL_TARGETS}" "${targets}")
76 echo "WITH_${opt} ${targets}"
82 # usage: show { settings | with | without } ...
102 echo 'internal error' >&2
106 env -i ${make} .MAKE.MODE=normal "$@" showconfig __MAKE_CONF=/dev/null \
108 while read var _ val ; do
112 echo ${yes_prefix}_${opt}
115 echo ${no_prefix}_${opt}
118 echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2
132 .\" DO NOT EDIT-- this file is automatically generated.
135 .Dd $(echo $(LC_TIME=C date +'%B %e, %Y'))
140 .Nd "source build options"
144 file contains settings that will apply to every build involving the
151 file uses the standard makefile syntax.
154 should not specify any dependencies to
160 variables that control the aspects of how the system builds.
162 The default location of
166 though an alternative location can be specified in the
170 Overriding the location of
172 may be necessary if the system-wide settings are not suitable
173 for a particular build.
174 For instance, setting
178 effectively resets all build controls to their defaults.
182 is to control the compilation of the
184 source code, which is usually located in
186 As a rule, the system administrator creates
188 when the values of certain control variables need to be changed
191 In addition, control variables can be specified
192 for a particular build via the
196 or in its environment; see
201 for the build can be controlled via the
203 variable, which defaults to
204 .Pa /etc/src-env.conf .
205 Some examples that may only be set in this file are
206 .Va WITH_DIRDEPS_BUILD ,
209 as they are environment-only variables.
212 may be set here only when using
213 .Va WITH_DIRDEPS_BUILD .
215 The values of variables are ignored regardless of their setting;
216 even if they would be set to
220 Just the existence of an option will cause
224 The following list provides a name and short description for variables
225 that can be used for source builds.
226 .Bl -tag -width indent
228 show settings SRC_ENV_CONF=/dev/null | sort > $t/config_default
229 # Work around WITH_LDNS_UTILS forcing BIND_UTILS off by parsing the
230 # actual config that results from enabling every WITH_ option. This
231 # can be reverted if/when we no longer have options that disable
233 show with SRC_ENV_CONF=/dev/null | sort | sed 's/$/=/' > $t/src.conf
234 show settings SRC_ENV_CONF=$t/src.conf | sort > $t/config_WITH_ALL
235 show without SRC_ENV_CONF=/dev/null | sort > $t/config_WITHOUT_ALL
236 env_only_options="$(${make} -V __ENV_ONLY_OPTIONS)"
239 while read opt targets ; do
240 if [ ! -f ${opt} ] ; then
241 echo "no description found for ${opt}, skipping" >&2
246 sed -e's/\$\(FreeBSD: .*\) \$/from \1/' ${opt}
247 if [ -n "${targets}" ] ; then
249 echo 'It is a default setting on'
250 echo $(echo ${targets} | sed -e's/ /, /g' -e's/\(.*\), /\1 and /').
253 if [ "${opt%%_*}" = 'WITHOUT' ] ; then
254 sed -n "/^WITH_${opt#WITHOUT_}$/!s/$/=/p" $t/config_WITH_ALL > $t/src.conf
255 show settings SRC_ENV_CONF=$t/src.conf -D${opt} | sort > $t/config_WITH_ALL_${opt}
256 comm -13 $t/config_WITH_ALL $t/config_WITH_ALL_${opt} | sed -n "/^${opt}$/!p" > $t/deps
257 elif [ "${opt%%_*}" = 'WITH' ] ; then
258 sed -n "/^WITHOUT${opt#WITH}$/!s/$/=/p" $t/config_WITHOUT_ALL > $t/src.conf
259 show settings SRC_ENV_CONF=$t/src.conf -D${opt} | sort > $t/config_WITHOUT_ALL_${opt}
260 comm -13 $t/config_WITHOUT_ALL $t/config_WITHOUT_ALL_${opt} | sed -n "/^${opt}$/!p" > $t/deps
262 echo 'internal error' >&2
266 show settings SRC_ENV_CONF=/dev/null -D${opt} | sort > $t/config_${opt}
267 comm -13 $t/config_default $t/config_${opt} | sed -n "/^${opt}$/!p" |
268 comm -13 $t/deps - > $t/deps2
270 # Work around BIND_UTILS=no being the default when every WITH_
272 if [ "$(cat $t/deps2)" = WITHOUT_BIND_UTILS ]; then
273 sort $t/deps $t/deps2 > $t/_deps
279 if [ -s $t/deps ] ; then
281 echo 'When set, it also enforces the following options:'
283 echo '.Bl -item -compact'
291 if [ -s $t/deps2 ] ; then
292 if [ ${havedeps} -eq 1 ] ; then
295 echo 'When set, the following options are also in effect:'
297 echo '.Bl -inset -compact'
299 echo ".It Va ${opt2}"
300 noopt=$(echo ${opt2} | sed -e's/WITH_/WITHOUT_/;t' -e's/WITHOUT_/WITH_/')
303 echo 'is set explicitly)'
308 case " ${env_only_options} " in
311 echo "This must be set in the environment, make command line, or"
312 echo ".Pa /etc/src-env.conf ,"
314 echo ".Pa /etc/src.conf ."
323 .Bl -tag -compact -width Pa
325 .It Pa /etc/src-env.conf
326 .It Pa /usr/share/mk/bsd.own.mk
339 This manual page was autogenerated.
346 local c0='|' c1='/' c2='-' c3='\'
348 eval printf '%c\\b' '$c'${twiddle_pos}
349 twiddle_pos=$(((twiddle_pos+1)%4))