Bug#872381: dpkg-dev: optimize Makefile snippets for debian/rules (4/6)
From
Nicolas Boulenguez@1:229/2 to
All on Mon Mar 4 16:50:01 2024
[continued from previous message]
diff --git a/scripts/mk/architecture.mk b/scripts/mk/architecture.mk
index 2ffcee287..174c5b638 100644
--- a/scripts/mk/architecture.mk
+++ b/scripts/mk/architecture.mk
@@ -5,12 +5,20 @@
ifndef dpkg_architecture.mk_included
dpkg_architecture.mk_included :=
-dpkg_lazy_eval ?= $$(or $$(value DPKG_CACHE_$(1)),$$(eval DPKG_CACHE_$(1) := $$(shell $(2)))$$(value DPKG_CACHE_$(1)))
-
-dpkg_architecture_setvar = export $(1) ?= $(call dpkg_lazy_eval,$(1),dpkg-architecture -q$(1))
-
+dpkg-architecture_vars := \
$(foreach machine,BUILD HOST TARGET,\
$(foreach var,ARCH ARCH_ABI ARCH_LIBC ARCH_OS ARCH_CPU ARCH_BITS ARCH_ENDIAN GNU_CPU GNU_SYSTEM GNU_TYPE MULTIARCH,\
- $(eval $(call dpkg_architecture_setvar,DEB_$(machine)_$(var)))))
+ DEB_$(machine)_$(var)))
+
+# Spare a subprocess in the frequent case where dpkg-buildpackage
+# has already exported all variables.
+ifneq (,$(filter undefined,$(foreach v,$(dpkg-architecture_vars),$(origin $(v)))))
+
+ # ?= preserves overriddes from debian/rules or its command line.
+ $(foreach v,$(subst =,?=,$(shell dpkg-architecture)),$(eval $(v)))
+
+en