[RFC][PATCH 0/1] tools/build: Let link command read option from file

From: changqing.li
Date: Tue Jul 22 2025 - 02:14:15 EST


From: Changqing Li <changqing.li@xxxxxxxxxxxxx>

Hi, Dear Maintainers

I am building perf with yocto project, and we don't want to put compile
object files to source folder, so pass O=xxx;

When we use a relatively long path like this:
O=/buildarea1/wrlinux-10.25/build/Virtualization/customized-WRLINUX1025_Nightly_Linux_systemd/250609-044304/lxbuilds/Harcuvar_platform_up/intel-x86-64-preempt-rt-glibc-std/wrlinux/build/tmp/work/intel_x86_64-wrs-linux/perf/1.0/perf-1.0

perf will compile failed with error:
| make[4]: /bin/sh: Argument list too long
| make[4]: *** [.../perf/1.0/perf-1.0/tools/build/Makefile.build:156: .../perf/1.0/perf-1.0/util/perf-in.o] Error 127

The error is from this line: "$(call if_changed,$(host)ld_multi)",
Since perf have many .o, and when above long O passed, if_changed will
evoke sh with long argument list.

So I try to fix this issue by this RFC patch. This is the first time I
touch this part, so the patch may not perfect, please help to review and
give your comments, thanks.

Changqing Li (1):
tools/build: Let link command read option from file

tools/build/Makefile.build | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

--
2.34.1