2009-04-08 13:11:27 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# This script reads filenames from STDIN and outputs any relevant provides
|
|
|
|
# information that needs to be included in the package.
|
2014-10-21 14:21:40 +00:00
|
|
|
target="mingw64"
|
|
|
|
host="x86_64-w64-mingw32"
|
2009-04-08 13:11:27 +00:00
|
|
|
|
2014-10-21 14:21:40 +00:00
|
|
|
if [ -n "$1" ]; then
|
2009-04-08 13:11:27 +00:00
|
|
|
package_name="$1"
|
|
|
|
fi
|
|
|
|
|
2014-10-21 14:21:40 +00:00
|
|
|
[ -z "$OBJDUMP" ] && OBJDUMP="$host-objdump"
|
2009-04-08 13:11:27 +00:00
|
|
|
|
|
|
|
# Get the list of files.
|
|
|
|
|
2014-10-21 14:21:40 +00:00
|
|
|
filelist="/tmp/$target-find-requires.$$"
|
|
|
|
sed "s/['\"]/\\\&/g" >"$filelist"
|
2009-04-08 13:11:27 +00:00
|
|
|
|
2011-12-20 13:35:55 +00:00
|
|
|
libs_to_exclude="
|
|
|
|
advapi32
|
|
|
|
cfgmgr32
|
|
|
|
comctl32
|
|
|
|
comdlg32
|
|
|
|
crypt32
|
|
|
|
ddraw
|
|
|
|
dnsapi
|
|
|
|
dsound
|
2014-06-04 10:51:10 +00:00
|
|
|
d3d8
|
|
|
|
d3d9
|
2011-12-20 13:35:55 +00:00
|
|
|
gdi32
|
|
|
|
gdiplus
|
|
|
|
glu32
|
|
|
|
glut32
|
|
|
|
imm32
|
|
|
|
iphlpapi
|
|
|
|
kernel32
|
2013-06-10 18:59:54 +00:00
|
|
|
ksuser
|
2011-12-20 13:35:55 +00:00
|
|
|
mscms
|
|
|
|
mscoree
|
|
|
|
msimg32
|
|
|
|
msvcr71
|
|
|
|
msvcr80
|
|
|
|
msvcr90
|
|
|
|
msvcrt
|
|
|
|
mswsock
|
2012-08-30 09:19:33 +00:00
|
|
|
netapi32
|
2012-01-28 21:02:53 +00:00
|
|
|
odbc32
|
2011-12-20 13:35:55 +00:00
|
|
|
ole32
|
|
|
|
oleaut32
|
|
|
|
opengl32
|
|
|
|
psapi
|
|
|
|
rpcrt4
|
|
|
|
secur32
|
|
|
|
setupapi
|
|
|
|
shell32
|
|
|
|
shlwapi
|
|
|
|
user32
|
|
|
|
usp10
|
|
|
|
version
|
|
|
|
wininet
|
|
|
|
winmm
|
|
|
|
wldap32
|
|
|
|
ws2_32
|
|
|
|
wsock32
|
2009-12-16 10:46:30 +00:00
|
|
|
"
|
|
|
|
|
|
|
|
exclude_pattern=""
|
2011-12-20 13:35:55 +00:00
|
|
|
for i in $libs_to_exclude; do
|
2014-10-21 14:21:40 +00:00
|
|
|
if [ -z "$exclude_pattern" ]; then
|
|
|
|
exclude_pattern="$i"
|
2009-12-16 10:46:30 +00:00
|
|
|
else
|
2014-10-21 14:21:40 +00:00
|
|
|
exclude_pattern="$exclude_pattern|$i"
|
2009-12-16 10:46:30 +00:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2009-04-08 13:11:27 +00:00
|
|
|
|
2014-10-21 14:21:40 +00:00
|
|
|
dlls=$(grep -Ei '\.(dll|exe)$' "$filelist")
|
|
|
|
pcs=$(grep '\.pc$' "$filelist")
|
|
|
|
configs=$(grep 'config$' "$filelist")
|
2009-04-08 13:11:27 +00:00
|
|
|
|
|
|
|
for f in $dlls; do
|
2014-10-21 14:21:40 +00:00
|
|
|
"$OBJDUMP" -p "$f" | grep 'DLL Name' | tr "[:upper:]" "[:lower:]" |
|
2009-11-13 20:32:09 +00:00
|
|
|
grep -Eo '[-._\+[:alnum:]]+\.dll' |
|
2009-12-16 10:46:30 +00:00
|
|
|
grep -Ev "$exclude_pattern" |
|
2014-10-21 14:21:40 +00:00
|
|
|
sed 's/\(.*\)/'"$target"'(\1)/'
|
2009-04-08 13:11:27 +00:00
|
|
|
done | sort -u
|
2011-04-13 08:48:20 +00:00
|
|
|
|
2011-04-25 14:17:14 +00:00
|
|
|
(
|
2011-04-13 08:48:20 +00:00
|
|
|
for g in $pcs; do
|
2014-10-21 14:21:40 +00:00
|
|
|
dirname="${g%/*}"
|
|
|
|
PKG_CONFIG_PATH="$dirname" "$host-pkg-config" --print-errors --print-requires $g | awk '{ print "mingw64(pkg:"$1")", $2, $3 }'
|
|
|
|
PKG_CONFIG_PATH="$dirname" "$host-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" "$host-pkg-config" --libs-only-l "$g" | sed 's#\-l##g'); do
|
|
|
|
echo "$target(lib:$h)"
|
2011-04-18 12:05:33 +00:00
|
|
|
done
|
2011-04-25 14:17:14 +00:00
|
|
|
done
|
|
|
|
for k in $configs; do
|
2014-10-21 14:21:40 +00:00
|
|
|
for j in $(PKG_CONFIG="$host-pkg-config" "$k" --libs); do
|
|
|
|
case "$j" in
|
2011-04-25 14:17:14 +00:00
|
|
|
-l*)
|
2014-10-21 14:21:40 +00:00
|
|
|
echo "$j" | sed 's#\-l##g' | grep -Ev "$exclude_pattern" | awk '{ print "'"$target"'(lib:"$1")" }'
|
2011-04-25 14:17:14 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
done
|
|
|
|
) | sort -u
|
2014-10-21 14:21:40 +00:00
|
|
|
|
|
|
|
rm "$filelist"
|