[PATCH 2/2 v2] autogenerate version.h from build system

Mike Frysinger vapier at gentoo.org
Sat Jun 25 13:20:38 EDT 2011


Signed-off-by: Mike Frysinger <vapier at gentoo.org>
---
v2
	- only add the version.h dep to *.o in the toplevel Makefile
	  so tests/ subdirs can work without it

 .gitignore       |    1 +
 Makefile         |   10 ++++++++++
 common.mk        |    2 +-
 flash_erase.c    |    1 -
 include/common.h |    1 +
 nanddump.c       |    1 -
 nandwrite.c      |    1 -
 7 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index 849265d..86aee63 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,6 +50,7 @@
 #
 # Generated include files
 #
+/include/version.h
 
 # stgit generated dirs
 patches-*
diff --git a/Makefile b/Makefile
index bd5ada3..8f871c6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,8 @@
 
 # -*- sh -*-
 
+VERSION = 1.4.5
+
 CPPFLAGS += -I./include -I./ubi-utils/include $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)
 
 ifeq ($(WITHOUT_XATTR), 1)
@@ -36,6 +38,8 @@ TARGETS = $(BINS)
 TARGETS += lib/libmtd.a
 TARGETS += ubi-utils/libubi.a
 
+OBJDEPS = $(BUILDDIR)/include/version.h
+
 include common.mk
 
 clean::
@@ -49,6 +53,7 @@ endif
 	find $(BUILDDIR)/ -xdev \
 		'(' -name '*.[ao]' -o -name '.*.c.dep' ')' \
 		-exec rm -f {} +
+	rm -f $(BUILDDIR)/include/version.h
 	$(MAKE) -C $(TESTS) clean
 
 install:: ${BINS} ${SCRIPTS}
@@ -63,6 +68,11 @@ tests::
 cscope:
 	cscope -bR
 
+$(BUILDDIR)/include/version.h: $(BUILDDIR)/include/version.h.tmp
+	$(Q)cmp -s $@ $@.tmp && rm -f $@.tmp || mv $@.tmp $@
+$(BUILDDIR)/include/version.h.tmp:
+	$(Q)echo '#define VERSION "$(VERSION)"' > $@
+
 #
 # Utils in top level
 #
diff --git a/common.mk b/common.mk
index d0e207d..ba87377 100644
--- a/common.mk
+++ b/common.mk
@@ -75,7 +75,7 @@ $(BUILDDIR)/%.a:
 	$(Q)$(AR) cr $@ $^
 	$(Q)$(RANLIB) $@
 
-$(BUILDDIR)/%.o: %.c
+$(BUILDDIR)/%.o: %.c $(OBJDEPS)
 ifneq ($(BUILDDIR),$(CURDIR))
 	$(Q)mkdir -p $(dir $@)
 endif
diff --git a/flash_erase.c b/flash_erase.c
index e0d2d4c..220f85a 100644
--- a/flash_erase.c
+++ b/flash_erase.c
@@ -19,7 +19,6 @@
  */
 
 #define PROGRAM_NAME "flash_erase"
-#define VERSION "2.1.0"
 
 #include <inttypes.h>
 #include <stdio.h>
diff --git a/include/common.h b/include/common.h
index 7ea282c..65ec086 100644
--- a/include/common.h
+++ b/include/common.h
@@ -25,6 +25,7 @@
 #include <string.h>
 #include <fcntl.h>
 #include <errno.h>
+#include "version.h"
 
 #ifndef PROGRAM_NAME
 # error "You must define PROGRAM_NAME before including this header"
diff --git a/nanddump.c b/nanddump.c
index 54198ae..27b0f7a 100644
--- a/nanddump.c
+++ b/nanddump.c
@@ -14,7 +14,6 @@
  */
 
 #define PROGRAM_NAME "nanddump"
-#define VERSION "1.31"
 
 #define _GNU_SOURCE
 #include <ctype.h>
diff --git a/nandwrite.c b/nandwrite.c
index 6e986c5..1700d61 100644
--- a/nandwrite.c
+++ b/nandwrite.c
@@ -20,7 +20,6 @@
  */
 
 #define PROGRAM_NAME "nandwrite"
-#define VERSION "$Revision: 1.32 $"
 
 #define _GNU_SOURCE
 #include <ctype.h>
-- 
1.7.5.3




More information about the linux-mtd mailing list