b0217bd7a7d81cd89eb6c10d1081ddcb568f1dae
[dcpomatic.git] / doc / manual / Makefile
1 # DCP-o-matic manual makefile
2
3 INKSCAPE = ~/Applications/inkscape
4 LIBDCP = ~/src/libdcp
5
6
7 all:    html pdf
8
9 DIAGRAMS := file-structure.svg 3d-left-right.svg 3d-top-bottom.svg timecode.svg pipeline1.svg pipeline2.svg \
10             pipeline3.svg pipeline4.svg burn-in.svg discrete.svg dcp-copy.svg dcp-refer.svg reels-by-video.svg \
11             crypt.svg
12
13 SCREENSHOTS := file-new.pdf new-film.pdf video-select-content-file.pdf \
14                still-select-content-file.pdf examine-content.pdf timing-tab.pdf \
15                calculate-audio-gain.pdf add-file.pdf dcp-tab.pdf colour-conversion.pdf \
16                prefs-email.pdf prefs-kdm-email.pdf prefs-general.pdf prefs-tms.pdf prefs-cover-sheet.pdf \
17                prefs-advanced.pdf prefs-defaults.pdf prefs-servers.pdf prefs-keys.pdf \
18                prefs-notifications.pdf timeline1.pdf timed-text-tab.pdf \
19                making-dcp.pdf filters.pdf video-tab.pdf audio-tab.pdf \
20                audio-plot.pdf audio-map-eg1.pdf audio-map-eg2.pdf audio-map-eg3.pdf kdm.pdf \
21                kdm-creator.pdf export.pdf advanced-content.pdf disk-writer-notice.pdf
22
23 XML := dcpomatic.xml
24
25 #
26 # For the HTML: convert PDF screenshots to PNG and copy into html/screenshots, scaling some.
27 #
28 html/screenshots/%.png: screenshots/%.pdf
29         mkdir -p html/screenshots
30         pdftoppm $< $(basename $@) -png -f 1 -singlefile -rx 80 -ry 80
31
32
33 # For LaTeX/PDF: crop some of the PDF screenshots; use others as-is
34 screenshots/%.pdf: raw-screenshots/%.pdf
35         cp $< $@
36
37 screenshots/prefs-general.pdf: raw-screenshots/prefs-general.pdf
38         python3 pdf_crop_by.py $< $@ 0 400 0 0
39
40 screenshots/prefs-defaults.pdf: raw-screenshots/prefs-defaults.pdf
41         python3 pdf_crop_by.py $< $@ 0 400 0 0
42
43 screenshots/prefs-servers.pdf: raw-screenshots/prefs-servers.pdf
44         python3 pdf_crop_by.py $< $@ 0 700 0 0
45
46 screenshots/prefs-keys.pdf: raw-screenshots/prefs-keys.pdf
47         python3 pdf_crop_by.py $< $@ 0 600 0 0
48
49 screenshots/prefs-tms.pdf: raw-screenshots/prefs-tms.pdf
50         python3 pdf_crop_by.py $< $@ 0 600 0 0
51
52 screenshots/prefs-email.pdf: raw-screenshots/prefs-email.pdf
53         python3 pdf_crop_by.py $< $@ 0 700 0 0
54
55 screenshots/prefs-cover-sheet.pdf: raw-screenshots/prefs-cover-sheet.pdf
56         python3 pdf_crop_by.py $< $@ 0 600 0 0
57
58 screenshots/examine-content.pdf: raw-screenshots/examine-content.pdf
59         python3 pdf_crop_by.py $< $@ 460 270 200 580
60
61 screenshots/audio-tab.pdf: raw-screenshots/audio-tab.pdf
62         python3 pdf_crop_by.py $< $@ 0 0 1480 420
63
64 screenshots/timing-tab.pdf: raw-screenshots/timing-tab.pdf
65         python3 pdf_crop_by.py $< $@ 0 100 1475 420
66
67 screenshots/timed-text-tab.pdf: raw-screenshots/timed-text-tab.pdf
68         python3 pdf_crop_by.py $< $@ 0 50 1480 420
69
70 screenshots/video-tab.pdf: raw-screenshots/video-tab.pdf
71         python3 pdf_crop_by.py $< $@ 0 0 1480 365
72
73 screenshots/add-file.pdf: raw-screenshots/add-file.pdf
74         python3 pdf_crop_by.py $< $@ 0 600 1210 0
75
76 screenshots/making-dcp.pdf: raw-screenshots/making-dcp.pdf
77         python3 pdf_crop_by.py $< $@ 470 190 300 700
78
79 screenshots/audio-map-eg1.pdf: raw-screenshots/audio-map-eg1.pdf
80         python3 pdf_crop_by.py $< $@ 10 195 1350 630
81
82 screenshots/audio-map-eg2.pdf: raw-screenshots/audio-map-eg2.pdf
83         python3 pdf_crop_by.py $< $@ 10 195 1350 630
84
85 screenshots/audio-map-eg3.pdf: raw-screenshots/audio-map-eg3.pdf
86         python3 pdf_crop_by.py $< $@ 10 75 1350 630
87
88 screenshots/dcp-tab.pdf: raw-screenshots/dcp-tab.pdf
89         python3 pdf_crop_by.py $< $@ 0 250 1480 30
90
91
92 # For HTML: convert diagrams from SVG to PNG
93 diagrams/%.png: diagrams/%.svg
94         $(INKSCAPE) $< --export-type=png --export-filename=$@ --export-area-drawing
95
96 # For LaTeX/PDF: convert diagrams from SVG to PDF
97 diagrams/%.pdf: diagrams/%.svg
98         $(INKSCAPE) $< --export-type=pdf --export-filename=$@ --export-area-drawing
99
100 config.xml:     ../../src/lib/config.cc config.py
101         python3 config.py ../../src/lib/config.cc > config.xml
102
103 SHORTCUTS :=    ../../src/tools/dcpomatic.cc
104
105 shortcuts.xml:  $(SHORTCUTS) shortcuts.py
106         python3 shortcuts.py $(SHORTCUTS) > $@
107
108 LIBDCP_DEPS = $(LIBDCP)/src/verify_j2k.cc $(LIBDCP)/src/dcp.cc $(LIBDCP)/src/verify.cc
109
110 verify_errors.xml:      verifier.py $(LIBDCP_DEPS)
111         python3 verifier.py $(LIBDCP) ERROR > $@
112
113 verify_bv21_errors.xml: verifier.py $(LIBDCP_DEPS)
114         python3 verifier.py $(LIBDCP) BV21_ERROR > $@
115
116 verify_warnings.xml:    verifier.py $(LIBDCP_DEPS)
117         python3 verifier.py $(LIBDCP) WARNING > $@
118
119
120 #
121 # HTML
122 #
123
124 html:   $(XML) config.xml shortcuts.xml verify_errors.xml verify_bv21_errors.xml verify_warnings.xml \
125         dcpomatic-html.xsl extensions-html.ent dcpomatic.css dcpomatic_create.xml dcpomatic_cli.xml dcpomatic_kdm_cli.xml \
126         $(subst .pdf,.png,$(addprefix html/screenshots/,$(SCREENSHOTS))) \
127         $(subst .svg,.png,$(addprefix diagrams/,$(DIAGRAMS))) \
128
129 #       The DocBook needs to know what file extensions to look for
130 #       for screenshots and diagrams; use the correct file to tell it.
131         cp extensions-html.ent extensions.ent
132
133 #       DocBoox -> html
134         xmlto html -m dcpomatic-html.xsl dcpomatic.xml --skip-validation -o html
135
136 #       Copy graphics and CSS in
137         mkdir -p html/diagrams
138         cp diagrams/*.png html/diagrams
139         cp dcpomatic.css html
140
141 #
142 # PDF
143 #
144
145 pdf:    $(XML) config.xml shortcuts.xml verify_errors.xml verify_bv21_errors.xml verify_warnings.xml \
146         dcpomatic-pdf.xsl extensions-pdf.ent dcpomatic_create.xml dcpomatic_cli.xml dcpomatic_kdm_cli.xml \
147         $(addprefix screenshots/,$(SCREENSHOTS)) \
148         $(subst .svg,.pdf,$(addprefix diagrams/,$(DIAGRAMS)))
149
150 #       The DocBook needs to know what file extensions to look for
151 #       for screenshots and diagrams; use the correct file to tell it.
152         cp extensions-pdf.ent extensions.ent
153
154         mkdir -p pdf
155
156         dblatex -p dcpomatic-pdf.xsl -s dcpomatic.sty -r pptex.py -T native dcpomatic.xml -t pdf -o pdf/dcpomatic.pdf
157
158
159 #
160 # LaTeX (handy for debugging)
161 #
162
163 tex:    $(XML) config.xml dcpomatic-pdf.xsl extensions-pdf.ent
164
165 #       The DocBook needs to know what file extensions to look for
166 #       for screenshots and diagrams; use the correct file to tell it.
167         cp extensions-pdf.ent extensions.ent
168
169         mkdir -p tex
170
171 #       -P <foo> removes the revhistory table
172         dblatex -P doc.collab.show=0 -P latex.output.revhistory=0 -p dcpomatic-pdf.xsl -s dcpomatic.sty -r pptex.py -T native dcpomatic.xml -t tex -o tex/dcpomatic.tex
173
174
175 clean:; rm -rf html pdf diagrams/*.pdf diagrams/*.png graphics/*.png *.aux dcpomatic.cb dcpomatic.cb2 dcpomatic.glo dcpomatic.idx dcpomatic.ilg
176         rm -rf dcpomatic.ind dcpomatic.lof dcpomatic.log dcpomatic.tex dcpomatic.toc extensions.ent dcpomatic.out