linux-sparse.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
To: linux-sparse@vger.kernel.org
Cc: "Uwe Kleine-König" <uwe@kleine-koenig.org>,
	"Luc Van Oostenryck" <luc.vanoostenryck@gmail.com>
Subject: [PATCH 18/36] build: only generate version.h when needed
Date: Sun,  5 Nov 2017 17:25:26 +0100	[thread overview]
Message-ID: <20171105162544.72960-18-luc.vanoostenryck@gmail.com> (raw)
In-Reply-To: <20171105162448.72907-1-luc.vanoostenryck@gmail.com>

From: Uwe Kleine-König <uwe@kleine-koenig.org>

This way version.h isn't generated when running $(make clean) but only
when lib.c is about to be compiled.

This simplifies packaging for Debian because the package building programs
abort when there are additional files after $(make clean).

Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org>
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
---
 Makefile | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 460a261f1..ea3ce89a4 100644
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,5 @@
 VERSION=0.5.1
 
-# Generating file version.h if current version has changed
-SPARSE_VERSION:=$(shell git describe 2>/dev/null || echo '$(VERSION)')
-VERSION_H := $(shell cat version.h 2>/dev/null)
-ifneq ($(lastword $(VERSION_H)),"$(SPARSE_VERSION)")
-$(info $(shell echo '     GEN      'version.h))
-$(shell echo '#define SPARSE_VERSION "$(SPARSE_VERSION)"' > version.h)
-endif
-
 OS = linux
 
 
@@ -199,6 +191,18 @@ cflags   += $($(*)_CFLAGS) $(CPPFLAGS) $(CFLAGS)
 selfcheck: $(OBJS:.o=.sc)
 
 
+SPARSE_VERSION:=$(shell git describe 2>/dev/null || echo '$(VERSION)')
+lib.o: version.h
+version.h: FORCE
+	@echo '#define SPARSE_VERSION "$(SPARSE_VERSION)"' > version.h.tmp
+	@if cmp -s version.h version.h.tmp; then \
+		rm version.h.tmp; \
+	else \
+		echo    '     GEN      '$@; \
+		mv version.h.tmp version.h; \
+	fi
+
+
 clean: clean-check
 	rm -f *.[oa] .*.d *.so $(PROGRAMS) $(SLIB_FILE) pre-process.h version.h
 
@@ -220,3 +224,5 @@ clean-check:
 	                 -o -name "*.c.error.got" \
 	                 -o -name "*.c.error.diff" \
 	                 \) -exec rm {} \;
+
+.PHONY: FORCE
-- 
2.14.0


  parent reply	other threads:[~2017-11-05 16:26 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-05 16:24 [PATCH 00/36] Makefile reorganization Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 01/36] build: make PREFIX overwritable from the environment Luc Van Oostenryck
2017-11-05 17:44   ` Josh Triplett
2017-11-05 18:54     ` Uwe Kleine-König
2017-11-05 20:30       ` Josh Triplett
2017-11-05 16:25 ` [PATCH 02/36] build: put comment about local.mk to the place where it is included Luc Van Oostenryck
2017-11-05 17:44   ` Josh Triplett
2017-11-05 16:25 ` [PATCH 03/36] build: drop BASIC_CFLAGS and ALL_CFLAGS Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 04/36] build: drop -g from LDFLAGS Luc Van Oostenryck
2017-11-05 17:45   ` Josh Triplett
2017-11-05 16:25 ` [PATCH 05/36] build: pass CPPFLAGS to compiler Luc Van Oostenryck
2017-11-05 17:46   ` Josh Triplett
2017-11-05 16:25 ` [PATCH 06/36] build: fix effectiveness of generated dependencies Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 07/36] build: remove unused support for pkgconfig Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 08/36] build: use '_OBJS' instead of '_EXTRA_DEPS' Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 09/36] build: use '_LDLIBS' instead of '_EXTRA_OBJS' Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 10/36] build: allow target-specific CFLAGS, CPPFLAGS, LDFLAGS & LDLIBS Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 11/36] build: allow CFLAGS & friends from command line Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 12/36] build: avoid rule-specific CFLAGS Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 13/36] build: use $LIBS directly in the dependency list Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 14/36] build: no need to use wildcards for generated dependencies Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 15/36] build: reuse rule for ALL_OBJS Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 16/36] build: CHECKER_FLAGS=-Wno-vla for all targets Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 17/36] build: move tests near their use Luc Van Oostenryck
2017-11-05 16:25 ` Luc Van Oostenryck [this message]
2017-11-05 16:25 ` [PATCH 19/36] build: add note about overwritable vars Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 20/36] build: remove references to unexisting pre-process.h Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 21/36] build: no need to clean *.so and SLIB_FILE Luc Van Oostenryck
2017-11-05 17:48   ` Josh Triplett
2017-11-05 20:06     ` Luc Van Oostenryck
2017-11-05 20:30       ` Josh Triplett
2017-11-05 16:25 ` [PATCH 22/36] build: move clean & clean-check together Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 23/36] build: make clean targets quieter Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 24/36] build: remove rule for shared lib, it's unused Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 25/36] build: normalize rules Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 26/36] build: remove the dist rule since unused Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 27/36] build: use one line per item Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 28/36] build: use a dot file name instead of local.mk: .sparse.mk Luc Van Oostenryck
2017-11-06  8:57   ` Uwe Kleine-König
2017-11-06 15:43     ` Luc Van Oostenryck
2017-11-09 19:06       ` Uwe Kleine-König
2017-11-09 20:48         ` Luc Van Oostenryck
2017-11-09 19:29     ` Christopher Li
2017-11-05 16:25 ` [PATCH 29/36] build: use git-clean Luc Van Oostenryck
2017-11-05 17:41   ` Josh Triplett
2017-11-05 20:16     ` Luc Van Oostenryck
2017-11-05 20:38       ` Josh Triplett
2017-11-05 20:50         ` Uwe Kleine-König
2017-11-05 20:58           ` Luc Van Oostenryck
2017-11-05 20:56         ` Luc Van Oostenryck
2017-11-05 23:09     ` Christopher Li
2017-11-08 11:42   ` Jeff Layton
2017-11-08 12:01     ` Uwe Kleine-König
2017-11-08 19:55     ` Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 30/36] build: use standard rules for install Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 31/36] build: remove unused QUIET_INST_SH Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 32/36] build: let quiet commands use less indentation Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 33/36] build: simpler logic for quiet commands Luc Van Oostenryck
2017-11-06  8:15   ` Uwe Kleine-König
2017-11-06  8:28     ` Luc Van Oostenryck
2017-11-06  8:44       ` Uwe Kleine-König
2017-11-06  8:55         ` Luc Van Oostenryck
2017-11-06 19:40           ` Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 34/36] build: avoid foreach Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 35/36] build: reorg & add comment Luc Van Oostenryck
2017-11-05 16:25 ` [PATCH 36/36] build: use a single space before assignments Luc Van Oostenryck
2017-11-06  5:50 ` [PATCH 00/36] Makefile reorganization Luc Van Oostenryck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171105162544.72960-18-luc.vanoostenryck@gmail.com \
    --to=luc.vanoostenryck@gmail.com \
    --cc=linux-sparse@vger.kernel.org \
    --cc=uwe@kleine-koenig.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).