mirror of https://git.ffmpeg.org/ffmpeg.git
configure: Use dllexport/dllimport for data symbols across DLLs with mingw
This avoids having to use pseudo relocations. The version script used for exporting functions is skipped as soon as the set of object files contains symbols marked with dllexport, therefore we need to use makedef to produce the full list of symbols to be exported. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
1a7bf48eed
commit
accb06120c
|
@ -4026,6 +4026,10 @@ case $target_os in
|
||||||
if enabled x86_64; then
|
if enabled x86_64; then
|
||||||
LIBTARGET="i386:x86-64"
|
LIBTARGET="i386:x86-64"
|
||||||
fi
|
fi
|
||||||
|
if enabled shared; then
|
||||||
|
# Cannot build both shared and static libs when using dllexport.
|
||||||
|
disable static
|
||||||
|
fi
|
||||||
check_ldflags -Wl,--nxcompat
|
check_ldflags -Wl,--nxcompat
|
||||||
check_ldflags -Wl,--dynamicbase
|
check_ldflags -Wl,--dynamicbase
|
||||||
shlibdir_default="$bindir_default"
|
shlibdir_default="$bindir_default"
|
||||||
|
@ -4033,12 +4037,13 @@ case $target_os in
|
||||||
SLIBSUF=".dll"
|
SLIBSUF=".dll"
|
||||||
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
|
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
|
||||||
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
|
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
|
||||||
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_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
|
||||||
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
|
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
|
||||||
SLIB_INSTALL_LINKS=
|
SLIB_INSTALL_LINKS=
|
||||||
SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
|
SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
|
||||||
SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
|
SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
|
||||||
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'
|
SLIB_CREATE_DEF_CMD='ARCH="$(ARCH)" AR="$(AR_CMD)" NM="$(NM_CMD)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
|
||||||
|
SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-auto-image-base $$(@:$(SLIBSUF)=.def)'
|
||||||
enabled x86_64 && objformat="win64" || objformat="win32"
|
enabled x86_64 && objformat="win64" || objformat="win32"
|
||||||
dlltool="${cross_prefix}dlltool"
|
dlltool="${cross_prefix}dlltool"
|
||||||
ranlib=:
|
ranlib=:
|
||||||
|
@ -5432,6 +5437,8 @@ DEPX86ASMFLAGS=\$(X86ASMFLAGS)
|
||||||
AR=$ar
|
AR=$ar
|
||||||
ARFLAGS=$arflags
|
ARFLAGS=$arflags
|
||||||
AR_O=$ar_o
|
AR_O=$ar_o
|
||||||
|
AR_CMD=$ar
|
||||||
|
NM_CMD=$nm
|
||||||
RANLIB=$ranlib
|
RANLIB=$ranlib
|
||||||
STRIP=$strip
|
STRIP=$strip
|
||||||
LN_S=$ln_s
|
LN_S=$ln_s
|
||||||
|
|
|
@ -285,7 +285,7 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame);
|
||||||
*/
|
*/
|
||||||
AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx);
|
AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx);
|
||||||
|
|
||||||
#if defined(_MSC_VER) && CONFIG_SHARED
|
#if defined(_WIN32) && CONFIG_SHARED
|
||||||
#ifdef BUILDING_avcodec
|
#ifdef BUILDING_avcodec
|
||||||
# define av_export_avcodec __declspec(dllexport)
|
# define av_export_avcodec __declspec(dllexport)
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Reference in New Issue