[sr-dev] git:master: makefile: auto-generate autover.h based on the git sha

Andrei Pelinescu-Onciul andrei at iptel.org
Wed Jun 24 23:50:15 CEST 2009


Module: sip-router
Branch: master
Commit: 51690b9e45be569ca87e6d0af9e288a3656249f3
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=51690b9e45be569ca87e6d0af9e288a3656249f3

Author: Andrei Pelinescu-Onciul <andrei at iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei at iptel.org>
Date:   Wed Jun 24 21:11:24 2009 +0200

makefile: auto-generate autover.h based on the git sha

Automatically re-generate autover.h each time some change in the
repository happens. The file will contain a macro (REPO_VER) set
to the first 6 letters of the git sha. This allows unique
identification for the git branch and commits from which the code
was generated.
If the code is not compiled from a git repository, use "unknown"
for the REPO_VER.

---

 Makefile         |   25 ++++++++++++++++++++++++-
 Makefile.targets |    2 +-
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 2dc955b..68eff8c 100644
--- a/Makefile
+++ b/Makefile
@@ -77,7 +77,7 @@ endif
 
 
 auto_gen=lex.yy.c cfg.tab.c #lexx, yacc etc
-auto_gen_others=cfg.tab.h  # auto generated, non-c
+auto_gen_others=cfg.tab.h autover.h  # auto generated, non-c
 
 COREPATH=.
 #include  source related defs
@@ -394,8 +394,13 @@ modules_search_path=$(subst $(space),:,$(strip\
 						$(foreach m,$(modules_dirs),$($(m)_target))))
 		#				$(addprefix $(modules_target),$(modules_dirs))))
 
+# special depends for main.o
+main.o: autover.h
 main.o: DEFS+=-DMODS_DIR='"$(modules_search_path)"'
 
+#special depends for core_cmd.o
+core_cmd.o: autover.h
+
 include Makefile.shared
 
 ifeq ($(config_mak),1)
@@ -445,6 +450,24 @@ modules-cfg modules-list modules-lst:
 	rm -f modules.lst
 	$(MAKE) modules.lst
 
+ifneq ($(wildcard .git),)
+# if .git/ exists
+repo_ver=$(shell git rev-parse --short=6 HEAD 2>/dev/null || echo "unknown" )
+autover_h_dep=.git
+else
+# else if .git/ does not exist
+repo_ver="unknown"
+autover_h_dep=
+endif
+
+autover.h: $(autover_h_dep)
+	@echo  "generating autover.h ($(autover_h_dep)) ..."
+	@echo "/* this file is autogenerated by make autover.h" >$@
+	@echo " * DO NOT EDIT IT" >>$@
+	@echo " */" >>$@
+	@echo "" >>$@
+	@echo "#define REPO_VER \"$(repo_ver)\"" >>$@
+
 .PHONY: all
 all: $(NAME) every-module
 
diff --git a/Makefile.targets b/Makefile.targets
index 0416b80..9ba0ef8 100644
--- a/Makefile.targets
+++ b/Makefile.targets
@@ -35,7 +35,7 @@ doc_targets:=	README man install-doc install-man install-ser-man \
 # auxiliary: maintance, debugging, etc. (don't affect code/objects)
 aux_targets:=	TAGS tar dist cfg-defs cfg config config.mak print-modules \
 		dbg dbinstall librpath.lst makecfg.lst modules.lst modules-cfg \
-		modules-list modules-lst mk-install_dirs
+		modules-list modules-lst mk-install_dirs autover.h
 # other targets that don't produce code in the current directory ("external")
 ext_targets:=	every-module $(modules_dirs) libs utils \
 		install-cfg install-utils  install-modules-all install-every-module\




More information about the sr-dev mailing list