#!/bin/bash # This script reads filenames from STDIN and outputs any relevant provides # information that needs to be included in the package. if [ "$1" ] then package_name="$1" fi [ -z "$OBJDUMP" ] && OBJDUMP=x86_64-w64-mingw32-objdump # Get the list of files. filelist=`sed "s/['\"]/\\\&/g"` libs_to_exclude=" advapi32 cfgmgr32 comctl32 comdlg32 crypt32 ddraw dnsapi dsound gdi32 gdiplus glu32 glut32 imm32 iphlpapi kernel32 mscms mscoree msimg32 msvcr71 msvcr80 msvcr90 msvcrt mswsock odbc32 ole32 oleaut32 opengl32 psapi rpcrt4 secur32 setupapi shell32 shlwapi user32 usp10 version wininet winmm wldap32 ws2_32 wsock32 " exclude_pattern="" for i in $libs_to_exclude; do if test "$exclude_pattern" == ""; then exclude_pattern=$i; else exclude_pattern=$exclude_pattern"|"$i; fi done dlls=$(echo $filelist | tr [:blank:] '\n' | grep -Ei '\.(dll|exe)$') pcs=$(echo $filelist | tr [:blank:] '\n' | grep '\.pc$') configs=$(echo $filelist | tr [:blank:] '\n' | grep 'config$') for f in $dlls; do $OBJDUMP -p $f | grep 'DLL Name' | tr [:upper:] [:lower:] | grep -Eo '[-._\+[:alnum:]]+\.dll' | grep -Ev "$exclude_pattern" | sed 's/\(.*\)/mingw64(\1)/' done | sort -u ( for g in $pcs; do dirname=`dirname $g` PKG_CONFIG_PATH=$dirname x86_64-w64-mingw32-pkg-config --print-errors --print-requires $g | awk '{ print "mingw64(pkg:"$1")", $2, $3 }' PKG_CONFIG_PATH=$dirname x86_64-w64-mingw32-pkg-config --print-errors --print-requires-private $g | grep -Ev "$exclude_pattern" | awk '{ print "mingw64(pkg:"$1")", $2, $3 }' for h in `PKG_CONFIG_PATH=$dirname x86_64-w64-mingw32-pkg-config --libs-only-l $g | sed 's#\-l##g'`; do echo "mingw64(lib:$h)" done done for k in $configs; do for j in `PKG_CONFIG=x86_64-w64-mingw32-pkg-config $k --libs`; do case $j in -l*) echo $j | sed 's#\-l##g' | grep -Ev "$exclude_pattern" | awk '{ print "mingw64(lib:"$1")" }' ;; *) ;; esac done done ) | sort -u