Make rule that announces and makes static libc archive can generate
command line that is too long when a full path O= option is used. That
breaks the build with the following message:
make: /bin/sh: Argument list too long
Use make $(file) construct to generate file list file and use that file
as $(AR) argument instead.
Signed-off-by: Max Filippov <jcmvbkbc(a)gmail.com>
---
Makerules | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makerules b/Makerules
index fe8a7916e657..96f2a71ec49a 100644
--- a/Makerules
+++ b/Makerules
@@ -276,7 +276,7 @@ cmd_compile.mi= $(cmd_compile.m:-c=-E -dD) $(UCLIBC_EXTRA_CPPFLAGS)
cmd_compile-m = $(CC) $^ -c -o $@ $(CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir
$(@D))) $(CFLAGS-$(notdir $@)) $(sort $(foreach
d,$(^:$(top_srcdir)=),$(collect_multi_flags)))
cmd_strip = $(STRIPTOOL) $(STRIP_FLAGS) $^
cmd_t_strip = $(STRIPTOOL) $(STRIP_FLAGS) $@
-cmd_ar = $(AR) $(ARFLAGS) $@ $(call objects_with_syms,,$^)
+cmd_ar = $(AR) $(ARFLAGS) $@ @$@.list
define do_ln
@$(disp_ln)
@@ -317,6 +317,7 @@ hcompile.u= @$(disp_hcompile.u); $(cmd_hcompile.u)
hcompile.o= @$(disp_hcompile.o); $(cmd_hcompile.o)
define do_ar
+ @$(file >$@.list,$(call objects_with_syms,,$^))
@$(disp_ar) ; $(cmd_ar)
@$(do_t_strip)
endef
--
2.39.2