From: Zhao Zhili via ffmpeg-devel <ffmpeg-devel@ffmpeg.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: "Kacper Michajłow" <code@ffmpeg.org>,
"Zhao Zhili" <quinkblack@foxmail.com>
Subject: [FFmpeg-devel] Re: [PATCH] configure: add -static suffix to internal static libs for test programs (PR #20837)
Date: Wed, 5 Nov 2025 10:58:39 +0800
Message-ID: <tencent_3F4D13E0736675DEC907EEB8E54EF319E805@qq.com> (raw)
In-Reply-To: <176228012852.25.17272127814845956550@2cb04c0e5124>
> On Nov 5, 2025, at 02:15, Kacper Michajłow via ffmpeg-devel <ffmpeg-devel@ffmpeg.org> wrote:
>
> 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.
Any reference? I don’t understand how does link static libraries work
when object files not compatible. Is it related to av_export_avutil?
> 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?= <kasper93@gmail.com>
> 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 <kasper93@gmail.com>
> ---
> 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 -- ffmpeg-devel@ffmpeg.org
> To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
prev parent reply other threads:[~2025-11-05 2:59 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-04 18:15 [FFmpeg-devel] " Kacper Michajłow via ffmpeg-devel
2025-11-05 2:58 ` Zhao Zhili via ffmpeg-devel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tencent_3F4D13E0736675DEC907EEB8E54EF319E805@qq.com \
--to=ffmpeg-devel@ffmpeg.org \
--cc=code@ffmpeg.org \
--cc=quinkblack@foxmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git