PR #20837 opened by Kacper Michajłow (kasper93) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20837 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20837.patch
In MSVC builds, object files built for shared or static libraries are technically not compatible with each other. That's why building both shared and static libraries simultaneously is not allowed in configure. However, for test programs, we still build internal static libraries that allow the test programs to access internal symbols. In commit 8eca3fa619a7fb2190a3d4203e01a0d2661e7f91, I assumed that when CONFIG_STATIC=0, we would never build a static library. We actually do build one for internal purposes, ensuring that the objects are "compatible", mostly by avoiding dllimport/dllexport attributes. Such libraries are never installed and are used only for test programs. This change adds a -static suffix to these internal libraries to avoid name conflicts. In the MSVC world, static libraries and import libraries are generally the same thing and share the same naming conventions. Fixes: 8eca3fa619a7fb2190a3d4203e01a0d2661e7f91 From cd4a87fa07e22cdd1e7ea55743e9e4921c542d10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <[email protected]> Date: Tue, 4 Nov 2025 19:06:06 +0100 Subject: [PATCH] configure: add -static suffix to internal static libs for test programs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In MSVC builds, object files built for shared or static libraries are technically not compatible with each other. That's why building both shared and static libraries simultaneously is not allowed in configure. However, for test programs, we still build internal static libraries that allow the test programs to access internal symbols. In commit 8eca3fa619a7fb2190a3d4203e01a0d2661e7f91, I assumed that when CONFIG_STATIC=0, we would never build a static library. We actually do build one for internal purposes, ensuring that the objects are "compatible", mostly by avoiding dllimport/dllexport attributes. Such libraries are never installed and are used only for test programs. This change adds a -static suffix to these internal libraries to avoid name conflicts. In the MSVC world, static libraries and import libraries are generally the same thing and share the same naming conventions. Fixes: 8eca3fa619a7fb2190a3d4203e01a0d2661e7f91 Signed-off-by: Kacper Michajłow <[email protected]> --- configure | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 3b132d07c9..9c197a241c 100755 --- a/configure +++ b/configure @@ -6066,16 +6066,17 @@ case $target_os in ;; win32|win64) disable symver + LIBSUF=".lib" if enabled shared; then # Cannot build both shared and static libs with MSVC or icl. disable static + LIBSUF="-static.lib" fi ! enabled small && test_cmd $windres --version && enable gnu_windres enabled x86_32 && check_ldflags -LARGEADDRESSAWARE add_cppflags -DWIN32_LEAN_AND_MEAN shlibdir_default="$bindir_default" LIBPREF="" - LIBSUF=".lib" SLIBPREF="" SLIBSUF=".dll" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
