From 8e7bea6dc6ac5b21484774a026847bec0771ab62 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Sun, 17 Jan 2016 07:58:53 +0100 Subject: configure: Improve requesting specific features Before this patch trying to enable only https by issuing --disable-protocols --enable-protocol=https --enable-gnutls does not enable https, and --disable-all --enable-protocols does not enable libavformat and the protocols component. Now the default-enabled options are set after the explicitly disabled/enabled options are evaluated. If an explicitly enabled option cannot be enabled configure will fail printing an error message. --- configure | 51 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 13 deletions(-) (limited to 'configure') diff --git a/configure b/configure index 2f0d6772e1..96ef9a4e11 100755 --- a/configure +++ b/configure @@ -487,8 +487,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(){ @@ -514,7 +521,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 @@ -539,6 +546,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" @@ -598,7 +612,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" @@ -2328,7 +2342,7 @@ tls_gnutls_protocol_deps="gnutls" tls_gnutls_protocol_select="tcp_protocol" tls_openssl_protocol_deps="openssl !tls_gnutls_protocol" tls_openssl_protocol_select="tcp_protocol" -tls_protocol_deps_any="tls_gnutls_protocol tls_openssl_protocol" +tls_protocol_select_any="tls_gnutls_protocol tls_openssl_protocol" udp_protocol_select="network" unix_protocol_deps="sys_un_h" unix_protocol_select="network" @@ -2529,12 +2543,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(){ @@ -2597,10 +2605,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-random|--disable-random) @@ -2616,6 +2624,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" $action $(filter "$name" $list) ;; --enable-avserver|--disable-avserver*) @@ -2625,7 +2634,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 @@ -2666,7 +2674,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 ) @@ -2674,6 +2682,23 @@ disable_components(){ map 'disable_components $v' $LIBRARY_LIST +# 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 $LIBAV_CONFIGURATION" > $logfile set >> $logfile -- cgit v1.2.3