freebsd-dev/tools/build/options/makeman
2006-03-21 09:05:42 +00:00

186 lines
3.1 KiB
Bash

#!/bin/sh
#
# This file is in the public domain.
ident='$FreeBSD$'
#
# show settings | options
#
show()
{
mode=$1; shift
case ${mode} in
settings)
yes_prefix=WITH
no_prefix=WITHOUT
;;
options)
yes_prefix=WITHOUT
no_prefix=WITH
;;
*)
echo "internal error" >/dev/stderr
exit 1
;;
esac
make "$@" -f ../../../share/mk/bsd.own.mk SRCCONF=/dev/null -V_ -dg1 |
grep ^MK_ |sort |
while read var _ val; do
opt=${var#MK_}
case ${val} in
yes)
echo ${yes_prefix}_${opt}
;;
no)
echo ${no_prefix}_${opt}
;;
*)
echo "make showconfig broken" >/dev/stderr
exit 1
;;
esac
done
}
main()
{
trap 'rm -f _config _config2 _deps' exit
ident=${ident#$}
ident=${ident% $}
fbsdid='$FreeBSD$'
cat <<EOF
.\" DO NOT EDIT-- this file is automatically generated.
.\" from ${ident}
.\" ${fbsdid}
.Dd $(LC_TIME=C date +'%B %e, %Y')
.Dt SRC.CONF 5
.Os
.Sh NAME
.Nm src.conf
.Nd source build options
.Sh DESCRIPTION
The
.Nm
file contains settings that will apply to every build involving the
.Fx
source tree; see
.Xr build 7 .
.Pp
The
.Nm
file uses the standard makefile syntax.
However,
.Nm
should not specify any dependencies to
.Xr make 1 .
Instead,
.Nm
is to set
.Xr make 1
variables that control the aspects of how the system builds.
.Pp
The default location of
.Nm
is
.Pa /etc/src.conf ,
though an alternative location can be specified in the
.Xr make 1
variable
.Va SRCCONF .
Overriding the location of
.Nm
maybe necessary if the system-wide settings are not suitable
for a particular build.
For instance, setting
.Va SRCCONF
to
.Pa /dev/null
effectively resets all build controls to their defaults.
.Pp
The only purpose of
.Nm
is to control the compilation of the
.Fx
sources, which are usually found in
.Pa /usr/src .
As a rule, the system administrator creates
.Nm
when the values of certain control variables need to be changed
from their defaults.
.Pp
In addition, control variables can be specified
for a particular build via the
.Fl D
option of
.Xr make 1
or in environment; see
.Xr environ 7 .
.Pp
The values of variables are ignored; the variable being
set at all (even to
.Dq Li FALSE
or
.Dq Li NO )
causes it to be treated as if it was set with no value.
.Pp
The following list provides a name and short description for variables
that can be used for source builds.
.Bl -tag -width indent
EOF
show settings |sort >_config
show options |
while read opt; do
if [ -f ${opt} ]; then
cat <<EOF
.It Va ${opt}
EOF
sed -e's/\$\(FreeBSD: .*\) \$/from \1/' ${opt}
else
echo "no description found for ${opt}, skipping" >/dev/stderr
fi
show settings -D${opt} |sort >_config2
comm -13 _config _config2 |grep -v "^${opt}$" >_deps
if [ -s _deps ]; then
cat <<EOF
When set, it also enforces the following options:
.Pp
.Bl -item -compact
EOF
cat _deps |while read opt2; do
cat <<EOF
.It
.Va ${opt2}
EOF
done
cat <<EOF
.El
EOF
fi
done
cat <<EOF
.El
.Sh FILES
.Bl -tag -compact
.It Pa /etc/src.conf
.It Pa /usr/share/mk/bsd.own.mk
.El
.Sh SEE ALSO
.Xr make 1 ,
.Xr make.conf 5 ,
.Xr build 7 ,
.Xr ports 7
.Sh HISTORY
The
.Nm
file appeared in
.Fx 7.0 .
.Sh AUTHORS
This manual page was autogenerated.
EOF
}
main