Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
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

      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