[PATCH] libtraceevent: avoid racing recursive builds of both libraries
CaoRuichuang <[email protected]> Mon, 6 Apr 2026 06:21:02 +0800
| Newsgroups | org.kernel.vger.linux-trace-devel |
|---|---|
| Message-ID | <[email protected]> |
A top-level parallel build currently starts separate recursive makes for libtraceevent.a and libtraceevent.so. Both sub-makes rebuild the same object files in the same output directory, which can corrupt the .o files and make the final link fail with file format errors. Make the default libs target descend into src/ only once and build the shared library plus static archive from the same sub-make. Keep the individual top-level library targets unchanged for direct use. This reliably fixes repeated `make -j8` and `make -j8 libs` failures in a Linux VM, where the unfixed tree reproduces the race within a few runs. Link: https://bugzilla.kernel.org/show_bug.cgi?id=217428 Signed-off-by: CaoRuichuang <[email protected]> --- Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index e1a10a0..faaeb6c 100644 --- a/Makefile +++ b/Makefile @@ -183,9 +183,9 @@ build := -f $(srctree)/build/Makefile.build dir=. obj LIB_TARGET := libtraceevent.so libtraceevent.a -CMD_TARGETS = $(LIB_TARGET) $(PKG_CONFIG_FILE) +CMD_TARGETS = libs $(PKG_CONFIG_FILE) -TARGETS = $(CMD_TARGETS) +TARGETS = $(LIB_TARGET) $(PKG_CONFIG_FILE) all: all_cmd plugins @@ -206,7 +206,8 @@ all_cmd: $(CMD_TARGETS) libtraceevent.a: $(bdir) $(LIBTRACEEVENT_STATIC) libtraceevent.so: $(bdir) $(LIBTRACEEVENT_SHARED) -libs: libtraceevent.a libtraceevent.so +libs: $(bdir) force + $(Q)$(call descend,$(src)/src,libtraceevent.so $(LIBTRACEEVENT_STATIC)) $(LIBTRACEEVENT_STATIC): force $(Q)$(call descend,$(src)/src,$@) -- 2.39.5 (Apple Git-154)