From 8eb2ec9eada57c94628f47f66e6716cc9f1ebd26 Mon Sep 17 00:00:00 2001 From: "Darryl L. Miles" Date: Thu, 24 Jul 2025 14:50:17 +0100 Subject: [PATCH] Makefile: allow 'modules' and 'libs' to build in parallel Removes the shell serialisation `for .. in ..` expression This provides another significant speed up, after */Depend was made parallel. x3+ speedup over -j1. --- Makefile | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 19709acf..21ec0c14 100644 --- a/Makefile +++ b/Makefile @@ -47,15 +47,21 @@ database/database.h: ${MAGICDIR}/database/database.h.in @echo --- making header file database/database.h ${SCRIPTS}/makedbh ${MAGICDIR}/database/database.h.in database/database.h -modules: database/database.h depend - @echo --- making modules - for dir in ${MODULES} ${PROGRAMS}; do \ - (cd $$dir && ${MAKE} module) || exit 1; done +# tiles xyz => tiles/libtiles.o xyz/libxyz.o +MODULES_SUBDIR := $(shell for i in ${MODULES}; do echo "$${i}/lib$${i}.o"; done) +# tiles xyz => tiles/libtiles.a xyz/libxyz.a +LIBS_SUBDIR := $(shell for i in ${MODULES}; do echo "$${i}/lib$${i}.a"; done) -libs: database/database.h depend - @echo --- making libraries - for dir in ${LIBRARIES}; do \ - (cd $$dir && ${MAKE} lib) || exit 1; done +.PHONY: FORCE +${MODULES_SUBDIR}: FORCE + @${MAKE} -C $(dir $@) module + +modules: database/database.h depend ${MODULES_SUBDIR} + +${LIBS_SUBDIR}: FORCE + @${MAKE} -C $(dir $@) lib + +libs: database/database.h depend ${LIBS_SUBDIR} # # extcheck - utility tool