diff options
Diffstat (limited to 'Documentation/DocBook/media/Makefile')
-rw-r--r-- | Documentation/DocBook/media/Makefile | 259 |
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 | |||
5 | SHELL=/bin/bash | ||
6 | |||
7 | MEDIA_OBJ_DIR=$(objtree)/Documentation/DocBook/ | ||
8 | MEDIA_SRC_DIR=$(srctree)/Documentation/DocBook/media | ||
9 | |||
10 | MEDIA_TEMP = media-entities.tmpl \ | ||
11 | media-indices.tmpl \ | ||
12 | videodev2.h.xml \ | ||
13 | v4l2.xml \ | ||
14 | frontend.h.xml | ||
15 | |||
16 | IMGFILES := $(addprefix $(MEDIA_OBJ_DIR)/media/, $(notdir $(shell ls $(MEDIA_SRC_DIR)/*/*.gif $(MEDIA_SRC_DIR)/*/*.png))) | ||
17 | GENFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(MEDIA_TEMP)) | ||
18 | |||
19 | PHONY += cleanmediadocs mediaindexdocs | ||
20 | |||
21 | cleanmediadocs: | ||
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 | |||
30 | V4L_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 | |||
36 | DVB_SGMLS = \ | ||
37 | $(shell ls $(MEDIA_SRC_DIR)/dvb/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)') | ||
38 | |||
39 | MEDIA_SGMLS = $(addprefix ./,$(V4L_SGMLS)) $(addprefix ./,$(DVB_SGMLS)) $(addprefix ./,$(MEDIA_TEMP)) | ||
40 | |||
41 | FUNCS = \ | ||
42 | close \ | ||
43 | ioctl \ | ||
44 | mmap \ | ||
45 | munmap \ | ||
46 | open \ | ||
47 | poll \ | ||
48 | read \ | ||
49 | select \ | ||
50 | write \ | ||
51 | |||
52 | IOCTLS = \ | ||
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 | |||
62 | TYPES = \ | ||
63 | $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) | ||
64 | |||
65 | ENUMS = \ | ||
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 | |||
71 | STRUCTS = \ | ||
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 | |||
77 | ERRORS = \ | ||
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 | |||
96 | ESCAPE = \ | ||
97 | -e "s/&/\\&/g" \ | ||
98 | -e "s/</\\</g" \ | ||
99 | -e "s/>/\\>/g" | ||
100 | |||
101 | FILENAME = \ | ||
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. | ||
111 | DOCUMENTED = \ | ||
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 | |||
118 | DVB_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 <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 <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 <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 <link" \ | ||
255 | "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \ | ||
256 | done) | ||
257 | @( \ | ||
258 | echo "</index>") >>$@ | ||
259 | |||