>From 5e86210757dde236e576d768ecb4e1bfc59b7065 Mon Sep 17 00:00:00 2001 From: Martijn Otto <[email protected]> Date: Fri, 10 Jul 2026 11:44:51 +0200 Subject: [PATCH] compat/windows/makedef: emit a LIBRARY directive when the DLL name is known
The generated .def files contain only an EXPORTS list. Tools that create import libraries from them must then infer the module name: MS lib.exe falls back to the .def file name, but llvm-lib leaves the DLL name empty, silently producing import libraries whose members reference an unnamed module, which no loader can resolve. Pass the target file name from the build rule and emit a proper LIBRARY directive, making the .def files self-contained. Without LIBNAME set the output is unchanged. Signed-off-by: Martijn Otto <[email protected]> --- compat/windows/makedef | 3 +++ configure | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/compat/windows/makedef b/compat/windows/makedef index c5755d6cca..43d2baafcd 100755 --- a/compat/windows/makedef +++ b/compat/windows/makedef @@ -145,5 +145,8 @@ for exp in ${regex}; do sed -e 's/^/ /') done +if [ -n "$LIBNAME" ]; then + echo "LIBRARY ${LIBNAME}" +fi echo "EXPORTS" echo "${list}" | sort | uniq | tail -n +2 diff --git a/configure b/configure index 80954aa826..ef3fdf42d7 100755 --- a/configure +++ b/configure @@ -6251,7 +6251,7 @@ case $target_os in SLIB_INSTALL_LINKS= SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' - SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" AR="$(AR_CMD)" NM="$(NM_CMD)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(SLIB_CREATE_DEF_INPUTS) > $$(@:$(SLIBSUF)=.def)' + SLIB_CREATE_DEF_CMD='LIBNAME="$$(@F)" EXTERN_PREFIX="$(EXTERN_PREFIX)" AR="$(AR_CMD)" NM="$(NM_CMD)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(SLIB_CREATE_DEF_INPUTS) > $$(@:$(SLIBSUF)=.def)' SHFLAGS='-shared -Wl,--out- implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--disable-auto- image-base $$(@:$(SLIBSUF)=.def)' enabled x86_64 && objformat="win64" || objformat="win32" dlltool="${cross_prefix}dlltool" @@ -6290,7 +6290,7 @@ case $target_os in SLIBSUF=".dll" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)- $(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)- $(LIBMAJOR)$(SLIBSUF)' - SLIB_CREATE_DEF_CMD='LDFLAGS="$(LDFLAGS)" EXTERN_PREFIX="$(EXTERN_PREFIX)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(SLIB_CREATE_DEF_INPUTS) > $$(@:$(SLIBSUF)=.def)' + SLIB_CREATE_DEF_CMD='LIBNAME="$$(@F)" LDFLAGS="$(LDFLAGS)" EXTERN_PREFIX="$(EXTERN_PREFIX)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(SLIB_CREATE_DEF_INPUTS) > $$(@:$(SLIBSUF)=.def)' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS= SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' -- 2.43.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
