]> git.proxmox.com Git - proxmox-backup.git/blob - docs/Makefile
sort dependencies
[proxmox-backup.git] / docs / Makefile
1 include ../defines.mk
2
3 GENERATED_SYNOPSIS := \
4 proxmox-tape/synopsis.rst \
5 proxmox-backup-client/synopsis.rst \
6 proxmox-backup-client/catalog-shell-synopsis.rst \
7 proxmox-backup-manager/synopsis.rst \
8 proxmox-backup-debug/synopsis.rst \
9 proxmox-file-restore/synopsis.rst \
10 pxar/synopsis.rst \
11 pmtx/synopsis.rst \
12 pmt/synopsis.rst \
13 config/media-pool/config.rst \
14 config/tape/config.rst \
15 config/tape-job/config.rst \
16 config/user/config.rst \
17 config/remote/config.rst \
18 config/sync/config.rst \
19 config/verification/config.rst \
20 config/acl/roles.rst \
21 config/datastore/config.rst
22
23 MAN1_PAGES := \
24 pxar.1 \
25 pmtx.1 \
26 pmt.1 \
27 proxmox-tape.1 \
28 proxmox-backup-proxy.1 \
29 proxmox-backup-client.1 \
30 proxmox-backup-manager.1 \
31 proxmox-file-restore.1 \
32 proxmox-backup-debug.1
33
34 MAN5_PAGES := \
35 media-pool.cfg.5 \
36 tape.cfg.5 \
37 tape-job.cfg.5 \
38 acl.cfg.5 \
39 user.cfg.5 \
40 remote.cfg.5 \
41 sync.cfg.5 \
42 verification.cfg.5 \
43 datastore.cfg.5
44
45 PRUNE_SIMULATOR_FILES := \
46 prune-simulator/index.html \
47 prune-simulator/documentation.html \
48 prune-simulator/clear-trigger.png \
49 prune-simulator/prune-simulator.js
50
51 PRUNE_SIMULATOR_JS_SOURCE := \
52 /usr/share/javascript/proxmox-widget-toolkit-dev/Toolkit.js \
53 prune-simulator/prune-simulator_source.js
54
55 LTO_BARCODE_JS_SOURCE := \
56 /usr/share/javascript/proxmox-widget-toolkit-dev/Toolkit.js \
57 lto-barcode/code39.js \
58 lto-barcode/prefix-field.js \
59 lto-barcode/label-style.js \
60 lto-barcode/tape-type.js \
61 lto-barcode/paper-size.js \
62 lto-barcode/page-layout.js \
63 lto-barcode/page-calibration.js \
64 lto-barcode/label-list.js \
65 lto-barcode/label-setup.js \
66 lto-barcode/lto-barcode.js
67
68 LTO_BARCODE_FILES := \
69 lto-barcode/index.html \
70 lto-barcode/lto-barcode-generator.js
71
72 API_VIEWER_SOURCES= \
73 api-viewer/index.html \
74 api-viewer/apidoc.js
75
76 API_VIEWER_FILES := \
77 api-viewer/apidata.js \
78 /usr/share/javascript/proxmox-widget-toolkit-dev/APIViewer.js \
79
80 # Sphinx documentation setup
81 SPHINXOPTS =
82 SPHINXBUILD = sphinx-build
83 BUILDDIR = output
84
85 ifeq ($(BUILD_MODE), release)
86 COMPILEDIR := ../target/release
87 SPHINXOPTS += -t release
88 else
89 COMPILEDIR := ../target/debug
90 SPHINXOPTS += -t devbuild
91 endif
92
93 # Sphinx internal variables.
94 ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) .
95
96 all: ${MAN1_PAGES} ${MAN5_PAGES}
97
98 config/%/config.rst: ${COMPILEDIR}/docgen
99 ${COMPILEDIR}/docgen $*.cfg >$@
100
101 config/acl/roles.rst: ${COMPILEDIR}/docgen
102 ${COMPILEDIR}/docgen "config::acl::Role" >$@
103
104 %/synopsis.rst: ${COMPILEDIR}/%
105 $< printdoc > $@
106
107 proxmox-backup-client/catalog-shell-synopsis.rst: ${COMPILEDIR}/dump-catalog-shell-cli
108 ${COMPILEDIR}/dump-catalog-shell-cli > proxmox-backup-client/catalog-shell-synopsis.rst
109
110 ${MAN1_PAGES} ${MAN5_PAGES}: man-pages
111
112 .PHONY: man-pages
113 man-pages: ${GENERATED_SYNOPSIS}
114 ${SPHINXBUILD} ${SPHINXOPTS} -b man ./ ${BUILDDIR}/man
115
116 .PHONY: onlinehelpinfo
117 onlinehelpinfo:
118 @echo "Generating OnlineHelpInfo.js..."
119 $(SPHINXBUILD) -b proxmox-scanrefs -Q $(ALLSPHINXOPTS) $(BUILDDIR)/scanrefs
120 @echo "Build finished. OnlineHelpInfo.js is in $(BUILDDIR)/scanrefs."
121
122 api-viewer/apidata.js: ${COMPILEDIR}/docgen
123 ${COMPILEDIR}/docgen apidata.js >$@
124
125 api-viewer/apidoc.js: ${API_VIEWER_FILES}
126 cat ${API_VIEWER_FILES} >$@.tmp
127 mv $@.tmp $@
128
129 prune-simulator/prune-simulator.js: ${PRUNE_SIMULATOR_JS_SOURCE}
130 cat ${PRUNE_SIMULATOR_JS_SOURCE} >$@.tmp
131 mv $@.tmp $@
132
133 lto-barcode/lto-barcode-generator.js: ${LTO_BARCODE_JS_SOURCE}
134 cat ${LTO_BARCODE_JS_SOURCE} >$@.tmp
135 mv $@.tmp $@
136
137 .PHONY: html
138 html: ${GENERATED_SYNOPSIS} images/proxmox-logo.svg custom.css conf.py ${PRUNE_SIMULATOR_FILES} ${LTO_BARCODE_FILES} ${API_VIEWER_SOURCES}
139 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
140 install -m 0644 custom.js custom.css images/proxmox-logo.svg $(BUILDDIR)/html/_static/
141 install -dm 0755 $(BUILDDIR)/html/prune-simulator
142 install -m 0644 ${PRUNE_SIMULATOR_FILES} $(BUILDDIR)/html/prune-simulator
143 install -dm 0755 $(BUILDDIR)/html/lto-barcode
144 install -m 0644 ${LTO_BARCODE_FILES} $(BUILDDIR)/html/lto-barcode
145 install -dm 0755 $(BUILDDIR)/html/api-viewer
146 install -m 0644 ${API_VIEWER_SOURCES} $(BUILDDIR)/html/api-viewer
147 @echo
148 @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
149
150 .PHONY: latexpdf
151 latexpdf: ${GENERATED_SYNOPSIS}
152 @echo "Requires python3-sphinx, texlive-xetex, xindy and texlive-fonts-extra"
153 $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
154 @echo "Running LaTeX files through xelatex..."
155 $(MAKE) -C $(BUILDDIR)/latex all-pdf
156 @echo "xelatex finished; the PDF files are in $(BUILDDIR)/latex."
157
158 .PHONY: epub3
159 epub3: ${GENERATED_SYNOPSIS}
160 $(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
161 @echo
162 @echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
163
164 clean:
165 rm -r -f *~ *.1 ${BUILDDIR} ${GENERATED_SYNOPSIS} api-viewer/apidata.js
166 rm -f api-viewer/apidoc.js lto-barcode/lto-barcode-generator.js prune-simulator/prune-simulator.js
167
168 install_manual_pages: man-pages
169 install -dm755 $(DESTDIR)$(MAN1DIR)
170 for i in ${MAN1_PAGES}; do install -m755 ${BUILDDIR}/man/$$i $(DESTDIR)$(MAN1DIR)/ ; done
171 install -dm755 $(DESTDIR)$(MAN5DIR)
172 for i in ${MAN5_PAGES}; do install -m755 ${BUILDDIR}/man/$$i $(DESTDIR)$(MAN5DIR)/ ; done
173
174 install_html: html
175 install -dm755 $(DESTDIR)$(DOCDIR)
176 rsync -a ${BUILDDIR}/html $(DESTDIR)$(DOCDIR)
177
178 install_pdf: latexpdf
179 install -dm755 $(DESTDIR)$(DOCDIR)
180 install -m 0644 output/latex/ProxmoxBackup.pdf $(DESTDIR)$(DOCDIR)/proxmox-backup.pdf
181
182 ifneq ($(filter nodoc,$(DEB_BUILD_PROFILES)),)
183
184 install: install_manual_pages
185
186 else
187
188 install: install_manual_pages install_html install_pdf
189
190 endif