aboutsummaryrefslogtreecommitdiffstats
path: root/compat/windows
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2017-08-24 23:05:21 +0300
committerMartin Storsjö <martin@martin.st>2017-08-31 14:22:18 +0300
commit1a7bf48eed806beea7e835b31b06aa6bc94da5da (patch)
tree3aaebce7cffa9204312263b2d95583735d255fc8 /compat/windows
parent44aa9105c535471ca9e23796d7ca29b341f47636 (diff)
downloadffmpeg-1a7bf48eed806beea7e835b31b06aa6bc94da5da.tar.gz
makedef: Extend the script for use with mingw tools as well
This is invoked by setting the NM and AR variables to the names of those specific tools. The ARCH variable also needs to be provided, to choose the symbol prefix (nm doesn't provide any option that dumps the architecture easily). Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'compat/windows')
-rwxr-xr-xcompat/windows/makedef55
1 files changed, 39 insertions, 16 deletions
diff --git a/compat/windows/makedef b/compat/windows/makedef
index b3de99255c..fd7959a745 100755
--- a/compat/windows/makedef
+++ b/compat/windows/makedef
@@ -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}