2 # Media build rules - Auto-generates media contents/indexes and *.h xml's
7 MEDIA_OBJ_DIR
=$(objtree
)/Documentation
/DocBook
/
8 MEDIA_SRC_DIR
=$(srctree
)/Documentation
/DocBook
/media
10 MEDIA_TEMP
= media-entities.tmpl \
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
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
31 $(shell ls
$(MEDIA_SRC_DIR
)/v4l
/*.xml|perl
-ne
'print "$$1 " if (m,.*/(.*)\n,)') \
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
))
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 \
63 $(shell perl
-ne
'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree
)/include/linux
/videodev2.h
)
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
)
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
)
110 # Generate references to these structs in videodev2.h.xml.
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"
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
:
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
137 echo
"<programlisting>") > $@
139 expand
--tabs
=8 < $< | \
140 sed
$(ESCAPE
) $(DOCUMENTED
) | \
141 sed
's/i\.e\./&ie;/') >> $@
143 echo
"</programlisting>") >> $@
145 $(MEDIA_OBJ_DIR
)/frontend.h.xml
: $(srctree
)/include/linux
/dvb
/frontend.h
$(MEDIA_OBJ_DIR
)/v4l2.xml
148 echo
"<programlisting>") > $@
150 expand
--tabs
=8 < $< | \
151 sed
$(ESCAPE
) $(DVB_DOCUMENTED
) | \
152 sed
's/i\.e\./&ie;/') >> $@
154 echo
"</programlisting>") >> $@
156 $(MEDIA_OBJ_DIR
)/media-entities.tmpl
: $(MEDIA_OBJ_DIR
)/v4l2.xml
159 echo
"<!-- Generated file! Do not edit. -->") >$@
161 echo
-e
"\n<!-- Functions -->") >>$@
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>\">" \
170 echo
-e
"\n<!-- Ioctls -->") >>$@
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>\">" \
180 echo
-e
"\n<!-- Types -->") >>$@
182 for ident in
$(TYPES
) ; do \
183 entity
=`echo $$ident | tr _ -` ; \
184 echo
"<!ENTITY $$entity \"<link" \
185 "linkend='$$entity'>$$ident</link>\">" >>$@
; \
188 echo
-e
"\n<!-- Enums -->") >>$@
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>\">" >>$@
; \
196 echo
-e
"\n<!-- Structures -->") >>$@
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>\">" >>$@
; \
204 echo
-e
"\n<!-- Error Codes -->") >>$@
206 for ident in
$(ERRORS
) ; do \
207 echo
"<!ENTITY $$ident \"<errorcode>$$ident</errorcode>" \
208 "error code\">" >>$@
; \
211 echo
-e
"\n<!-- Subsections -->") >>$@
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\">" >>$@
; \
221 echo
-e
"\n<!-- Function Reference -->") >>$@
223 for file in
$(MEDIA_SGMLS
) ; do \
225 grep
-q
-E
-e
'(func|vidioc|pixfmt)-' ; then \
226 entity
=`echo "$$file" |sed $(FILENAME)` ; \
227 echo
"<!ENTITY $$entity SYSTEM \"$$file\">" >>$@
; \
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
236 echo
"<!-- Generated file! Do not edit. -->") >$@
238 echo
-e
"\n<index><title>List of Types</title>") >>$@
240 for ident in
$(TYPES
) ; do \
241 id
=`echo $$ident | tr _ -` ; \
242 echo
"<indexentry><primaryie><link" \
243 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@
; \
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>" >>$@
; \
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>" >>$@
; \
258 echo
"</index>") >>$@