[media] DocBook: Move all media docbook stuff into its own directory
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / Documentation / DocBook / media / Makefile
blobbaeea174fdc67d1d41a58d2a2ca733c5d1c29185
1 ###
2 # Media build rules - Auto-generates media contents/indexes and *.h xml's
5 SHELL=/bin/bash
7 MEDIA_OBJ_DIR=$(objtree)/Documentation/DocBook/
8 MEDIA_SRC_DIR=$(srctree)/Documentation/DocBook/media
10 MEDIA_TEMP = media-entities.tmpl \
11 media-indices.tmpl \
12 videodev2.h.xml \
13 v4l2.xml \
14 frontend.h.xml
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))
19 PHONY += cleanmediadocs mediaindexdocs
21 cleanmediadocs:
22 -@rm `find $(MEDIA_OBJ_DIR) -type l` $(GENFILES) $(IMGFILES)
24 $(obj)/media_api.xml: $(GENFILES) FORCE
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
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
36 DVB_SGMLS = \
37 $(shell ls $(MEDIA_SRC_DIR)/dvb/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)')
39 MEDIA_SGMLS = $(addprefix ./,$(V4L_SGMLS)) $(addprefix ./,$(DVB_SGMLS)) $(addprefix ./,$(MEDIA_TEMP))
41 FUNCS = \
42 close \
43 ioctl \
44 mmap \
45 munmap \
46 open \
47 poll \
48 read \
49 select \
50 write \
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 \
62 TYPES = \
63 $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h)
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)
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)
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 \
96 ESCAPE = \
97 -e "s/&/\\&/g" \
98 -e "s/</\\&lt;/g" \
99 -e "s/>/\\&gt;/g"
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-"//
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"
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"
124 # Media targets and dependencies
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)/)
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>") >> $@
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>") >> $@
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)
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>") >>$@