Commit 799c9e9b authored by Måns Rullgård's avatar Måns Rullgård

recursive feature dependency checking

Originally committed as revision 7930 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent fa859b4d
...@@ -216,6 +216,25 @@ set_all(){ ...@@ -216,6 +216,25 @@ set_all(){
done done
} }
pushvar(){
for var in $*; do
eval level=\${${var}_level:=0}
eval ${var}_${level}="\$$var"
eval ${var}_level=$(($level+1))
done
}
popvar(){
for var in $*; do
eval level=\${${var}_level:-0}
test $level = 0 && continue
eval level=$(($level-1))
eval $var="\${${var}_${level}}"
eval ${var}_level=$level
eval unset ${var}_${level}
done
}
enable(){ enable(){
set_all yes $* set_all yes $*
} }
...@@ -258,10 +277,21 @@ disabled_any(){ ...@@ -258,10 +277,21 @@ disabled_any(){
check_deps(){ check_deps(){
for cfg; do for cfg; do
enabled ${cfg}_checking && die "Circular dependency for $cfg."
disabled ${cfg}_checking && continue
enable ${cfg}_checking
eval dep_all="\$${cfg}_deps" eval dep_all="\$${cfg}_deps"
eval dep_any="\$${cfg}_deps_any" eval dep_any="\$${cfg}_deps_any"
pushvar cfg dep_all dep_any
check_deps $dep_all $dep_any
popvar cfg dep_all dep_any
enabled_all $dep_all || disable $cfg enabled_all $dep_all || disable $cfg
enabled_any $dep_any || disable $cfg enabled_any $dep_any || disable $cfg
disable ${cfg}_checking
done done
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment