aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2012-11-17 16:34:54 +0200
committerMartin Storsjö <martin@martin.st>2012-12-03 13:39:47 +0200
commiteb7018d2fcd4a665a8c2b65e1c73c3fe9f7ca356 (patch)
tree8d41d263c54984d4fd15a4111d4b74177bdbc84a
parent66371c2851348cfbf0940370b7f6772aa304d8e6 (diff)
downloadffmpeg-eb7018d2fcd4a665a8c2b65e1c73c3fe9f7ca356.tar.gz
configure: Strip ordinals from mingw generated def files
The def files are used for generating import libraries for other toolchains (in particular, for generating import libraries for MSVC for DLLs built with mingw). The def files produced by mingw/gcc contains ordinals for each exported function. When MSVC tools generate import libraries from such a def file, MSVC links to the DLL by the ordinals instead of linking by name. Since the def files aren't maintained by hand, the ordinal numbers are assigned (more or less) randomly and any caller linking to the libs by ordinals will break as soon as the libraries export more/fewer functions. Therefore, strip out the ordinals from the generated def files, to make users link to the libraries by name. Callers linking to the DLLs using the gcc provided import library link by name as they should. Signed-off-by: Martin Storsjö <martin@martin.st>
-rwxr-xr-xconfigure4
1 files changed, 2 insertions, 2 deletions
diff --git a/configure b/configure
index fd94bc0dfc..8161eac1fe 100755
--- a/configure
+++ b/configure
@@ -2826,12 +2826,12 @@ case $target_os in
SLIBSUF=".dll"
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
- SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
+ SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); $(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS=
SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
- SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
+ SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
objformat="win32"
dlltool="${cross_prefix}dlltool"
ranlib=: