copydeps.sh.in
1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/bash
myDIR=$(dirname $(readlink -f $0))
# Updated by ./configure
BASEDIR=@BASEDIR@
prefix=@prefix@
# Crio diretório temporário
TEMPDIR=$(mktemp -d)
# Cleanup em caso de falha
ontrap()
{
#
# Apaga diretorio temporário caso o script seja interrompido
#
cd ${myDIR}
rm -fr ${TEMPDIR}
exit -1
}
trap ontrap INT
#
# Lista de DLLs a ignorar
#
libs_to_exclude="
advapi32
cfgmgr32
comctl32
comdlg32
crypt32
d3d8
d3d9
ddraw
dnsapi
dsound
dwmapi
gdi32
gdiplus
glu32
glut32
imm32
iphlpapi
kernel32
ksuser
mpr
mscms
mscoree
msimg32
msvcr71
msvcr80
msvcr90
msvcrt
mswsock
netapi32
odbc32
ole32
oleacc
oleaut32
opengl32
psapi
rpcrt4
secur32
setupapi
shell32
shlwapi
user32
usp10
version
wininet
winmm
wldap32
ws2_32
wsock32
winspool.drv
"
#
# Fico em loop montando dependências
#
APPLICATION_PATH=${BASEDIR}/.bin/Release
RUNTIME_PATH=${BASEDIR}/.bin/runtime
mkdir -p ${RUNTIME_PATH}
AGAIN=1
until [ $AGAIN = 0 ]; do
AGAIN=0
find ${APPLICATION_PATH} -iname *.exe > ${TEMPDIR}/binaries.txt
find ${APPLICATION_PATH} -iname *.dll >> ${TEMPDIR}/binaries.txt
find ${RUNTIME_PATH} -iname *.dll >> ${TEMPDIR}/binaries.txt
# Obtenho a lista de DLLs
rm -f ${TEMPDIR}/requires.txt
touch ${TEMPDIR}/requires.txt
while read FILENAME
do
objdump -p ${FILENAME} | grep "DLL Name:" | cut -d: -f2 | tr "[:upper:]" "[:lower:]" >> ${TEMPDIR}/requires.txt
done < ${TEMPDIR}/binaries.txt
# Excluo DLLs do sistema
for i in $libs_to_exclude; do
sed -i -e "/${i}/d" ${TEMPDIR}/requires.txt
done
while read FILENAME
do
if [ -e ${APPLICATION_PATH}/${FILENAME} ]; then
touch ${APPLICATION_PATH}/${FILENAME}
elif [ -e ${RUNTIME_PATH}/${FILENAME} ]; then
touch ${RUNTIME_PATH}/${FILENAME}
elif [ -e ${prefix}/bin/${FILENAME} ]; then
AGAIN=1
echo ${prefix}/bin/${FILENAME}
cp ${prefix}/bin/${FILENAME} ${RUNTIME_PATH}
fi
done < ${TEMPDIR}/requires.txt
rm -f ${TEMPDIR}/requires.txt
done
cd ${myDIR}
rm -fr ${TEMPDIR}