ANDROID: kbuild: simplify cmd_mod

Modules with a large number of compilation units can exceed execv
argument list resulting in E2BIG (Argument list too long) error.

Fix this by replacing shell 'echo > file' into a more native
$(file op filename[,text]) option.

Bug: 175420575
Change-Id: I9bc495482f16f2c9b4e05a4cb5b2283ff0c0439d
Signed-off-by: Mahesh Kumar Kalikot Veetil <mkalikot@codeaurora.org>
Signed-off-by: Jeff Johnson <jjohnson@codeaurora.org>
This commit is contained in:
Mahesh Kumar Kalikot Veetil
2020-12-21 12:54:43 -08:00
committed by Todd Kjos
parent b51f784248
commit 631b20dd6c

View File

@@ -272,10 +272,11 @@ $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE
$(call if_changed_rule,cc_o_c)
$(call cmd,force_checksrc)
cmd_mod = { \
echo $(if $($*-objs)$($*-y)$($*-m), $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), $(@:.mod=.o)); \
$(undefined_syms) echo; \
} > $@
cmd_mod = $(file >$@,\
$(if $($*-objs)$($*-y)$($*-m), \
$(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), \
$(@:.mod=.o))) \
$(undefined_syms) echo >> $@
$(obj)/%.mod: $(obj)/%.o FORCE
$(call if_changed,mod)