1c5922fbfSRuslan Ermilov#!/bin/sh 2c5922fbfSRuslan Ermilov# 3c5922fbfSRuslan Ermilov# This file is in the public domain. 49dc5d76eSEd Maste# 50af1da97SEd Maste# This script creates the src.conf.5 man page using template text contained 60af1da97SEd Maste# herein and the contents of the WITH_* and WITHOUT_* files in the same 70af1da97SEd Maste# directory. Each WITH_* and WITHOUT_* file documents the effect of the 89dc5d76eSEd Maste# /etc/src.conf knob with the same name. 99dc5d76eSEd Maste# 100af1da97SEd Maste# For each supported architecture, "make showconfig" is invoked to determine 110af1da97SEd Maste# the default setting of every option: always WITH_, always WITHOUT_, or 120af1da97SEd Maste# architecture-dependent WITH_/WITHOUT_. It also determines and describes 130af1da97SEd Maste# dependencies between options. 149dc5d76eSEd Maste# 159dc5d76eSEd Maste# Usage: 169dc5d76eSEd Maste# 179dc5d76eSEd Maste# cd tools/build/options 189dc5d76eSEd Maste# sh makeman > ../../../share/man/man5/src.conf.5 19c5922fbfSRuslan Ermilov 202701a1b7SRuslan Ermilovset -o errexit 21f1f871e1SHajimu UMEMOTOexport LC_ALL=C 222701a1b7SRuslan Ermilov 232701a1b7SRuslan Ermilovt=$(mktemp -d -t makeman) 244af17bf5SWarren Blocktrap 'test -d $t && rm -rf $t' exit 252701a1b7SRuslan Ermilov 2669c469c9SDag-Erling Smørgravsrcdir=$(realpath ../../..) 2769c469c9SDag-Erling Smørgravmake="make -C $srcdir -m $srcdir/share/mk" 2869c469c9SDag-Erling Smørgrav 29c5922fbfSRuslan Ermilov# 302701a1b7SRuslan Ermilov# usage: no_targets all_targets yes_targets 312701a1b7SRuslan Ermilov# 322701a1b7SRuslan Ermilovno_targets() 332701a1b7SRuslan Ermilov{ 342701a1b7SRuslan Ermilov for t1 in $1 ; do 352701a1b7SRuslan Ermilov for t2 in $2 ; do 362701a1b7SRuslan Ermilov if [ "${t1}" = "${t2}" ] ; then 372701a1b7SRuslan Ermilov continue 2 382701a1b7SRuslan Ermilov fi 392701a1b7SRuslan Ermilov done 402701a1b7SRuslan Ermilov echo ${t1} 412701a1b7SRuslan Ermilov done 422701a1b7SRuslan Ermilov} 432701a1b7SRuslan Ermilov 442701a1b7SRuslan Ermilovshow_options() 452701a1b7SRuslan Ermilov{ 46177d707cSBryan Drewery ALL_TARGETS=$(echo $(${make} targets MK_AUTO_OBJ=no | tail -n +2)) 472701a1b7SRuslan Ermilov rm -f $t/settings 482701a1b7SRuslan Ermilov for target in ${ALL_TARGETS} ; do 49b7f38e69SEd Maste prev_opt= 503dfad7c7SBryan Drewery env -i ${make} showconfig \ 51317c99b7SBryan Drewery SRC_ENV_CONF=/dev/null SRCCONF=/dev/null \ 52317c99b7SBryan Drewery __MAKE_CONF=/dev/null \ 532701a1b7SRuslan Ermilov TARGET_ARCH=${target#*/} TARGET=${target%/*} | 542701a1b7SRuslan Ermilov while read var _ val ; do 55897ae85fSBrooks Davis case $var in 56897ae85fSBrooks Davis MK_*) 572701a1b7SRuslan Ermilov opt=${var#MK_} 58b7f38e69SEd Maste if [ $opt = "$prev_opt" ]; then 59b7f38e69SEd Maste echo "$target: ignoring duplicate option $opt" >&2 60b7f38e69SEd Maste continue 61b7f38e69SEd Maste fi 62b7f38e69SEd Maste prev_opt=$opt 632701a1b7SRuslan Ermilov case ${val} in 642701a1b7SRuslan Ermilov yes) 652701a1b7SRuslan Ermilov echo ${opt} ${target} 662701a1b7SRuslan Ermilov ;; 672701a1b7SRuslan Ermilov no) 682701a1b7SRuslan Ermilov echo ${opt} 692701a1b7SRuslan Ermilov ;; 702701a1b7SRuslan Ermilov *) 71cc2520d2SSimon J. Gerraty echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2 722701a1b7SRuslan Ermilov exit 1 732701a1b7SRuslan Ermilov ;; 742701a1b7SRuslan Ermilov esac 75897ae85fSBrooks Davis ;; 76897ae85fSBrooks Davis OPT_*) 77897ae85fSBrooks Davis # ignore 78897ae85fSBrooks Davis ;; 79897ae85fSBrooks Davis *) 80897ae85fSBrooks Davis echo "make showconfig broken: ${var} ${_} ${val} not MK_ or OPT_" >&2 81897ae85fSBrooks Davis exit 1 82897ae85fSBrooks Davis ;; 83897ae85fSBrooks Davis esac 842701a1b7SRuslan Ermilov done > $t/settings.target 852701a1b7SRuslan Ermilov if [ -r $t/settings ] ; then 862701a1b7SRuslan Ermilov join -t\ $t/settings $t/settings.target > $t/settings.new 872701a1b7SRuslan Ermilov mv $t/settings.new $t/settings 882701a1b7SRuslan Ermilov else 892701a1b7SRuslan Ermilov mv $t/settings.target $t/settings 902701a1b7SRuslan Ermilov fi 912701a1b7SRuslan Ermilov done 922701a1b7SRuslan Ermilov 934078537cSBryan Drewery while read opt targets ; do 942701a1b7SRuslan Ermilov if [ "${targets}" = "${ALL_TARGETS}" ] ; then 952701a1b7SRuslan Ermilov echo "WITHOUT_${opt}" 962701a1b7SRuslan Ermilov elif [ -z "${targets}" ] ; then 972701a1b7SRuslan Ermilov echo "WITH_${opt}" 982701a1b7SRuslan Ermilov else 992701a1b7SRuslan Ermilov echo "WITHOUT_${opt}" $(no_targets "${ALL_TARGETS}" "${targets}") 1002701a1b7SRuslan Ermilov echo "WITH_${opt} ${targets}" 1012701a1b7SRuslan Ermilov fi 1024078537cSBryan Drewery done < $t/settings 1032701a1b7SRuslan Ermilov} 1042701a1b7SRuslan Ermilov 1052701a1b7SRuslan Ermilov# 1062701a1b7SRuslan Ermilov# usage: show { settings | with | without } ... 107c5922fbfSRuslan Ermilov# 108c5922fbfSRuslan Ermilovshow() 109c5922fbfSRuslan Ermilov{ 110c5922fbfSRuslan Ermilov 111c5922fbfSRuslan Ermilov mode=$1 ; shift 112c5922fbfSRuslan Ermilov case ${mode} in 113c5922fbfSRuslan Ermilov settings) 114c5922fbfSRuslan Ermilov yes_prefix=WITH 115c5922fbfSRuslan Ermilov no_prefix=WITHOUT 116c5922fbfSRuslan Ermilov ;; 1172701a1b7SRuslan Ermilov with) 1182701a1b7SRuslan Ermilov yes_prefix=WITH 119c5922fbfSRuslan Ermilov no_prefix=WITH 120c5922fbfSRuslan Ermilov ;; 1212701a1b7SRuslan Ermilov without) 1222701a1b7SRuslan Ermilov yes_prefix=WITHOUT 1232701a1b7SRuslan Ermilov no_prefix=WITHOUT 1242701a1b7SRuslan Ermilov ;; 125c5922fbfSRuslan Ermilov *) 1262701a1b7SRuslan Ermilov echo 'internal error' >&2 127c5922fbfSRuslan Ermilov exit 1 128c5922fbfSRuslan Ermilov ;; 129c5922fbfSRuslan Ermilov esac 130161f8edcSDag-Erling Smørgrav requireds=$(env -i ${make} -f ${srcdir}/share/mk/src.opts.mk \ 131161f8edcSDag-Erling Smørgrav -V 'REQUIRED_OPTIONS:ts,') 1323dfad7c7SBryan Drewery env -i ${make} .MAKE.MODE=normal "$@" showconfig __MAKE_CONF=/dev/null \ 133317c99b7SBryan Drewery SRCCONF=/dev/null | 134c5922fbfSRuslan Ermilov while read var _ val ; do 135897ae85fSBrooks Davis case ${var} in 136897ae85fSBrooks Davis MK_*) 137c5922fbfSRuslan Ermilov opt=${var#MK_} 138bce99679SColin Percival case ,${requireds}, in 139bce99679SColin Percival *,${opt},*) 140bce99679SColin Percival continue 141bce99679SColin Percival ;; 142bce99679SColin Percival esac 143c5922fbfSRuslan Ermilov case ${val} in 144c5922fbfSRuslan Ermilov yes) 145c5922fbfSRuslan Ermilov echo ${yes_prefix}_${opt} 146c5922fbfSRuslan Ermilov ;; 147c5922fbfSRuslan Ermilov no) 148c5922fbfSRuslan Ermilov echo ${no_prefix}_${opt} 149c5922fbfSRuslan Ermilov ;; 150c5922fbfSRuslan Ermilov *) 151cc2520d2SSimon J. Gerraty echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2 152c5922fbfSRuslan Ermilov exit 1 153c5922fbfSRuslan Ermilov ;; 154c5922fbfSRuslan Ermilov esac 155897ae85fSBrooks Davis ;; 156897ae85fSBrooks Davis OPT_*) 157897ae85fSBrooks Davis # ignore 158897ae85fSBrooks Davis ;; 159897ae85fSBrooks Davis *) 160897ae85fSBrooks Davis echo "make showconfig broken: ${var} ${_} ${val} not MK_ or OPT_" >&2 161897ae85fSBrooks Davis exit 1 162897ae85fSBrooks Davis ;; 163897ae85fSBrooks Davis esac 164897ae85fSBrooks Davis done 165897ae85fSBrooks Davis} 166897ae85fSBrooks Davis 167897ae85fSBrooks Davisshow_group_options() 168897ae85fSBrooks Davis{ 169897ae85fSBrooks Davis env -i ${make} .MAKE.MODE=normal "$@" showconfig __MAKE_CONF=/dev/null \ 170897ae85fSBrooks Davis SRCCONF=/dev/null | 171897ae85fSBrooks Davis while read var _ val ; do 172897ae85fSBrooks Davis case ${var} in 173897ae85fSBrooks Davis MK_*) 174897ae85fSBrooks Davis # ignore 175897ae85fSBrooks Davis ;; 176897ae85fSBrooks Davis OPT_*) 177897ae85fSBrooks Davis opt=${var#OPT_} 178897ae85fSBrooks Davis echo ${opt} 179897ae85fSBrooks Davis ;; 180897ae85fSBrooks Davis *) 181897ae85fSBrooks Davis echo "make showconfig broken: ${var} ${_} ${val} not MK_ or OPT_" >&2 182897ae85fSBrooks Davis exit 1 183897ae85fSBrooks Davis ;; 184897ae85fSBrooks Davis esac 185c5922fbfSRuslan Ermilov done 186c5922fbfSRuslan Ermilov} 187c5922fbfSRuslan Ermilov 188c5922fbfSRuslan Ermilovmain() 189c5922fbfSRuslan Ermilov{ 1907a206c31SWarren Block echo "building src.conf.5 man page from files in ${PWD}" >&2 191c5922fbfSRuslan Ermilov 1920db9a543SEitan Adler generated='@'generated 193c5922fbfSRuslan Ermilov cat <<EOF 194b1a0e564SEitan Adler.\" DO NOT EDIT-- this file is $generated by tools/build/options/makeman. 1952701a1b7SRuslan Ermilov.Dd $(echo $(LC_TIME=C date +'%B %e, %Y')) 196c5922fbfSRuslan Ermilov.Dt SRC.CONF 5 197c5922fbfSRuslan Ermilov.Os 198c5922fbfSRuslan Ermilov.Sh NAME 199c5922fbfSRuslan Ermilov.Nm src.conf 20057caf3d6STom Rhodes.Nd "source build options" 201c5922fbfSRuslan Ermilov.Sh DESCRIPTION 202c5922fbfSRuslan ErmilovThe 203c5922fbfSRuslan Ermilov.Nm 204e6ca6901SGordon Berglingfile contains variables that control what components will be generated during 205e6ca6901SGordon Berglingthe build process of the 206c5922fbfSRuslan Ermilov.Fx 207c5922fbfSRuslan Ermilovsource tree; see 208c5922fbfSRuslan Ermilov.Xr build 7 . 209c5922fbfSRuslan Ermilov.Pp 210c5922fbfSRuslan ErmilovThe 211c5922fbfSRuslan Ermilov.Nm 212c5922fbfSRuslan Ermilovfile uses the standard makefile syntax. 213c5922fbfSRuslan ErmilovHowever, 214c5922fbfSRuslan Ermilov.Nm 215c5922fbfSRuslan Ermilovshould not specify any dependencies to 216c5922fbfSRuslan Ermilov.Xr make 1 . 217c5922fbfSRuslan ErmilovInstead, 218c5922fbfSRuslan Ermilov.Nm 219c5922fbfSRuslan Ermilovis to set 220c5922fbfSRuslan Ermilov.Xr make 1 221c5922fbfSRuslan Ermilovvariables that control the aspects of how the system builds. 222c5922fbfSRuslan Ermilov.Pp 223c5922fbfSRuslan ErmilovThe default location of 224c5922fbfSRuslan Ermilov.Nm 225*dd8c666dSDag-Erling Smørgravis the top level of the source tree, or 226*dd8c666dSDag-Erling Smørgrav.Pa /etc/src.conf 227*dd8c666dSDag-Erling Smørgravif no 228*dd8c666dSDag-Erling Smørgrav.Nm 229*dd8c666dSDag-Erling Smørgravis found in the source tree itself, 230c5922fbfSRuslan Ermilovthough an alternative location can be specified in the 231c5922fbfSRuslan Ermilov.Xr make 1 232c5922fbfSRuslan Ermilovvariable 233c5922fbfSRuslan Ermilov.Va SRCCONF . 234c5922fbfSRuslan ErmilovOverriding the location of 235c5922fbfSRuslan Ermilov.Nm 236c5922fbfSRuslan Ermilovmay be necessary if the system-wide settings are not suitable 237c5922fbfSRuslan Ermilovfor a particular build. 238c5922fbfSRuslan ErmilovFor instance, setting 239c5922fbfSRuslan Ermilov.Va SRCCONF 240c5922fbfSRuslan Ermilovto 241c5922fbfSRuslan Ermilov.Pa /dev/null 242c5922fbfSRuslan Ermiloveffectively resets all build controls to their defaults. 243c5922fbfSRuslan Ermilov.Pp 244c5922fbfSRuslan ErmilovThe only purpose of 245c5922fbfSRuslan Ermilov.Nm 246c5922fbfSRuslan Ermilovis to control the compilation of the 247c5922fbfSRuslan Ermilov.Fx 24857caf3d6STom Rhodessource code, which is usually located in 249c5922fbfSRuslan Ermilov.Pa /usr/src . 250c5922fbfSRuslan ErmilovAs a rule, the system administrator creates 251c5922fbfSRuslan Ermilov.Nm 252c5922fbfSRuslan Ermilovwhen the values of certain control variables need to be changed 253c5922fbfSRuslan Ermilovfrom their defaults. 254c5922fbfSRuslan Ermilov.Pp 255c5922fbfSRuslan ErmilovIn addition, control variables can be specified 256c5922fbfSRuslan Ermilovfor a particular build via the 257c5922fbfSRuslan Ermilov.Fl D 258c5922fbfSRuslan Ermilovoption of 259c5922fbfSRuslan Ermilov.Xr make 1 2603d919b75SMike Makonnenor in its environment; see 261c5922fbfSRuslan Ermilov.Xr environ 7 . 262c5922fbfSRuslan Ermilov.Pp 263ca045714SBryan DreweryThe environment of 264ca045714SBryan Drewery.Xr make 1 265ca045714SBryan Dreweryfor the build can be controlled via the 266ca045714SBryan Drewery.Va SRC_ENV_CONF 267ca045714SBryan Dreweryvariable, which defaults to 268ca045714SBryan Drewery.Pa /etc/src-env.conf . 269ca045714SBryan DrewerySome examples that may only be set in this file are 27032b5dc9aSSimon J. Gerraty.Va WITH_DIRDEPS_BUILD , 271ca045714SBryan Dreweryand 272dfa09989SBryan Drewery.Va WITH_META_MODE , 273dfa09989SBryan Dreweryand 2745d111a97SBryan Drewery.Va MAKEOBJDIRPREFIX 275dfa09989SBryan Dreweryas they are environment-only variables. 276ca045714SBryan Drewery.Pp 27789aed883SBrooks DavisThe values of 27889aed883SBrooks Davis.Va WITH_ 27989aed883SBrooks Davisand 28089aed883SBrooks Davis.Va WITHOUT_ 28189aed883SBrooks Davisvariables are ignored regardless of their setting; 28257caf3d6STom Rhodeseven if they would be set to 283c5922fbfSRuslan Ermilov.Dq Li FALSE 284c5922fbfSRuslan Ermilovor 28557caf3d6STom Rhodes.Dq Li NO . 2867a206c31SWarren BlockThe presence of an option causes 2877a206c31SWarren Blockit to be honored by 28857caf3d6STom Rhodes.Xr make 1 . 289c5922fbfSRuslan Ermilov.Pp 2907a206c31SWarren BlockThis list provides a name and short description for variables 291c5922fbfSRuslan Ermilovthat can be used for source builds. 292c5922fbfSRuslan Ermilov.Bl -tag -width indent 293c5922fbfSRuslan ErmilovEOF 294317c99b7SBryan Drewery show settings SRC_ENV_CONF=/dev/null | sort > $t/config_default 295f506e293SEd Maste # Work around WITH_LDNS_UTILS forcing BIND_UTILS off by parsing the 296f506e293SEd Maste # actual config that results from enabling every WITH_ option. This 297f506e293SEd Maste # can be reverted if/when we no longer have options that disable 298f506e293SEd Maste # others. 299317c99b7SBryan Drewery show with SRC_ENV_CONF=/dev/null | sort | sed 's/$/=/' > $t/src.conf 300317c99b7SBryan Drewery show settings SRC_ENV_CONF=$t/src.conf | sort > $t/config_WITH_ALL 301317c99b7SBryan Drewery show without SRC_ENV_CONF=/dev/null | sort > $t/config_WITHOUT_ALL 302177d707cSBryan Drewery env_only_options="$(${make} MK_AUTO_OBJ=no -V __ENV_ONLY_OPTIONS)" 3032701a1b7SRuslan Ermilov 3042701a1b7SRuslan Ermilov show_options | 3052701a1b7SRuslan Ermilov while read opt targets ; do 3062701a1b7SRuslan Ermilov if [ ! -f ${opt} ] ; then 3072701a1b7SRuslan Ermilov echo "no description found for ${opt}, skipping" >&2 308c3b08cc6SYaroslav Tykhiy continue 309cae68befSRuslan Ermilov fi 310cae68befSRuslan Ermilov 3112701a1b7SRuslan Ermilov echo ".It Va ${opt}" 312983e4096SEd Maste sed -e'/\$FreeBSD.*\$/d' ${opt} 3132701a1b7SRuslan Ermilov if [ -n "${targets}" ] ; then 3142701a1b7SRuslan Ermilov echo '.Pp' 3157a206c31SWarren Block echo 'This is a default setting on' 3162701a1b7SRuslan Ermilov echo $(echo ${targets} | sed -e's/ /, /g' -e's/\(.*\), /\1 and /'). 317c5922fbfSRuslan Ermilov fi 3182701a1b7SRuslan Ermilov 319cae68befSRuslan Ermilov if [ "${opt%%_*}" = 'WITHOUT' ] ; then 3202701a1b7SRuslan Ermilov sed -n "/^WITH_${opt#WITHOUT_}$/!s/$/=/p" $t/config_WITH_ALL > $t/src.conf 321317c99b7SBryan Drewery show settings SRC_ENV_CONF=$t/src.conf -D${opt} | sort > $t/config_WITH_ALL_${opt} 3222701a1b7SRuslan Ermilov comm -13 $t/config_WITH_ALL $t/config_WITH_ALL_${opt} | sed -n "/^${opt}$/!p" > $t/deps 323cae68befSRuslan Ermilov elif [ "${opt%%_*}" = 'WITH' ] ; then 3242701a1b7SRuslan Ermilov sed -n "/^WITHOUT${opt#WITH}$/!s/$/=/p" $t/config_WITHOUT_ALL > $t/src.conf 325317c99b7SBryan Drewery show settings SRC_ENV_CONF=$t/src.conf -D${opt} | sort > $t/config_WITHOUT_ALL_${opt} 3262701a1b7SRuslan Ermilov comm -13 $t/config_WITHOUT_ALL $t/config_WITHOUT_ALL_${opt} | sed -n "/^${opt}$/!p" > $t/deps 3272701a1b7SRuslan Ermilov else 3282701a1b7SRuslan Ermilov echo 'internal error' >&2 3292701a1b7SRuslan Ermilov exit 1 3302701a1b7SRuslan Ermilov fi 3312701a1b7SRuslan Ermilov 332317c99b7SBryan Drewery show settings SRC_ENV_CONF=/dev/null -D${opt} | sort > $t/config_${opt} 333f506e293SEd Maste comm -13 $t/config_default $t/config_${opt} | sed -n "/^${opt}$/!p" | 334f506e293SEd Maste comm -13 $t/deps - > $t/deps2 335f506e293SEd Maste 3364078537cSBryan Drewery havedeps=0 3372701a1b7SRuslan Ermilov if [ -s $t/deps ] ; then 3384078537cSBryan Drewery havedeps=1 3397a206c31SWarren Block echo 'When set, it enforces these options:' 3402701a1b7SRuslan Ermilov echo '.Pp' 3412701a1b7SRuslan Ermilov echo '.Bl -item -compact' 3424078537cSBryan Drewery while read opt2 ; do 3432701a1b7SRuslan Ermilov echo '.It' 3442701a1b7SRuslan Ermilov echo ".Va ${opt2}" 3454078537cSBryan Drewery done < $t/deps 3462701a1b7SRuslan Ermilov echo '.El' 3472701a1b7SRuslan Ermilov fi 3482701a1b7SRuslan Ermilov 3492701a1b7SRuslan Ermilov if [ -s $t/deps2 ] ; then 3504078537cSBryan Drewery if [ ${havedeps} -eq 1 ] ; then 3512701a1b7SRuslan Ermilov echo '.Pp' 3522701a1b7SRuslan Ermilov fi 3537a206c31SWarren Block echo 'When set, these options are also in effect:' 3542701a1b7SRuslan Ermilov echo '.Pp' 3552701a1b7SRuslan Ermilov echo '.Bl -inset -compact' 3564078537cSBryan Drewery while read opt2 ; do 3572701a1b7SRuslan Ermilov echo ".It Va ${opt2}" 3582701a1b7SRuslan Ermilov noopt=$(echo ${opt2} | sed -e's/WITH_/WITHOUT_/;t' -e's/WITHOUT_/WITH_/') 3592701a1b7SRuslan Ermilov echo '(unless' 3602701a1b7SRuslan Ermilov echo ".Va ${noopt}" 3612701a1b7SRuslan Ermilov echo 'is set explicitly)' 3624078537cSBryan Drewery done < $t/deps2 3632701a1b7SRuslan Ermilov echo '.El' 364c5922fbfSRuslan Ermilov fi 365da6e996dSBryan Drewery 366da6e996dSBryan Drewery case " ${env_only_options} " in 367da6e996dSBryan Drewery *\ ${opt#*_}\ *) 368da6e996dSBryan Drewery echo ".Pp" 369317c99b7SBryan Drewery echo "This must be set in the environment, make command line, or" 370da6e996dSBryan Drewery echo ".Pa /etc/src-env.conf ," 371da6e996dSBryan Drewery echo "not" 372da6e996dSBryan Drewery echo ".Pa /etc/src.conf ." 373da6e996dSBryan Drewery ;; 374da6e996dSBryan Drewery esac 375da6e996dSBryan Drewery 376cc36164aSBrooks Davis printf "." >&2 377c5922fbfSRuslan Ermilov done 378cc36164aSBrooks Davis printf "\n" >&2 379c5922fbfSRuslan Ermilov cat <<EOF 380c5922fbfSRuslan Ermilov.El 381897ae85fSBrooks Davis.Pp 382897ae85fSBrooks DavisThe following options accept a single value from a list of valid values. 383897ae85fSBrooks Davis.Bl -tag -width indent 384897ae85fSBrooks DavisEOF 38565fd76b5SEd Maste prev_opt= 386897ae85fSBrooks Davis show_group_options | 387897ae85fSBrooks Davis while read opt ; do 388897ae85fSBrooks Davis if [ ! -f ${opt} ] ; then 389897ae85fSBrooks Davis echo "no description found for ${opt}, skipping" >&2 390897ae85fSBrooks Davis continue 391897ae85fSBrooks Davis fi 39265fd76b5SEd Maste if [ $opt = "$prev_opt" ]; then 39365fd76b5SEd Maste echo "ignoring duplicate option $opt" >&2 39465fd76b5SEd Maste continue 39565fd76b5SEd Maste fi 39665fd76b5SEd Maste prev_opt=$opt 397897ae85fSBrooks Davis 398897ae85fSBrooks Davis echo ".It Va ${opt}" 399897ae85fSBrooks Davis cat ${opt} 400897ae85fSBrooks Davis done 401897ae85fSBrooks Davis cat <<EOF 402897ae85fSBrooks Davis.El 403c5922fbfSRuslan Ermilov.Sh FILES 404691b39b5SGlen Barber.Bl -tag -compact -width Pa 405c5922fbfSRuslan Ermilov.It Pa /etc/src.conf 406ca045714SBryan Drewery.It Pa /etc/src-env.conf 407c5922fbfSRuslan Ermilov.It Pa /usr/share/mk/bsd.own.mk 408c5922fbfSRuslan Ermilov.El 409c5922fbfSRuslan Ermilov.Sh SEE ALSO 410c5922fbfSRuslan Ermilov.Xr make 1 , 411c5922fbfSRuslan Ermilov.Xr make.conf 5 , 412c5922fbfSRuslan Ermilov.Xr build 7 , 413c5922fbfSRuslan Ermilov.Xr ports 7 414c5922fbfSRuslan Ermilov.Sh HISTORY 415c5922fbfSRuslan ErmilovThe 416c5922fbfSRuslan Ermilov.Nm 417c5922fbfSRuslan Ermilovfile appeared in 418c5922fbfSRuslan Ermilov.Fx 7.0 . 419c5922fbfSRuslan Ermilov.Sh AUTHORS 420fd4f2cd5SEnji CooperThis manual page was autogenerated by 421cbc5a508SEnji Cooper.An tools/build/options/makeman . 422c5922fbfSRuslan ErmilovEOF 423c5922fbfSRuslan Ermilov} 424c5922fbfSRuslan Ermilov 425c5922fbfSRuslan Ermilovmain 426