[FFmpeg-devel] [PATCH] configure: call flatten_extralibs in a subshell

James Almer jamrial at gmail.com
Tue Nov 14 21:09:28 EET 2017


On 11/14/2017 11:35 AM, Timo Rothenpieler wrote:
> Am 14.11.2017 um 14:50 schrieb Timo Rothenpieler:
>> 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 | 15 +++++++++++----
>>   1 file changed, 11 insertions(+), 4 deletions(-)
>>
>> diff --git a/configure b/configure
>> index 3788f26956..1fc6821fe7 100755
>> --- a/configure
>> +++ b/configure
>> @@ -6501,6 +6501,16 @@ flatten_extralibs(){
>>       fi
>>   }
>>   +flatten_extralibs_wrapper(){
>> +    list_name=$1
>> +    flatten_extralibs $list_name
>> +    unique $list_name
>> +    resolve $list_name
>> +    unique $list_name
> 
> Scratch that second unique.
> While it does get rid of a bunch of duplicates like double -lX11 or
> -lvpx, it breaks MacOS builds, due to it getting rid of all but one
> -framework invocations.

Seems to work after removing the second unique. Thanks a lot!

> 
>> +    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
>> @@ -6513,10 +6523,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
>>
> 
> 
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 



More information about the ffmpeg-devel mailing list