From 50c1de7092fa75c6c5317ac5338d685191a443c0 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Fri, 23 Sep 2016 21:51:28 +0100 Subject: [PATCH] Fix makefile not rebuilding rbversion.h in some cases For example when running make VERSION="bla" Change-Id: I8f8833f0fb200828346ed0a6842a9340e3653932 --- firmware/firmware.make | 7 +++++-- tools/genversion.sh | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/firmware/firmware.make b/firmware/firmware.make index 8f8014d82c..3d79837871 100644 --- a/firmware/firmware.make +++ b/firmware/firmware.make @@ -46,7 +46,10 @@ $(BUILDDIR)/sysfont.o: $(SYSFONT) $(BUILDDIR)/sysfont.h $(call PRINTS,CONVBDF $(subst $(ROOTDIR)/,,$<))$(TOOLSDIR)/convbdf -l $(MAXCHAR) -c -o $(BUILDDIR)/sysfont.c $< $(call PRINTS,CC $(subst $(ROOTDIR)/,,$(BUILDDIR)/sysfont.c))$(CC) $(CFLAGS) -c $(BUILDDIR)/sysfont.c -o $@ -SVNVERSION:=$(shell $(TOOLSDIR)/version.sh $(ROOTDIR)) +# GNU make (at least) has a bug/feature that exported variable are not available +# in the shell function (but are in recipe). Thus we need to explicitely pass +# the VERSION environement variable +SVNVERSION:=$(shell VERSION='$(VERSION)' $(TOOLSDIR)/version.sh $(ROOTDIR)) OLDSVNVERSION:=$(shell grep 'RBVERSION' $(BUILDDIR)/rbversion.h 2>/dev/null|cut -d '"' -f 2 || echo "NOREVISION") ifneq ($(SVNVERSION),$(OLDSVNVERSION)) @@ -54,4 +57,4 @@ ifneq ($(SVNVERSION),$(OLDSVNVERSION)) endif $(BUILDDIR)/rbversion.h: - $(call PRINTS,GEN $(@F))$(TOOLSDIR)/genversion.sh $(BUILDDIR) $(TOOLSDIR)/version.sh $(ROOTDIR) + $(call PRINTS,GEN $(@F))$(TOOLSDIR)/genversion.sh $(BUILDDIR) $(SVNVERSION) diff --git a/tools/genversion.sh b/tools/genversion.sh index bd80ceb597..c385c36924 100755 --- a/tools/genversion.sh +++ b/tools/genversion.sh @@ -6,19 +6,20 @@ # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # \/ \/ \/ \/ \/ -# Usage: genversion.sh destination-dir path-to-version.sh [source-root] +# Usage: genversion.sh destination-dir version # Generate rbversion.h file # XXX DO NOT TWEAK VERSION HERE, EDIT version.sh INSTEAD -VERSION=`$2 $3` +VERSION="$2" cat > "$1/_rbversion.h" << EOF /* Generated by genversion.sh */ #define RBVERSION "$VERSION" EOF +# Don't touch rbversion.h if it hasn't change, to avoid rebuilding stuff if [ -f "$1/rbversion.h" ] then if diff "$1/_rbversion.h" "$1/rbversion.h" > /dev/null then rm -f "$1/_rbversion.h"