configure: call flatten_extralibs in a subshell

By putting the call in a subshell, the problem of it spilling
cleanup-decision from a previous library to other libraries is avoided.

For example, it could have already cleaned up cuda_extralibs in a
previous library that depended on cuda. Then when it gets to avutil, it
will never pick up the dependency of avutil to cuda, which depends on
libdl, which in turn results in a missing -ldl extralib, resulting in
link failures in certain configurations.
pull/272/head
Timo Rothenpieler 7 years ago
parent edef07569c
commit 4fb20d4e3a
  1. 14
      configure

14
configure vendored

@ -6495,6 +6495,15 @@ flatten_extralibs(){
fi fi
} }
flatten_extralibs_wrapper(){
list_name=$1
flatten_extralibs $list_name
unique $list_name
resolve $list_name
eval $list_name=\$\(\$ldflags_filter \$$list_name\)
eval printf \''%s'\' \""\$$list_name"\"
}
for linkunit in $LIBRARY_LIST; do for linkunit in $LIBRARY_LIST; do
unset current_extralibs unset current_extralibs
eval components=\$$(toupper ${linkunit})_COMPONENTS_LIST eval components=\$$(toupper ${linkunit})_COMPONENTS_LIST
@ -6507,10 +6516,7 @@ for linkunit in $LIBRARY_LIST; do
done done
for linkunit in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do for linkunit in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
flatten_extralibs ${linkunit}_extralibs eval ${linkunit}_extralibs=\$\(flatten_extralibs_wrapper ${linkunit}_extralibs\)
unique ${linkunit}_extralibs
resolve ${linkunit}_extralibs
eval ${linkunit}_extralibs=\$\(\$ldflags_filter \$${linkunit}_extralibs\)
done done
map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST

Loading…
Cancel
Save