netmsgs  1.2.2
RoadNarrows Robotics Network Messaging Package
Makefile
Go to the documentation of this file.
1 ################################################################################
2 #
3 # ./examples/Makefile
4 #
5 ifdef RNMAKE_DOXY
6 /*!
7 \file
8 
9 \brief The \h_netmsgs examples application makefile.
10 
11 RN Make System Specific Makefile
12 
13 \par Usage:
14 make [RNMAKE_OPTS] [encoding=val] [endian=val] target
15 
16 \note
17 Make netmsgs example only after the netmsgs package is installed. There
18 are circular dependencies not easily resolved.
19 
20 \pkgsynopsis
21 RoadNarrows Robotics Network Messaging Package
22 
23 \pkgfile{examples/Makefile}
24 
25 \pkgauthor{Robin Knight,robin.knight@roadnarrows.com}
26 
27 \pkgcopyright{2009-2018,RoadNarrows LLC,http://www.roadnarrows.com}
28 
29 \license{MIT}
30 
31 \EulaBegin
32 \EulaEnd
33 
34  * \cond RNMAKE_DOXY
35  */
36 endif
37 #
38 ################################################################################
39 
40 #------------------------------------------------------------------------------
41 # Required
42 
43 # Package Root Directory
44 RNMAKE_PKG_ROOT = ..
45 
46 # Bootstrap package within RN Make System
47 include $(RNMAKE_PKG_ROOT)/make/Bootstrap.mk
48 
49 # command line override
50 ifndef encoding
51  encoding=itv
52 endif
53 ifndef endian
54  endian=big
55 endif
56 
57 XML_OVERRIDES = encoding=$(encoding),endian=$(endian)
58 
59 #------------------------------------------------------------------------------
60 # Programs
61 
62 RNMAKE_LOC_PGMS = nmExample
63 
64 # Libraries to Link With
65 nmExample.LIBS = rnr_netmsgs rnr
66 nmExample.LIBDEPS = rnr_netmsgs
67 
68 #------------------------------------------------------------------------------
69 # Sources
70 
71 #
72 # C Source Files
73 #
74 nmExample.SRC.C = nmExample.c AstroMsgs.c
75 
76 #------------------------------------------------------------------------------
77 # Extras
78 #
79 
80 # Subpackage C PreProcessor Flags
81 EXTRA_CPPFLAGS = -DLOG -DLOGMOD="\"nmExample\""
82 
83 EXTRA_TGT_ALL = xml-make
84 EXTRA_TGT_DEPS = xml-make
85 EXTRA_TGT_CLEAN = xml-clean
86 
87 # undef to use installed version
88 NETMSGSGENPATH = $(RNMAKE_PKG_ROOT)/nmPython/scripts/
89 
90 # the command
91 NETMSGSGEN = netmsgsgen
92 
93 XML_H_DIR = .
94 XML_IN_FILES = AstroMsgs.xml
95 XML_OUT_H_FILES = $(addprefix $(XML_H_DIR)/,\
96  $(addsuffix .h,$(basename $(XML_IN_FILES))))
97 XML_OUT_C_FILES = $(addsuffix .c,$(basename $(XML_IN_FILES)))
98 
99 define XML_TO_H
100  $(addprefix $(XML_H_DIR)/,$(addsuffix .h,$(basename $(1))))
101 endef
102 
103 define XML_TO_C
104  $(addsuffix .c,$(basename $(1)))
105 endef
106 
107 .PHONY: xml-make
108 xml-make: $(XML_OUT_H_FILES)
109 
110 # Application specific message h and c files
111 $(XML_H_DIR)/%.h : %.xml
112  @echo ""
113  @echo " $(<)"
114  $(NETMSGSGENPATH)$(NETMSGSGEN) --lang=c --overrides="$(XML_OVERRIDES)" \
115  --xml=$(<) $(@) $(call XML_TO_C,$(<))
116 
117 .PHONY: xml-h-clean
118 xml-clean:
119  $(RM) $(XML_OUT_H_FILES)
120  $(RM) $(XML_OUT_C_FILES)
121 
122 
123 #------------------------------------------------------------------------------
124 # Include RNMAKE rules makefile(s)
125 
126 include $(RNMAKE_ROOT)/Rules.mk
127 
128 include $(RNMAKE_ROOT)/Rules.netmsgs.mk
129 
130 ifdef RNMAKE_DOXY
131 /*! \endcond RNMAKE_DOXY */
132 endif