On 2025-03-13 06:32 pm, Gyan Doshi wrote:
The linker command can exceed the maximum argument limit on MinGW,
especially for libavcodec.

The objects list is now stored in a file and passed to the linker.
---
v3:
   for reasons unknown to me, static linking doesn't appear to
   work on linux with escaped variables, so removed those.
   Someone please test on linux both static and shared builds.

Both static and shared build tested on Ubuntu (WSL).
Plan to push tomorrow.

Regards,
Gyan



  .gitignore          | 1 +
  ffbuild/common.mak  | 2 +-
  ffbuild/library.mak | 8 ++++++--
  3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/.gitignore b/.gitignore
index 9cfc78b414..430abaf91b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
  *.a
  *.o
+*.objs
  *.o.*
  *.d
  *.def
diff --git a/ffbuild/common.mak b/ffbuild/common.mak
index 023adb8567..ca45a0f368 100644
--- a/ffbuild/common.mak
+++ b/ffbuild/common.mak
@@ -214,7 +214,7 @@ $(TOOLOBJS): | tools
OUTDIRS := $(OUTDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(SLIBOBJS) $(SHLIBOBJS) $(STLIBOBJS) $(TESTOBJS)) -CLEANSUFFIXES = *.d *.gcda *.gcno *.h.c *.ho *.map *.o *.pc *.ptx *.ptx.gz *.ptx.c *.ver *.version *$(DEFAULT_X86ASMD).asm *~ *.ilk *.pdb
+CLEANSUFFIXES     = *.d *.gcda *.gcno *.h.c *.ho *.map *.o *.objs *.pc *.ptx 
*.ptx.gz *.ptx.c *.ver *.version *$(DEFAULT_X86ASMD).asm *~ *.ilk *.pdb
  LIBSUFFIXES       = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a
define RULES
diff --git a/ffbuild/library.mak b/ffbuild/library.mak
index 793e9d41fa..72e3872157 100644
--- a/ffbuild/library.mak
+++ b/ffbuild/library.mak
@@ -35,8 +35,10 @@ OBJS += $(SHLIBOBJS)
  endif
  $(SUBDIR)$(LIBNAME): $(OBJS) $(STLIBOBJS)
        $(RM) $@
-       $(AR) $(ARFLAGS) $(AR_O) $^
+       $(Q)echo $^ > $@.objs
+       $(AR) $(ARFLAGS) $(AR_O) @$@.objs
        $(RANLIB) $@
+       -$(RM) $@.objs
install-headers: install-lib$(NAME)-headers install-lib$(NAME)-pkgconfig @@ -66,8 +68,10 @@ $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR) $(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SHLIBOBJS) $(SLIBOBJS) $(SUBDIR)lib$(NAME).ver
        $(SLIB_CREATE_DEF_CMD)
-       $$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) $$(filter %.o,$$^) 
$(FFEXTRALIBS)
+       $(Q)echo $$(filter %.o,$$^) > $$@.objs
+       $$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) @$$@.objs 
$(FFEXTRALIBS)
        $(SLIB_EXTRA_CMD)
+       -$(RM) $$@.objs
ifdef SUBDIR
  $(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(DEP_LIBS)

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to