diff options
author | James Almer <jamrial@gmail.com> | 2017-11-11 11:31:22 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2017-11-11 11:31:22 -0300 |
commit | c14f8125a8930ed6b2d4fc138273ee9dc17c05f6 (patch) | |
tree | a607cf0c8d7806114f8261eb526233e752941b3c /compat/windows | |
parent | 24f1685f6eb2af6326acec9a06678e7127b9f9dc (diff) | |
parent | 1a7bf48eed806beea7e835b31b06aa6bc94da5da (diff) | |
download | ffmpeg-c14f8125a8930ed6b2d4fc138273ee9dc17c05f6.tar.gz |
Merge commit '1a7bf48eed806beea7e835b31b06aa6bc94da5da'
* commit '1a7bf48eed806beea7e835b31b06aa6bc94da5da':
makedef: Extend the script for use with mingw tools as well
Merged-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'compat/windows')
-rwxr-xr-x | compat/windows/makedef | 55 |
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} |