Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file
@ 2025-03-13 13:02 Gyan Doshi
  2025-03-15  7:56 ` Gyan Doshi
  2025-03-17 11:32 ` Zhao Zhili
  0 siblings, 2 replies; 8+ messages in thread
From: Gyan Doshi @ 2025-03-13 13:02 UTC (permalink / raw)
  To: ffmpeg-devel

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.

 .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)
-- 
2.46.1

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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file
  2025-03-13 13:02 [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file Gyan Doshi
@ 2025-03-15  7:56 ` Gyan Doshi
  2025-03-17 10:17   ` Gyan Doshi
  2025-03-17 11:32 ` Zhao Zhili
  1 sibling, 1 reply; 8+ messages in thread
From: Gyan Doshi @ 2025-03-15  7:56 UTC (permalink / raw)
  To: ffmpeg-devel



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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file
  2025-03-15  7:56 ` Gyan Doshi
@ 2025-03-17 10:17   ` Gyan Doshi
  0 siblings, 0 replies; 8+ messages in thread
From: Gyan Doshi @ 2025-03-17 10:17 UTC (permalink / raw)
  To: ffmpeg-devel



On 2025-03-15 01:26 pm, Gyan Doshi wrote:
>
>
> 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.

Pushed as 9e857e1f8aeeb655adb9d09bf53add26a27092e2

Regards,
Gyan*
*
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file
  2025-03-13 13:02 [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file Gyan Doshi
  2025-03-15  7:56 ` Gyan Doshi
@ 2025-03-17 11:32 ` Zhao Zhili
  2025-03-17 11:45   ` Gyan Doshi
  1 sibling, 1 reply; 8+ messages in thread
From: Zhao Zhili @ 2025-03-17 11:32 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



> On Mar 13, 2025, at 21:02, Gyan Doshi <ffmpeg@gyani.pro> 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.
> 
> .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

@file doesn’t supported by ar on macOS or BSD.

> 	$(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)
> -- 
> 2.46.1
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file
  2025-03-17 11:32 ` Zhao Zhili
@ 2025-03-17 11:45   ` Gyan Doshi
  2025-03-17 11:59     ` Zhao Zhili
  0 siblings, 1 reply; 8+ messages in thread
From: Gyan Doshi @ 2025-03-17 11:45 UTC (permalink / raw)
  To: ffmpeg-devel



On 2025-03-17 05:02 pm, Zhao Zhili wrote:
>
>> On Mar 13, 2025, at 21:02, Gyan Doshi <ffmpeg@gyani.pro> 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.
>>
>> .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
> @file doesn’t supported by ar on macOS or BSD.

Do we have any FATE clients on these platforms?

I guess we can use  some guard (which?) to define an alternate recipe.

Regards,
Gyan


>
>> 	$(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)
>> -- 
>> 2.46.1
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file
  2025-03-17 11:45   ` Gyan Doshi
@ 2025-03-17 11:59     ` Zhao Zhili
  2025-03-17 13:11       ` Gyan Doshi
  0 siblings, 1 reply; 8+ messages in thread
From: Zhao Zhili @ 2025-03-17 11:59 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



> On Mar 17, 2025, at 19:45, Gyan Doshi <ffmpeg@gyani.pro> wrote:
> 
> 
> 
> On 2025-03-17 05:02 pm, Zhao Zhili wrote:
>> 
>>> On Mar 13, 2025, at 21:02, Gyan Doshi <ffmpeg@gyani.pro> 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.
>>> 
>>> .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
>> @file doesn’t supported by ar on macOS or BSD.
> 
> Do we have any FATE clients on these platforms?

I remember there were apple machines, but they are not there now.

https://fate.ffmpeg.org/

Can we add CI machine and workflow to code.ffmpeg.org <http://code.ffmpeg.org/> now?

> 
> I guess we can use  some guard (which?) to define an alternate recipe.
> 
> Regards,
> Gyan
> 
> 
>> 
>>> 	$(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)
>>> -- 
>>> 2.46.1
>>> 
>>> _______________________________________________
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel@ffmpeg.org
>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>> 
>>> To unsubscribe, visit link above, or email
>>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> 
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file
  2025-03-17 11:59     ` Zhao Zhili
@ 2025-03-17 13:11       ` Gyan Doshi
  2025-03-17 13:21         ` Martin Storsjö
  0 siblings, 1 reply; 8+ messages in thread
From: Gyan Doshi @ 2025-03-17 13:11 UTC (permalink / raw)
  To: ffmpeg-devel



On 2025-03-17 05:29 pm, Zhao Zhili wrote:
>
>> On Mar 17, 2025, at 19:45, Gyan Doshi <ffmpeg@gyani.pro> wrote:
>>
>>
>>
>> On 2025-03-17 05:02 pm, Zhao Zhili wrote:
>>>> On Mar 13, 2025, at 21:02, Gyan Doshi <ffmpeg@gyani.pro> 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.
>>>>
>>>> .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
>>> @file doesn’t supported by ar on macOS or BSD.
>> Do we have any FATE clients on these platforms?
> I remember there were apple machines, but they are not there now.
>
> https://fate.ffmpeg.org/

Can we get a definite list of archiver/linkers which we support that 
don't support response files?

Regards,
Gyan


>
> Can we add CI machine and workflow to code.ffmpeg.org <http://code.ffmpeg.org/> now?
>
>> I guess we can use  some guard (which?) to define an alternate recipe.
>>
>> Regards,
>> Gyan
>>
>>
>>>> 	$(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)
>>>> -- 
>>>> 2.46.1
>>>>
>>>> _______________________________________________
>>>> ffmpeg-devel mailing list
>>>> ffmpeg-devel@ffmpeg.org
>>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>
>>>> To unsubscribe, visit link above, or email
>>>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>>> _______________________________________________
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel@ffmpeg.org
>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>
>>> To unsubscribe, visit link above, or email
>>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file
  2025-03-17 13:11       ` Gyan Doshi
@ 2025-03-17 13:21         ` Martin Storsjö
  0 siblings, 0 replies; 8+ messages in thread
From: Martin Storsjö @ 2025-03-17 13:21 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

On Mon, 17 Mar 2025, Gyan Doshi wrote:

> On 2025-03-17 05:29 pm, Zhao Zhili wrote:
>>
>>>> @file doesn’t supported by ar on macOS or BSD.
>>> Do we have any FATE clients on these platforms?
>> I remember there were apple machines, but they are not there now.
>>
>> https://fate.ffmpeg.org/
>
> Can we get a definite list of archiver/linkers which we support that 
> don't support response files?

Wouldn't it be easier to just test within configure whether $AR supports 
response files like this? And then emit a flag to config.mak which allows 
picking which codepath to take here.

Alternatively we could look for specifically targeting the fix to Windows 
- however, it's not enough to look for the target OS - it needs to look at 
the host OS. Crosscompiling for Windows on unix won't need it, and the 
converse, crosscompiling on Windows targeting Linux would also need the 
same fix.

So just checking whether the feature is supported by $AR might be the 
simplest.

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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2025-03-17 13:21 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-13 13:02 [FFmpeg-devel] [PATCH v3] ffbuild: read library linker objects from a file Gyan Doshi
2025-03-15  7:56 ` Gyan Doshi
2025-03-17 10:17   ` Gyan Doshi
2025-03-17 11:32 ` Zhao Zhili
2025-03-17 11:45   ` Gyan Doshi
2025-03-17 11:59     ` Zhao Zhili
2025-03-17 13:11       ` Gyan Doshi
2025-03-17 13:21         ` Martin Storsjö

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