2016-11-30 18:00:18 +08:00
|
|
|
# Rules to convert DOT and SVG to Sphinx images
|
2016-07-07 11:21:37 +08:00
|
|
|
|
2016-07-08 22:40:06 +08:00
|
|
|
SRC_DIR=$(srctree)/Documentation/media
|
2016-07-07 20:29:48 +08:00
|
|
|
|
2016-11-30 18:00:17 +08:00
|
|
|
DOTS = \
|
|
|
|
uapi/v4l/pipeline.dot \
|
|
|
|
|
docs-rst: auto-generate PDF image files
The PDF files that contain media images were actually generated
offline from their SVG or PNG source files.
Sphinx can handle PNG sources automatially. So, let's just
drop their PDF counterparts.
For SVG, however, Sphinx doesn't produce the right tags to
use the TexLive SVG support. Also, the SVG support is done via
shell execution, with is not nice.
So, while we don't have any support for SVG inside Sphinx
core or as an extension, move the logic to build them to Makefile,
producing the PDF images on runtime.
NOTE: due to the way Sphinx works, the PDF images should be
generated inside the Kernel source tree, as otherwise Sphinx
won't find it, not obeying what's specified by "O=" makefile
parameter.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2016-11-15 00:32:32 +08:00
|
|
|
IMAGES = \
|
|
|
|
typical_media_device.svg \
|
|
|
|
uapi/dvb/dvbstb.svg \
|
2016-11-30 18:00:16 +08:00
|
|
|
uapi/v4l/bayer.svg \
|
docs-rst: auto-generate PDF image files
The PDF files that contain media images were actually generated
offline from their SVG or PNG source files.
Sphinx can handle PNG sources automatially. So, let's just
drop their PDF counterparts.
For SVG, however, Sphinx doesn't produce the right tags to
use the TexLive SVG support. Also, the SVG support is done via
shell execution, with is not nice.
So, while we don't have any support for SVG inside Sphinx
core or as an extension, move the logic to build them to Makefile,
producing the PDF images on runtime.
NOTE: due to the way Sphinx works, the PDF images should be
generated inside the Kernel source tree, as otherwise Sphinx
won't find it, not obeying what's specified by "O=" makefile
parameter.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2016-11-15 00:32:32 +08:00
|
|
|
uapi/v4l/constraints.svg \
|
2016-11-30 18:00:11 +08:00
|
|
|
uapi/v4l/crop.svg \
|
|
|
|
uapi/v4l/fieldseq_bt.svg \
|
|
|
|
uapi/v4l/fieldseq_tb.svg \
|
2016-11-30 18:00:13 +08:00
|
|
|
uapi/v4l/nv12mt.svg \
|
|
|
|
uapi/v4l/nv12mt_example.svg \
|
2016-11-30 18:00:14 +08:00
|
|
|
uapi/v4l/pipeline.svg \
|
2016-11-30 18:00:15 +08:00
|
|
|
uapi/v4l/selection.svg \
|
docs-rst: auto-generate PDF image files
The PDF files that contain media images were actually generated
offline from their SVG or PNG source files.
Sphinx can handle PNG sources automatially. So, let's just
drop their PDF counterparts.
For SVG, however, Sphinx doesn't produce the right tags to
use the TexLive SVG support. Also, the SVG support is done via
shell execution, with is not nice.
So, while we don't have any support for SVG inside Sphinx
core or as an extension, move the logic to build them to Makefile,
producing the PDF images on runtime.
NOTE: due to the way Sphinx works, the PDF images should be
generated inside the Kernel source tree, as otherwise Sphinx
won't find it, not obeying what's specified by "O=" makefile
parameter.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2016-11-15 00:32:32 +08:00
|
|
|
uapi/v4l/subdev-image-processing-full.svg \
|
|
|
|
uapi/v4l/subdev-image-processing-scaling-multi-source.svg \
|
|
|
|
uapi/v4l/subdev-image-processing-crop.svg \
|
2016-11-30 18:00:11 +08:00
|
|
|
uapi/v4l/vbi_525.svg \
|
|
|
|
uapi/v4l/vbi_625.svg \
|
|
|
|
uapi/v4l/vbi_hsync.svg \
|
|
|
|
|
2016-11-30 18:00:17 +08:00
|
|
|
DOTTGT := $(patsubst %.dot,%.svg,$(DOTS))
|
|
|
|
IMGDOT := $(patsubst %,$(SRC_DIR)/%,$(DOTTGT))
|
docs-rst: auto-generate PDF image files
The PDF files that contain media images were actually generated
offline from their SVG or PNG source files.
Sphinx can handle PNG sources automatially. So, let's just
drop their PDF counterparts.
For SVG, however, Sphinx doesn't produce the right tags to
use the TexLive SVG support. Also, the SVG support is done via
shell execution, with is not nice.
So, while we don't have any support for SVG inside Sphinx
core or as an extension, move the logic to build them to Makefile,
producing the PDF images on runtime.
NOTE: due to the way Sphinx works, the PDF images should be
generated inside the Kernel source tree, as otherwise Sphinx
won't find it, not obeying what's specified by "O=" makefile
parameter.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2016-11-15 00:32:32 +08:00
|
|
|
|
2016-11-30 18:00:17 +08:00
|
|
|
IMGTGT := $(patsubst %.svg,%.pdf,$(IMAGES))
|
docs-rst: auto-generate PDF image files
The PDF files that contain media images were actually generated
offline from their SVG or PNG source files.
Sphinx can handle PNG sources automatially. So, let's just
drop their PDF counterparts.
For SVG, however, Sphinx doesn't produce the right tags to
use the TexLive SVG support. Also, the SVG support is done via
shell execution, with is not nice.
So, while we don't have any support for SVG inside Sphinx
core or as an extension, move the logic to build them to Makefile,
producing the PDF images on runtime.
NOTE: due to the way Sphinx works, the PDF images should be
generated inside the Kernel source tree, as otherwise Sphinx
won't find it, not obeying what's specified by "O=" makefile
parameter.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2016-11-15 00:32:32 +08:00
|
|
|
IMGPDF := $(patsubst %,$(SRC_DIR)/%,$(IMGTGT))
|
|
|
|
|
|
|
|
cmd = $(echo-cmd) $(cmd_$(1))
|
|
|
|
|
|
|
|
quiet_cmd_genpdf = GENPDF $2
|
|
|
|
cmd_genpdf = convert $2 $3
|
|
|
|
|
2016-11-30 18:00:17 +08:00
|
|
|
quiet_cmd_gendot = DOT $2
|
2017-01-31 08:18:44 +08:00
|
|
|
cmd_gendot = dot -Tsvg $2 > $3 || { rm -f $3; exit 1; }
|
2016-11-30 18:00:17 +08:00
|
|
|
|
docs-rst: auto-generate PDF image files
The PDF files that contain media images were actually generated
offline from their SVG or PNG source files.
Sphinx can handle PNG sources automatially. So, let's just
drop their PDF counterparts.
For SVG, however, Sphinx doesn't produce the right tags to
use the TexLive SVG support. Also, the SVG support is done via
shell execution, with is not nice.
So, while we don't have any support for SVG inside Sphinx
core or as an extension, move the logic to build them to Makefile,
producing the PDF images on runtime.
NOTE: due to the way Sphinx works, the PDF images should be
generated inside the Kernel source tree, as otherwise Sphinx
won't find it, not obeying what's specified by "O=" makefile
parameter.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2016-11-15 00:32:32 +08:00
|
|
|
%.pdf: %.svg
|
|
|
|
@$(call cmd,genpdf,$<,$@)
|
|
|
|
|
2016-11-30 18:00:17 +08:00
|
|
|
%.svg: %.dot
|
|
|
|
@$(call cmd,gendot,$<,$@)
|
|
|
|
|
2016-11-30 18:00:18 +08:00
|
|
|
# Rules to convert a .h file to inline RST documentation
|
docs-rst: auto-generate PDF image files
The PDF files that contain media images were actually generated
offline from their SVG or PNG source files.
Sphinx can handle PNG sources automatially. So, let's just
drop their PDF counterparts.
For SVG, however, Sphinx doesn't produce the right tags to
use the TexLive SVG support. Also, the SVG support is done via
shell execution, with is not nice.
So, while we don't have any support for SVG inside Sphinx
core or as an extension, move the logic to build them to Makefile,
producing the PDF images on runtime.
NOTE: due to the way Sphinx works, the PDF images should be
generated inside the Kernel source tree, as otherwise Sphinx
won't find it, not obeying what's specified by "O=" makefile
parameter.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2016-11-15 00:32:32 +08:00
|
|
|
|
2016-11-30 18:00:18 +08:00
|
|
|
PARSER = $(srctree)/Documentation/sphinx/parse-headers.pl
|
|
|
|
UAPI = $(srctree)/include/uapi/linux
|
|
|
|
KAPI = $(srctree)/include/linux
|
2016-07-08 20:15:03 +08:00
|
|
|
|
2016-11-30 18:00:18 +08:00
|
|
|
FILES = audio.h.rst ca.h.rst dmx.h.rst frontend.h.rst net.h.rst video.h.rst \
|
|
|
|
videodev2.h.rst media.h.rst cec.h.rst lirc.h.rst
|
2016-07-07 11:21:37 +08:00
|
|
|
|
2016-11-30 18:00:18 +08:00
|
|
|
TARGETS := $(addprefix $(BUILDDIR)/, $(FILES))
|
2016-07-07 20:29:48 +08:00
|
|
|
|
|
|
|
gen_rst = \
|
|
|
|
echo ${PARSER} $< $@ $(SRC_DIR)/$(notdir $@).exceptions; \
|
|
|
|
${PARSER} $< $@ $(SRC_DIR)/$(notdir $@).exceptions
|
|
|
|
|
|
|
|
quiet_gen_rst = echo ' PARSE $(patsubst $(srctree)/%,%,$<)'; \
|
|
|
|
${PARSER} $< $@ $(SRC_DIR)/$(notdir $@).exceptions
|
|
|
|
|
|
|
|
silent_gen_rst = ${gen_rst}
|
|
|
|
|
|
|
|
$(BUILDDIR)/audio.h.rst: ${UAPI}/dvb/audio.h ${PARSER} $(SRC_DIR)/audio.h.rst.exceptions
|
|
|
|
@$($(quiet)gen_rst)
|
2016-07-07 11:21:37 +08:00
|
|
|
|
2016-07-07 20:29:48 +08:00
|
|
|
$(BUILDDIR)/ca.h.rst: ${UAPI}/dvb/ca.h ${PARSER} $(SRC_DIR)/ca.h.rst.exceptions
|
|
|
|
@$($(quiet)gen_rst)
|
2016-07-07 18:51:03 +08:00
|
|
|
|
2016-07-07 20:29:48 +08:00
|
|
|
$(BUILDDIR)/dmx.h.rst: ${UAPI}/dvb/dmx.h ${PARSER} $(SRC_DIR)/dmx.h.rst.exceptions
|
|
|
|
@$($(quiet)gen_rst)
|
2016-07-07 18:11:46 +08:00
|
|
|
|
2016-07-07 20:29:48 +08:00
|
|
|
$(BUILDDIR)/frontend.h.rst: ${UAPI}/dvb/frontend.h ${PARSER} $(SRC_DIR)/frontend.h.rst.exceptions
|
|
|
|
@$($(quiet)gen_rst)
|
2016-07-07 18:42:18 +08:00
|
|
|
|
2016-07-07 20:29:48 +08:00
|
|
|
$(BUILDDIR)/net.h.rst: ${UAPI}/dvb/net.h ${PARSER} $(SRC_DIR)/net.h.rst.exceptions
|
|
|
|
@$($(quiet)gen_rst)
|
2016-07-07 19:28:43 +08:00
|
|
|
|
2016-07-07 20:29:48 +08:00
|
|
|
$(BUILDDIR)/video.h.rst: ${UAPI}/dvb/video.h ${PARSER} $(SRC_DIR)/video.h.rst.exceptions
|
|
|
|
@$($(quiet)gen_rst)
|
2016-07-07 19:46:49 +08:00
|
|
|
|
2016-07-08 20:15:03 +08:00
|
|
|
$(BUILDDIR)/videodev2.h.rst: ${UAPI}/videodev2.h ${PARSER} $(SRC_DIR)/videodev2.h.rst.exceptions
|
2016-07-07 20:29:48 +08:00
|
|
|
@$($(quiet)gen_rst)
|
2016-07-07 22:05:38 +08:00
|
|
|
|
2016-07-09 19:54:35 +08:00
|
|
|
$(BUILDDIR)/media.h.rst: ${UAPI}/media.h ${PARSER} $(SRC_DIR)/media.h.rst.exceptions
|
|
|
|
@$($(quiet)gen_rst)
|
|
|
|
|
2016-11-02 18:25:28 +08:00
|
|
|
$(BUILDDIR)/cec.h.rst: ${UAPI}/cec.h ${PARSER} $(SRC_DIR)/cec.h.rst.exceptions
|
2016-07-09 21:25:05 +08:00
|
|
|
@$($(quiet)gen_rst)
|
|
|
|
|
2016-07-10 18:18:52 +08:00
|
|
|
$(BUILDDIR)/lirc.h.rst: ${UAPI}/lirc.h ${PARSER} $(SRC_DIR)/lirc.h.rst.exceptions
|
|
|
|
@$($(quiet)gen_rst)
|
2016-11-30 18:00:18 +08:00
|
|
|
|
|
|
|
# Media build rules
|
|
|
|
|
|
|
|
.PHONY: all html epub xml latex
|
|
|
|
|
|
|
|
all: $(IMGDOT) $(BUILDDIR) ${TARGETS}
|
|
|
|
html: all
|
|
|
|
epub: all
|
|
|
|
xml: all
|
|
|
|
latex: $(IMGPDF) all
|
|
|
|
|
|
|
|
clean:
|
2016-11-30 18:00:19 +08:00
|
|
|
-rm -f $(DOTTGT) $(IMGTGT) ${TARGETS} 2>/dev/null
|
2016-11-30 18:00:18 +08:00
|
|
|
|
|
|
|
$(BUILDDIR):
|
|
|
|
$(Q)mkdir -p $@
|