[PATCH v2 2/6] Makefile: Run the subdirectory recursion in parallel

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Fri Jul 3 15:26:48 GMT 2026



On 03/07/26 07:57, Sam James wrote:
> Adhemerval Zanella <adhemerval.zanella@linaro.org> writes:
> 
>>  
>>  .PHONY: $(+subdir_targets) $(all-subdirs-targets)
>> +
>> +# Encode the topological ordering computed by scripts/gen-sorted.awk as
>> +# explicit dependencies between the per-subdirectory targets, so that
>> +# independent subdirectories build concurrently:
> 
> I suggest: ". In summary:"
> 
> It makes clear that there's independent comments below about the same thing.

Ack.

>> +# Building and running a subdirectory's tests are fused in its sub-make,
>> +# and run-built-tests is fixed for a make instance, so the only way to
>> +# build every test program with the recursion fully parallel while the
>> +# run still honors the per-subdirectory .NOTPARALLEL (nptl/htl/rt) and the
>> +# run-time ordering is to use two passes.  At the top level, 'make check'
>> +# therefore builds the test programs (run-built-tests=no, recursion fully
>> +# parallel) and then runs them (run-built-tests=yes).  'make tests' and a
>> +# subdirectory's own 'check' stay single pass.
> 
> Nit: single-pass.

Ack.

>> index 5bad0333a5a..0e5a8b8f689 100644
>> --- a/htl/Makefile
>> +++ b/htl/Makefile
>> @@ -257,3 +257,10 @@ $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(srcdir)/libpthread_sy
>>  else
>>  $(addprefix $(objpfx),$(tests) $(test-srcs)): $(srcdir)/libpthread_syms.a $(objpfx)libpthread.a
>>  endif
>> +
>> +# The tests here better do not run in parallel.
> 
> Say something like: "Like rt, these tests prefer to be run serially."

Ack.

> 
>> +ifeq ($(run-built-tests),yes)
>> +ifneq ($(filter %tests,$(MAKECMDGOALS)),)
>> +.NOTPARALLEL:
>> +endif
>> +endif
>> diff --git a/rt/Makefile b/rt/Makefile
>> index 39a3e5620b3..24e43a87599 100644
>> --- a/rt/Makefile
>> +++ b/rt/Makefile
>> @@ -109,3 +109,11 @@ LDFLAGS-rt.so = -Wl,--enable-new-dtags,-z,nodelete
>>  $(objpfx)librt.so: $(shared-thread-library)
>>  
>>  tst-mqueue7-ARGS = -- $(host-test-program-cmd)
>> +
>> +# The timer and message-queue tests here are timing-sensitive and better
>> +# do not run in parallel.
>> +ifeq ($(run-built-tests),yes)
>> +ifneq ($(filter %tests,$(MAKECMDGOALS)),)
>> +.NOTPARALLEL:
>> +endif
>> +endif
> 
> Reviewed-by: Sam James <sam@gentoo.org>
> 
> The changes look good. Also, when testing, thus far I only had one small
> issue:
> https://inbox.sourceware.org/libc-alpha/822344f7cd03b8f199d0e612868221d13d14300d.1783035357.git.sam@gentoo.org/
Thanks for the review, I was about to check on this but I noticed Collin
already reviewed it.


More information about the Libc-alpha mailing list