?= is a deferred assignment. Switch to an alternative form which lets us use an immediate assignment.
Before, version.sh gets run anywhere between 46 and 88 times, with 50 on a `clean`. After, 6 times, invariant of main rune, and whether it is an incremental build or not. Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com> --- CC: Juergen Gross <jgr...@suse.com> CC: Wei Liu <w...@xen.org> CC: Anthony PERARD <anthony.per...@citrix.com> The identity transform comes from the docs https://www.gnu.org/software/make/manual/make.html#Flavors (final paragraph). Something slightly weird is going on. Before this, the exact number of hits that verson.sh gets isn't stable, even when running repeat incremental builds. I suspect this means we've got a lurking parallel build issue. --- tools/libs/libs.mk | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/libs/libs.mk b/tools/libs/libs.mk index dfbbef4080f6..b21e0bf083a0 100644 --- a/tools/libs/libs.mk +++ b/tools/libs/libs.mk @@ -6,7 +6,10 @@ # MINOR: minor version of lib (0 if empty) LIBNAME := $(notdir $(CURDIR)) -MAJOR ?= $(shell $(XEN_ROOT)/version.sh $(XEN_ROOT)/xen/Makefile) + +ifeq ($(origin MAJOR), undefined) +MAJOR := $(shell $(XEN_ROOT)/version.sh $(XEN_ROOT)/xen/Makefile) +endif MINOR ?= 0 SHLIB_LDFLAGS += -Wl,--version-script=libxen$(LIBNAME).map -- 2.11.0