|
|
@@ -45,7 +45,11 @@ libname=$(mktemp -u "library").lib |
|
|
|
|
|
|
|
trap 'rm -f -- $libname' EXIT |
|
|
|
|
|
|
|
lib -out:${libname} $@ >/dev/null |
|
|
|
if [ -n "$AR" ]; then |
|
|
|
$AR rcs ${libname} $@ >/dev/null |
|
|
|
else |
|
|
|
lib -out:${libname} $@ >/dev/null |
|
|
|
fi |
|
|
|
if [ $? != 0 ]; then |
|
|
|
echo "Could not create temporary library." >&2 |
|
|
|
exit 1 |
|
|
@@ -57,18 +61,28 @@ IFS=' |
|
|
|
# Determine if we're building for x86 or x86_64 and |
|
|
|
# set the symbol prefix accordingly. |
|
|
|
prefix="" |
|
|
|
arch=$(dumpbin -headers ${libname} | |
|
|
|
tr '\t' ' ' | |
|
|
|
grep '^ \+.\+machine \+(.\+)' | |
|
|
|
head -1 | |
|
|
|
sed -e 's/^ \{1,\}.\{1,\} \{1,\}machine \{1,\}(\(...\)).*/\1/') |
|
|
|
|
|
|
|
if [ "${arch}" = "x86" ]; then |
|
|
|
prefix="_" |
|
|
|
if [ -n "$NM" ]; then |
|
|
|
case $ARCH in |
|
|
|
*86) |
|
|
|
prefix="_" |
|
|
|
;; |
|
|
|
*) |
|
|
|
;; |
|
|
|
esac |
|
|
|
else |
|
|
|
if [ "${arch}" != "ARM" ] && [ "${arch}" != "x64" ]; then |
|
|
|
echo "Unknown machine type." >&2 |
|
|
|
exit 1 |
|
|
|
arch=$(dumpbin -headers ${libname} | |
|
|
|
tr '\t' ' ' | |
|
|
|
grep '^ \+.\+machine \+(.\+)' | |
|
|
|
head -1 | |
|
|
|
sed -e 's/^ \{1,\}.\{1,\} \{1,\}machine \{1,\}(\(...\)).*/\1/') |
|
|
|
|
|
|
|
if [ "${arch}" = "x86" ]; then |
|
|
|
prefix="_" |
|
|
|
else |
|
|
|
if [ "${arch}" != "ARM" ] && [ "${arch}" != "x64" ]; then |
|
|
|
echo "Unknown machine type." >&2 |
|
|
|
exit 1 |
|
|
|
fi |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
@@ -112,10 +126,19 @@ for line in $(cat ${vscript} | tr '\t' ' '); do |
|
|
|
' |
|
|
|
done |
|
|
|
|
|
|
|
dump=$(dumpbin -linkermember:1 ${libname} | |
|
|
|
sed -e '/public symbols/,$!d' -e '/^ \{1,\}Summary/,$d' -e "s/ \{1,\}${prefix}/ /" -e 's/ \{1,\}/ /g' | |
|
|
|
tail -n +2 | |
|
|
|
cut -d' ' -f3) |
|
|
|
if [ -n "$NM" ]; then |
|
|
|
# Use eval, since NM="nm -g" |
|
|
|
dump=$(eval "$NM --defined-only -g ${libname}" | |
|
|
|
grep -v : | |
|
|
|
grep -v ^$ | |
|
|
|
cut -d' ' -f3 | |
|
|
|
sed -e "s/^${prefix}//") |
|
|
|
else |
|
|
|
dump=$(dumpbin -linkermember:1 ${libname} | |
|
|
|
sed -e '/public symbols/,$!d' -e '/^ \{1,\}Summary/,$d' -e "s/ \{1,\}${prefix}/ /" -e 's/ \{1,\}/ /g' | |
|
|
|
tail -n +2 | |
|
|
|
cut -d' ' -f3) |
|
|
|
fi |
|
|
|
|
|
|
|
rm ${libname} |
|
|
|
|
|
|
|