mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 05:41:55 +00:00
04b7091172
As we use redirection to create the SVG file, even a failed conversion
will create the file and 'make' will consider it up-to-date if the
build is retried. We should delete it in case of failure.
Fixes: ec868e4ee2
("docs-rst: media: build SVG from graphviz files")
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
112 lines
3.0 KiB
Makefile
112 lines
3.0 KiB
Makefile
# Rules to convert DOT and SVG to Sphinx images
|
|
|
|
SRC_DIR=$(srctree)/Documentation/media
|
|
|
|
DOTS = \
|
|
uapi/v4l/pipeline.dot \
|
|
|
|
IMAGES = \
|
|
typical_media_device.svg \
|
|
uapi/dvb/dvbstb.svg \
|
|
uapi/v4l/bayer.svg \
|
|
uapi/v4l/constraints.svg \
|
|
uapi/v4l/crop.svg \
|
|
uapi/v4l/fieldseq_bt.svg \
|
|
uapi/v4l/fieldseq_tb.svg \
|
|
uapi/v4l/nv12mt.svg \
|
|
uapi/v4l/nv12mt_example.svg \
|
|
uapi/v4l/pipeline.svg \
|
|
uapi/v4l/selection.svg \
|
|
uapi/v4l/subdev-image-processing-full.svg \
|
|
uapi/v4l/subdev-image-processing-scaling-multi-source.svg \
|
|
uapi/v4l/subdev-image-processing-crop.svg \
|
|
uapi/v4l/vbi_525.svg \
|
|
uapi/v4l/vbi_625.svg \
|
|
uapi/v4l/vbi_hsync.svg \
|
|
|
|
DOTTGT := $(patsubst %.dot,%.svg,$(DOTS))
|
|
IMGDOT := $(patsubst %,$(SRC_DIR)/%,$(DOTTGT))
|
|
|
|
IMGTGT := $(patsubst %.svg,%.pdf,$(IMAGES))
|
|
IMGPDF := $(patsubst %,$(SRC_DIR)/%,$(IMGTGT))
|
|
|
|
cmd = $(echo-cmd) $(cmd_$(1))
|
|
|
|
quiet_cmd_genpdf = GENPDF $2
|
|
cmd_genpdf = convert $2 $3
|
|
|
|
quiet_cmd_gendot = DOT $2
|
|
cmd_gendot = dot -Tsvg $2 > $3 || { rm -f $3; exit 1; }
|
|
|
|
%.pdf: %.svg
|
|
@$(call cmd,genpdf,$<,$@)
|
|
|
|
%.svg: %.dot
|
|
@$(call cmd,gendot,$<,$@)
|
|
|
|
# Rules to convert a .h file to inline RST documentation
|
|
|
|
PARSER = $(srctree)/Documentation/sphinx/parse-headers.pl
|
|
UAPI = $(srctree)/include/uapi/linux
|
|
KAPI = $(srctree)/include/linux
|
|
|
|
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
|
|
|
|
TARGETS := $(addprefix $(BUILDDIR)/, $(FILES))
|
|
|
|
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)
|
|
|
|
$(BUILDDIR)/ca.h.rst: ${UAPI}/dvb/ca.h ${PARSER} $(SRC_DIR)/ca.h.rst.exceptions
|
|
@$($(quiet)gen_rst)
|
|
|
|
$(BUILDDIR)/dmx.h.rst: ${UAPI}/dvb/dmx.h ${PARSER} $(SRC_DIR)/dmx.h.rst.exceptions
|
|
@$($(quiet)gen_rst)
|
|
|
|
$(BUILDDIR)/frontend.h.rst: ${UAPI}/dvb/frontend.h ${PARSER} $(SRC_DIR)/frontend.h.rst.exceptions
|
|
@$($(quiet)gen_rst)
|
|
|
|
$(BUILDDIR)/net.h.rst: ${UAPI}/dvb/net.h ${PARSER} $(SRC_DIR)/net.h.rst.exceptions
|
|
@$($(quiet)gen_rst)
|
|
|
|
$(BUILDDIR)/video.h.rst: ${UAPI}/dvb/video.h ${PARSER} $(SRC_DIR)/video.h.rst.exceptions
|
|
@$($(quiet)gen_rst)
|
|
|
|
$(BUILDDIR)/videodev2.h.rst: ${UAPI}/videodev2.h ${PARSER} $(SRC_DIR)/videodev2.h.rst.exceptions
|
|
@$($(quiet)gen_rst)
|
|
|
|
$(BUILDDIR)/media.h.rst: ${UAPI}/media.h ${PARSER} $(SRC_DIR)/media.h.rst.exceptions
|
|
@$($(quiet)gen_rst)
|
|
|
|
$(BUILDDIR)/cec.h.rst: ${UAPI}/cec.h ${PARSER} $(SRC_DIR)/cec.h.rst.exceptions
|
|
@$($(quiet)gen_rst)
|
|
|
|
$(BUILDDIR)/lirc.h.rst: ${UAPI}/lirc.h ${PARSER} $(SRC_DIR)/lirc.h.rst.exceptions
|
|
@$($(quiet)gen_rst)
|
|
|
|
# Media build rules
|
|
|
|
.PHONY: all html epub xml latex
|
|
|
|
all: $(IMGDOT) $(BUILDDIR) ${TARGETS}
|
|
html: all
|
|
epub: all
|
|
xml: all
|
|
latex: $(IMGPDF) all
|
|
|
|
clean:
|
|
-rm -f $(DOTTGT) $(IMGTGT) ${TARGETS} 2>/dev/null
|
|
|
|
$(BUILDDIR):
|
|
$(Q)mkdir -p $@
|