diff --git a/configure b/configure index 4d290512b7..8343c2af70 100755 --- a/configure +++ b/configure @@ -581,8 +581,15 @@ enable(){ set_all yes $* } +check_requested() { + for var; do + eval test "x\$${var#!}_requested" = "xyes" && die "${var#*_} ${var/_*} cannot be enabled" + done +} + disable(){ set_all no $* + check_requested $* } enable_weak(){ @@ -608,7 +615,7 @@ disable_safe(){ do_enable_deep(){ for var; do enabled $var && continue - eval sel="\$${var}_select" + eval sel="\$${var}_select\ \$${var}_select_any" eval sgs="\$${var}_suggest" pushvar var sgs enable_deep $sel @@ -633,6 +640,13 @@ enable_deep_weak(){ done } +request(){ + for var; do + enable ${var}_requested + done + enable_deep $* +} + enabled(){ test "${1#!}" = "$1" && op='=' || op=!= eval test "x\$${1#!}" $op "xyes" @@ -692,7 +706,7 @@ do_check_deps(){ append allopts $cfg eval dep_all="\$${cfg}_deps" - eval dep_any="\$${cfg}_deps_any" + eval dep_any="\$${cfg}_deps_any\ \$${cfg}_select_any" eval dep_sel="\$${cfg}_select" eval dep_sgs="\$${cfg}_suggest" eval dep_ifa="\$${cfg}_if" @@ -2832,7 +2846,7 @@ tls_schannel_protocol_deps="schannel" tls_schannel_protocol_select="tcp_protocol" tls_securetransport_protocol_deps="securetransport" tls_securetransport_protocol_select="tcp_protocol" -tls_protocol_deps_any="tls_schannel_protocol tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol" +tls_protocol_select_any="tls_schannel_protocol tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol" udp_protocol_select="network" udplite_protocol_select="network" unix_protocol_deps="sys_un_h" @@ -3142,12 +3156,6 @@ ALL_COMPONENTS=" $PROTOCOL_LIST " -for n in $COMPONENT_LIST; do - v=$(toupper ${n%s})_LIST - eval enable \$$v - eval ${n}_if_any="\$$v" -done - enable $ARCH_EXT_LIST die_unknown(){ @@ -3214,10 +3222,10 @@ for opt do disable $PROGRAM_LIST ;; --disable-everything) - map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST + map 'eval disable \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST ;; --disable-all) - map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST + map 'eval disable \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST disable $LIBRARY_LIST $PROGRAM_LIST doc enable avutil ;; @@ -3234,6 +3242,7 @@ for opt do is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" eval list=\$$(toupper $thing)_LIST name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} + test $action = enable && action="request" list=$(filter "$name" $list) [ "$list" = "" ] && warn "Option $opt did not match anything" $action $list @@ -3241,7 +3250,6 @@ for opt do --enable-?*|--disable-?*) eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') if is_in $option $COMPONENT_LIST; then - test $action = disable && action=unset eval $action \$$(toupper ${option%s})_LIST elif is_in $option $CMDLINE_SELECT; then $action $option @@ -3284,7 +3292,7 @@ disabled logging && logfile=/dev/null # is disabled, see AVCODEC_LIST and following _LIST variables. disable_components(){ - disabled ${1} && disable $( + disabled ${1} && disable_weak $( eval components="\$$(toupper ${1})_COMPONENTS" map 'eval echo \${$(toupper ${v%s})_LIST}' $components ) @@ -3292,6 +3300,25 @@ disable_components(){ map 'disable_components $v' $LIBRARY_LIST +echo "# $0 $FFMPEG_CONFIGURATION" > $logfile + +# Mark components that had not been enabled/disabled explicitly +# as enabled + +for n in $COMPONENT_LIST; do + v=$(toupper ${n%s})_LIST + eval enable_weak \$$v + eval ${n}_if_any="\$$v" +done + +# Make so that disabled libraries are enabled if a component +# of them is requested + +for n in $LIBRARY_LIST; do + v=$(toupper ${n})_COMPONENTS + eval ${n}_if_any="\$$v" +done + echo "# $0 $FFMPEG_CONFIGURATION" > $logfile set >> $logfile