aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/DocBook/media/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/DocBook/media/Makefile')
-rw-r--r--Documentation/DocBook/media/Makefile259
1 files changed, 259 insertions, 0 deletions
diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile
new file mode 100644
index 000000000000..baeea174fdc6
--- /dev/null
+++ b/Documentation/DocBook/media/Makefile
@@ -0,0 +1,259 @@
1###
2# Media build rules - Auto-generates media contents/indexes and *.h xml's
3#
4
5SHELL=/bin/bash
6
7MEDIA_OBJ_DIR=$(objtree)/Documentation/DocBook/
8MEDIA_SRC_DIR=$(srctree)/Documentation/DocBook/media
9
10MEDIA_TEMP = media-entities.tmpl \
11 media-indices.tmpl \
12 videodev2.h.xml \
13 v4l2.xml \
14 frontend.h.xml
15
16IMGFILES := $(addprefix $(MEDIA_OBJ_DIR)/media/, $(notdir $(shell ls $(MEDIA_SRC_DIR)/*/*.gif $(MEDIA_SRC_DIR)/*/*.png)))
17GENFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(MEDIA_TEMP))
18
19PHONY += cleanmediadocs mediaindexdocs
20
21cleanmediadocs:
22 -@rm `find $(MEDIA_OBJ_DIR) -type l` $(GENFILES) $(IMGFILES)
23
24$(obj)/media_api.xml: $(GENFILES) FORCE
25
26#$(MEDIA_OBJ_DIR)/media_api.html: $(MEDIA_OBJ_DIR)/media_api.xml
27#$(MEDIA_OBJ_DIR)/media_api.pdf: $(MEDIA_OBJ_DIR)/media_api.xml
28#$(MEDIA_OBJ_DIR)/media_api.ps: $(MEDIA_OBJ_DIR)/media_api.xml
29
30V4L_SGMLS = \
31 $(shell ls $(MEDIA_SRC_DIR)/v4l/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)') \
32 capture.c.xml \
33 keytable.c.xml \
34 v4l2grab.c.xml
35
36DVB_SGMLS = \
37 $(shell ls $(MEDIA_SRC_DIR)/dvb/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)')
38
39MEDIA_SGMLS = $(addprefix ./,$(V4L_SGMLS)) $(addprefix ./,$(DVB_SGMLS)) $(addprefix ./,$(MEDIA_TEMP))
40
41FUNCS = \
42 close \
43 ioctl \
44 mmap \
45 munmap \
46 open \
47 poll \
48 read \
49 select \
50 write \
51
52IOCTLS = \
53 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/videodev2.h) \
54 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/media.h) \
55 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/v4l2-subdev.h) \
56 VIDIOC_SUBDEV_G_FRAME_INTERVAL \
57 VIDIOC_SUBDEV_S_FRAME_INTERVAL \
58 VIDIOC_SUBDEV_ENUM_MBUS_CODE \
59 VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
60 VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
61
62TYPES = \
63 $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h)
64
65ENUMS = \
66 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/videodev2.h) \
67 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/media.h) \
68 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-mediabus.h) \
69 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-subdev.h)
70
71STRUCTS = \
72 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/videodev2.h) \
73 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/media.h) \
74 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-subdev.h) \
75 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-mediabus.h)
76
77ERRORS = \
78 EACCES \
79 EAGAIN \
80 EBADF \
81 EBUSY \
82 EFAULT \
83 EIO \
84 EINTR \
85 EINVAL \
86 ENFILE \
87 ENOMEM \
88 ENOSPC \
89 ENOTTY \
90 ENXIO \
91 EMFILE \
92 EPERM \
93 ERANGE \
94 EPIPE \
95
96ESCAPE = \
97 -e "s/&/\\&/g" \
98 -e "s/</\\&lt;/g" \
99 -e "s/>/\\&gt;/g"
100
101FILENAME = \
102 -e s,"^[^\/]*/",, \
103 -e s/"\\.xml"// \
104 -e s/"\\.tmpl"// \
105 -e s/\\\./-/g \
106 -e s/"^func-"// \
107 -e s/"^pixfmt-"// \
108 -e s/"^vidioc-"//
109
110# Generate references to these structs in videodev2.h.xml.
111DOCUMENTED = \
112 -e "s/\(enum *\)v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1<link linkend=\"\2\">v4l2_mpeg_cx2341x_video_\2<\/link>/g" \
113 -e "s/\(\(enum\|struct\) *\)\(v4l2_[a-zA-Z0-9_]*\)/\1<link linkend=\"\3\">\3<\/link>/g" \
114 -e "s/\(V4L2_PIX_FMT_[A-Z0-9_]\+\) /<link linkend=\"\1\">\1<\/link> /g" \
115 -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \
116 -e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g"
117
118DVB_DOCUMENTED = \
119 -e "s,\(define \)\([A-Z0-9_]\+\)\(\s\+_IO\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
120 -e "s/\(linkend\=\"\)FE_SET_PROPERTY/\1FE_GET_PROPERTY/g"
121
122
123#
124# Media targets and dependencies
125#
126
127$(MEDIA_OBJ_DIR)/v4l2.xml:
128 @$($(quiet)gen_xml)
129 @(mkdir -p $(MEDIA_OBJ_DIR)/media)
130 @(cp $(MEDIA_SRC_DIR)/dvb/*.png $(MEDIA_SRC_DIR)/v4l/*.gif $(MEDIA_OBJ_DIR)/media/)
131 @(ln -sf $(MEDIA_SRC_DIR)/v4l/*xml $(MEDIA_OBJ_DIR)/)
132 @(ln -sf $(MEDIA_SRC_DIR)/dvb/*xml $(MEDIA_OBJ_DIR)/)
133
134$(MEDIA_OBJ_DIR)/videodev2.h.xml: $(srctree)/include/linux/videodev2.h $(MEDIA_OBJ_DIR)/v4l2.xml
135 @$($(quiet)gen_xml)
136 @( \
137 echo "<programlisting>") > $@
138 @( \
139 expand --tabs=8 < $< | \
140 sed $(ESCAPE) $(DOCUMENTED) | \
141 sed 's/i\.e\./&ie;/') >> $@
142 @( \
143 echo "</programlisting>") >> $@
144
145$(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/linux/dvb/frontend.h $(MEDIA_OBJ_DIR)/v4l2.xml
146 @$($(quiet)gen_xml)
147 @( \
148 echo "<programlisting>") > $@
149 @( \
150 expand --tabs=8 < $< | \
151 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
152 sed 's/i\.e\./&ie;/') >> $@
153 @( \
154 echo "</programlisting>") >> $@
155
156$(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
157 @$($(quiet)gen_xml)
158 @( \
159 echo "<!-- Generated file! Do not edit. -->") >$@
160 @( \
161 echo -e "\n<!-- Functions -->") >>$@
162 @( \
163 for ident in $(FUNCS) ; do \
164 entity=`echo $$ident | tr _ -` ; \
165 echo "<!ENTITY func-$$entity \"<link" \
166 "linkend='func-$$entity'><function>$$ident()</function></link>\">" \
167 >>$@ ; \
168 done)
169 @( \
170 echo -e "\n<!-- Ioctls -->") >>$@
171 @( \
172 for ident in $(IOCTLS) ; do \
173 entity=`echo $$ident | tr _ -` ; \
174 id=`grep "<refname>$$ident" $(MEDIA_OBJ_DIR)/vidioc-*.xml | sed -r s,"^.*/(.*).xml.*","\1",` ; \
175 echo "<!ENTITY $$entity \"<link" \
176 "linkend='$$id'><constant>$$ident</constant></link>\">" \
177 >>$@ ; \
178 done)
179 @( \
180 echo -e "\n<!-- Types -->") >>$@
181 @( \
182 for ident in $(TYPES) ; do \
183 entity=`echo $$ident | tr _ -` ; \
184 echo "<!ENTITY $$entity \"<link" \
185 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
186 done)
187 @( \
188 echo -e "\n<!-- Enums -->") >>$@
189 @( \
190 for ident in $(ENUMS) ; do \
191 entity=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -` ; \
192 echo "<!ENTITY $$entity \"enum&nbsp;<link" \
193 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
194 done)
195 @( \
196 echo -e "\n<!-- Structures -->") >>$@
197 @( \
198 for ident in $(STRUCTS) ; do \
199 entity=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
200 echo "<!ENTITY $$entity \"struct&nbsp;<link" \
201 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
202 done)
203 @( \
204 echo -e "\n<!-- Error Codes -->") >>$@
205 @( \
206 for ident in $(ERRORS) ; do \
207 echo "<!ENTITY $$ident \"<errorcode>$$ident</errorcode>" \
208 "error code\">" >>$@ ; \
209 done)
210 @( \
211 echo -e "\n<!-- Subsections -->") >>$@
212 @( \
213 for file in $(MEDIA_SGMLS) ; do \
214 entity=`echo "$$file" | sed $(FILENAME) -e s/"^([^-]*)"/sub\1/` ; \
215 if ! echo "$$file" | \
216 grep -q -E -e '^(func|vidioc|pixfmt)-' ; then \
217 echo "<!ENTITY sub-$$entity SYSTEM \"$$file\">" >>$@ ; \
218 fi ; \
219 done)
220 @( \
221 echo -e "\n<!-- Function Reference -->") >>$@
222 @( \
223 for file in $(MEDIA_SGMLS) ; do \
224 if echo "$$file" | \
225 grep -q -E -e '(func|vidioc|pixfmt)-' ; then \
226 entity=`echo "$$file" |sed $(FILENAME)` ; \
227 echo "<!ENTITY $$entity SYSTEM \"$$file\">" >>$@ ; \
228 fi ; \
229 done)
230
231# Jade can auto-generate a list-of-tables, which includes all structs,
232# but we only want data types, all types, and sorted please.
233$(MEDIA_OBJ_DIR)/media-indices.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
234 @$($(quiet)gen_xml)
235 @( \
236 echo "<!-- Generated file! Do not edit. -->") >$@
237 @( \
238 echo -e "\n<index><title>List of Types</title>") >>$@
239 @( \
240 for ident in $(TYPES) ; do \
241 id=`echo $$ident | tr _ -` ; \
242 echo "<indexentry><primaryie><link" \
243 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
244 done)
245 @( \
246 for ident in $(ENUMS) ; do \
247 id=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -`; \
248 echo "<indexentry><primaryie>enum&nbsp;<link" \
249 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
250 done)
251 @( \
252 for ident in $(STRUCTS) ; do \
253 id=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
254 echo "<indexentry><primaryie>struct&nbsp;<link" \
255 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
256 done)
257 @( \
258 echo "</index>") >>$@
259