RN rnmake  3.0.0
version_h.mk
Go to the documentation of this file.
1 ################################################################################
2 #
3 # version_h.mk
4 #
5 ifdef RNMAKE_DOXY
6 /*!
7 \file
8 
9 \brief Auto-generate the version.h include file for the package.
10 
11 \par Usage:
12 make RNMAKE_PKG_ROOT=<dir> version_h=<file> pkg_mk=<file> autogen
13 
14 \pkgsynopsis
15 RN Make System
16 
17 \pkgfile{version_h.mk}
18 
19 \pkgauthor{Robin Knight,robin.knight@roadnarrows.com}
20 
21 \pkgcopyright{2005-2018,RoadNarrows LLC,http://www.roadnarrows.com}
22 
23 \license{MIT}
24 
25 \EulaBegin
26 \EulaEnd
27 
28 \cond RNMAKE_DOXY
29  */
30 endif
31 #
32 ################################################################################
33 
34 _VERSION_H_MK = 1
35 
36 include $(pkg_mk)
37 
38 timestamp := $(shell date "+%Y.%m.%d %T")
39 
40 # $(call genDefine,brief,macro,value)
41 # Generatate define.
42 define genDefine =
43 @echo '/*! $(1) */'"\n"'#define $(2) $(3)'"\n" >> $(version_h)
44 endef
45 
46 .PHONY: autogen
47 autogen: echo-autogen \
48  gen-top-comment \
49  gen-doxy-comment \
50  gen-begin-ifndef \
51  gen-includes \
52  gen-defines \
53  gen-pkginfo \
54  gen-end-ifndef \
55 
56 .PHONY: echo-autogen
57 echo-autogen:
58  @echo 'Auto-generating $(version_h)'
59 
60 .PHONY: gen-top-comment
61 gen-top-comment:
62  @echo "\
63 //\n\
64 // File: $(notdir $(version_h))\n\
65 //" > $(version_h)
66 
67 .PHONY: gen-doxy-comment
68 gen-doxy-comment:
69  @echo "\
70 /*!\n\
71  * \\\\file\n\
72  *\n\
73  * \\\\brief Package version information.\n\
74  *\n\
75  * \\\\warning Auto-generated by Rules.mk on $(timestamp)\n\
76  *\n\
77  * \\\\par Copyright:\n\
78  * All Rights Reserved\n\
79  */\n" >> $(version_h)
80 
81 .PHONY: gen-begin-ifndef
82 gen-begin-ifndef:
83  @echo "\
84 #ifndef _VERSION_H\n\
85 #define _VERSION_H\n" >> $(version_h)
86 
87 .PHONY: gen-includes
88 gen-includes:
89  @echo "#include \"rnr/pkg.h\"\n" >> $(version_h)
90 
91 .PHONY: gen-defines
92 gen-defines:
93  $(call genDefine,package name,PKG_NAME,"$(RNMAKE_PKG)")
94  $(call genDefine,package dotted version,PKG_VERSION,"$(RNMAKE_PKG_VERSION_DOTTED)")
95  $(call genDefine,package build date,PKG_TIMESTAMP,"$(timestamp)")
96  $(call genDefine,package extended creation date,PKG_DATE,"$(RNMAKE_PKG_VERSION_DATE)")
97  $(call genDefine,package full name,PKG_FULL_NAME,"$(RNMAKE_PKG_FULL_NAME)")
98  $(call genDefine,package author(s),PKG_AUTHORS,$(RNMAKE_PKG_AUTHORS))
99  $(call genDefine,package owner(s),PKG_OWNERS,$(RNMAKE_PKG_OWNERS))
100  $(call genDefine,package legal disclaimer,PKG_DISCLAIMER,$(RNMAKE_PKG_DISCLAIMER))
101 
102 .PHONY: gen-pkginfo
103 gen-pkginfo:
104  @echo "\
105 /*! The package */\n\
106 static const PkgInfo_T PkgInfo =\n\
107 {\n\
108  PKG_NAME,\n\
109  PKG_VERSION,\n\
110  PKG_TIMESTAMP,\n\
111  PKG_DATE,\n\
112  PKG_FULL_NAME,\n\
113  PKG_AUTHORS,\n\
114  PKG_OWNERS,\n\
115  PKG_DISCLAIMER\n\
116 };\n" >> $(version_h)
117 
118 .PHONY: gen-end-ifndef
119 gen-end-ifndef:
120  @echo "#endif // _VERSION_H\n" >> $(version_h)
121 
122 
123 ifdef RDK_ABC
124  $(info rdk: here)
125  @echo '//' > $@
126  @echo '// File: $(notdir $@)' >> $@
127  @echo '//' >> $@
128  @echo '/*!' >> $@
129  @echo ' * \\file' >> $@
130  @echo ' *' >> $@
131  @echo ' * \\brief Package version information.' >> $@
132  @echo ' *' >> $@
133  @echo ' * \\warning Auto-generated by Rules.mk on' `date`>> $@
134  @echo ' *' >> $@
135  @echo ' * \\par Copyright:' >> $@
136  @echo ' * \\n All Rights Reserved' >> $@
137  @echo ' */' >> $@
138  @echo '#ifndef _VERSION_H' >> $@
139  @echo '#define _VERSION_H' >> $@
140  @echo '' >> $@
141  @echo '#include "rnr/pkg.h"' >> $@
142  @echo '' >> $@
143  @echo '/*! \\brief package name */' >> $@
144  @echo '#define PKG_NAME "$(RNMAKE_PKG)"' >> $@
145  @echo '' >> $@
146  @echo '/*! \\brief package dotted version */' >> $@
147  @echo '#define PKG_VERSION "$(RNMAKE_PKG_VERSION_DOTTED)"' >> $@
148  @echo '' >> $@
149  @echo '/*! \\brief package build date */' >> $@
150  @echo '#define PKG_TIMESTAMP "$(timestamp)"' >> $@
151  @echo '' >> $@
152  @echo '/*! \\brief package extended creation date */' >> $@
153  @echo '#define PKG_DATE "$(RNMAKE_PKG_VERSION_DATE)"' >> $@
154  @echo '' >> $@
155  @echo '/*! \\brief package full name */' >> $@
156  @echo '#define PKG_FULL_NAME "$(RNMAKE_PKG_FULL_NAME)"' >> $@
157  @echo '' >> $@
158  @echo '/*! \\brief package author(s) */' >> $@
159  @echo '#define PKG_AUTHORS $(RNMAKE_PKG_AUTHORS)' >> $@
160  @echo '' >> $@
161  @echo '/*! \\brief package owner(s) */' >> $@
162  @echo '#define PKG_OWNERS $(RNMAKE_PKG_OWNERS)' >> $@
163  @echo '' >> $@
164  @echo '/*! \\brief package legal disclaimer */' >> $@
165  @echo '#define PKG_DISCLAIMER $(RNMAKE_PKG_DISCLAIMER)' >> $@
166  @echo '' >> $@
167  @echo '/*! \\brief The package */' >> $@
168  @echo 'static const PkgInfo_T PkgInfo =' >> $@
169  @echo '{' >> $@
170  @echo ' PKG_NAME,' >> $@
171  @echo ' PKG_VERSION,' >> $@
172  @echo ' PKG_TIMESTAMP', >> $@
173  @echo ' PKG_DATE,' >> $@
174  @echo ' PKG_FULL_NAME,' >> $@
175  @echo ' PKG_AUTHORS,' >> $@
176  @echo ' PKG_OWNERS,' >> $@
177  @echo ' PKG_DISCLAIMER' >> $@
178  @echo '};' >> $@
179  @echo '' >> $@
180  @echo '#endif // _VERSION_H' >> $@
181 endif
182 
183 ifdef RNMAKE_DOXY
184 /*! \endcond RNMAKE_DOXY */
185 endif