]> git.sesse.net Git - ffmpeg/commitdiff
configure: call flatten_extralibs in a subshell
authorTimo Rothenpieler <timo@rothenpieler.org>
Mon, 13 Nov 2017 22:43:51 +0000 (23:43 +0100)
committerTimo Rothenpieler <timo@rothenpieler.org>
Thu, 16 Nov 2017 16:39:39 +0000 (17:39 +0100)
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.

configure

index 84f0a04925f34d213458e744d6735e9ef5462c7e..c8e2e351922226512cc2077569594a4dac6e069c 100755 (executable)
--- a/configure
+++ b/configure
@@ -6495,6 +6495,15 @@ flatten_extralibs(){
     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
     unset current_extralibs
     eval components=\$$(toupper ${linkunit})_COMPONENTS_LIST
@@ -6507,10 +6516,7 @@ for linkunit in $LIBRARY_LIST; do
 done
 
 for linkunit in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
-    flatten_extralibs ${linkunit}_extralibs
-    unique  ${linkunit}_extralibs
-    resolve ${linkunit}_extralibs
-    eval ${linkunit}_extralibs=\$\(\$ldflags_filter \$${linkunit}_extralibs\)
+    eval ${linkunit}_extralibs=\$\(flatten_extralibs_wrapper ${linkunit}_extralibs\)
 done
 
 map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST