From 3de19697fdd5baee3df9c67fdec48fe48e673894 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Thu, 20 Jun 2024 00:23:39 -0400 Subject: [PATCH] build: add support for PKG_SUBDIRS variable Add support for overriding the SUBDIRS variable while invoking Make by defining it after Make in the command line. This is useful for builds that have previously patched out the building of certain subdirectories in projects that use recursive and independent Makefiles, for example, to block the building of docs or test suites. The wildcard function is used in the case of there being subdirectories within any of the subdirectories, for example, in the building of gengetopt, in order to avoid the problem where Make will attempt to execute a Makefile in a subdirectory that does not exist within the subdirectory it is currently running from because it really exists at the top-level, or one that exists within one of the subdirectories when ran from top-level. There are also cases where the Makefiles in the subdirectories have the recursive building rules even though there are no more subdirectories beyond that point, for example, with gnulib. Signed-off-by: Michael Pratt Link: https://github.com/openwrt/openwrt/pull/15853 Signed-off-by: Robert Marko --- include/host-build.mk | 4 ++-- include/package-defaults.mk | 1 + include/package.mk | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/host-build.mk b/include/host-build.mk index 246f248e26..7e64fc16fe 100644 --- a/include/host-build.mk +++ b/include/host-build.mk @@ -110,11 +110,11 @@ define Host/Compile/Default endef define Host/Compile - $(call Host/Compile/Default) + $(call Host/Compile/Default,$(if $(PKG_SUBDIRS),SUBDIRS='$$$$(wildcard $(PKG_SUBDIRS))')) endef define Host/Install/Default - $(call Host/Compile/Default,install) + $(call Host/Compile/Default,$(if $(PKG_SUBDIRS),SUBDIRS='$$$$(wildcard $(PKG_SUBDIRS))') install) endef define Host/Install diff --git a/include/package-defaults.mk b/include/package-defaults.mk index 37de9f0ccb..6a401dde2c 100644 --- a/include/package-defaults.mk +++ b/include/package-defaults.mk @@ -151,6 +151,7 @@ define Build/Install/Default $(MAKE_VARS) \ $(MAKE) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \ $(MAKE_INSTALL_FLAGS) \ + $(if $(PKG_SUBDIRS),SUBDIRS='$$$$(wildcard $(PKG_SUBDIRS))') \ $(if $(1), $(1), install); endef diff --git a/include/package.mk b/include/package.mk index 8ee78415df..7fbecf98dc 100644 --- a/include/package.mk +++ b/include/package.mk @@ -343,7 +343,7 @@ endef Build/Prepare=$(call Build/Prepare/Default,) Build/Configure=$(call Build/Configure/Default,) -Build/Compile=$(call Build/Compile/Default,) +Build/Compile=$(call Build/Compile/Default,$(if $(PKG_SUBDIRS),SUBDIRS='$$$$(wildcard $(PKG_SUBDIRS))')) Build/Install=$(if $(PKG_INSTALL),$(call Build/Install/Default,)) Build/Dist=$(call Build/Dist/Default,) Build/DistCheck=$(call Build/DistCheck/Default,)