configure: add --enable/disable-random option

This allows creating random configurations which is useful for
testing purposes.

Signed-off-by: Mans Rullgard <mans@mansr.com>

Conflicts:

	configure

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Mans Rullgard 2012-05-09 04:29:53 +01:00 committed by Michael Niedermayer
parent d0f34c96b1
commit a128b310ef
1 changed files with 40 additions and 0 deletions

40
configure vendored
View File

@ -287,6 +287,14 @@ Developer options (useful when working on FFmpeg itself):
\$FATE_SAMPLES at make invocation time. \$FATE_SAMPLES at make invocation time.
--enable-xmm-clobber-test check XMM registers for clobbering (Win64-only; --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
should be used only for debugging purposes) should be used only for debugging purposes)
--enable-random randomly enable/disable components
--disable-random
--enable-random=LIST randomly enable/disable specific components or
--disable-random=LIST component groups. LIST is a comma-separated list
of NAME[:PROB] entries where NAME is a component
(group) and PROB the probability associated with
NAME (default 0.5).
--random-seed=VALUE seed value for --enable/disable-random
NOTE: Object files are built at the place where configure is launched. NOTE: Object files are built at the place where configure is launched.
EOF EOF
@ -1332,6 +1340,7 @@ CMDLINE_SET="
pkg_config pkg_config
postproc_version postproc_version
progs_suffix progs_suffix
random_seed
samples samples
strip strip
sysinclude sysinclude
@ -1959,6 +1968,27 @@ show_list() {
exit 0 exit 0
} }
rand_list(){
IFS=', '
set -- $*
unset IFS
for thing; do
comp=${thing%:*}
prob=${thing#$comp}
prob=${prob#:}
is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
echo "prob ${prob:-0.5}"
printf '%s\n' $comp
done
}
do_random(){
action=$1
shift
random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
$action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
}
for opt do for opt do
optval="${opt#*=}" optval="${opt#*=}"
case "$opt" in case "$opt" in
@ -1973,6 +2003,14 @@ for opt do
--disable-everything) --disable-everything)
map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
;; ;;
--enable-random|--disable-random)
action=${opt%%-random}
do_random ${action#--} $COMPONENT_LIST
;;
--enable-random=*|--disable-random=*)
action=${opt%%-random=*}
do_random ${action#--} $optval
;;
--enable-*=*|--disable-*=*) --enable-*=*|--disable-*=*)
eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
@ -3558,6 +3596,8 @@ echo "openal enabled ${openal-no}"
echo "openssl enabled ${openssl-no}" echo "openssl enabled ${openssl-no}"
echo "zlib enabled ${zlib-no}" echo "zlib enabled ${zlib-no}"
echo "bzlib enabled ${bzlib-no}" echo "bzlib enabled ${bzlib-no}"
test -n "$random_seed" &&
echo "random seed ${random_seed}"
echo echo
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do