[FFmpeg-devel] [PATCH] configure: make configure 2.3% faster by optimizing the dep solver

Michael Niedermayer michaelni at gmx.at
Sat Oct 5 14:30:18 CEST 2013


This is only lightly tested, more testing welcome

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
---
 configure |   25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/configure b/configure
index 7b8cc81..09a63c7 100755
--- a/configure
+++ b/configure
@@ -612,24 +612,33 @@ is_in(){
 do_check_deps(){
     for cfg; do
         cfg="${cfg#!}"
-        enabled ${cfg}_checking && die "Circular dependency for $cfg."
         disabled ${cfg}_checking && continue
+        enabled ${cfg}_checking && die "Circular dependency for $cfg."
         enable ${cfg}_checking
         append allopts $cfg
 
+        if ! enabled $cfg ; then
+            eval dep_ifa="\$${cfg}_if"
+            eval dep_ifn="\$${cfg}_if_any"
+
+            if [ -n "$dep_ifa" ] || [ -n "$dep_ifn" ] ; then
+                pushvar cfg dep_ifa dep_ifn
+                do_check_deps $dep_ifa $dep_ifn
+                popvar cfg dep_ifa dep_ifn
+                [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
+                [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
+            fi
+        fi
+
         eval dep_all="\$${cfg}_deps"
         eval dep_any="\$${cfg}_deps_any"
         eval dep_sel="\$${cfg}_select"
         eval dep_sgs="\$${cfg}_suggest"
-        eval dep_ifa="\$${cfg}_if"
-        eval dep_ifn="\$${cfg}_if_any"
 
-        pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
-        do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
-        popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
+        pushvar cfg dep_all dep_any dep_sel dep_sgs
+        do_check_deps $dep_all $dep_any $dep_sel $dep_sgs
+        popvar cfg dep_all dep_any dep_sel dep_sgs
 
-        [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
-        [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
         enabled_all  $dep_all || disable $cfg
         enabled_any  $dep_any || disable $cfg
         disabled_any $dep_sel && disable $cfg
-- 
1.7.9.5



More information about the ffmpeg-devel mailing list