1# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
2#
3# SPDX-License-Identifier: MPL-2.0
4#
5# This Source Code Form is subject to the terms of the Mozilla Public
6# License, v. 2.0.  If a copy of the MPL was not distributed with this
7# file, you can obtain one at https://mozilla.org/MPL/2.0/.
8#
9# See the COPYRIGHT file distributed with this work for additional
10# information regarding copyright ownership.
11
12srcdir =	@srcdir@
13VPATH =		@srcdir@
14top_srcdir =	@top_srcdir@
15abs_srcdir =	@abs_srcdir@
16builddir =	@builddir@
17top_builddir =	@top_builddir@
18
19@BIND9_MAKE_RULES@
20
21man1_MANS =			\
22	arpaname.1		\
23	delv.1			\
24	dig.1			\
25	host.1			\
26	mdig.1			\
27	named-rrchecker.1	\
28	nslookup.1		\
29	nsupdate.1
30
31man5_MANS =			\
32	named.conf.5		\
33	rndc.conf.5
34
35man8_MANS =			\
36	ddns-confgen.8		\
37	dnssec-cds.8		\
38	dnssec-checkds.8	\
39	dnssec-coverage.8	\
40	dnssec-dsfromkey.8	\
41	dnssec-importkey.8	\
42	dnssec-keyfromlabel.8	\
43	dnssec-keygen.8		\
44	dnssec-keymgr.8		\
45	dnssec-revoke.8		\
46	dnssec-settime.8	\
47	dnssec-signzone.8	\
48	dnssec-verify.8		\
49	filter-aaaa.8		\
50	named-checkconf.8	\
51	named-checkzone.8	\
52	named-journalprint.8	\
53	named.8			\
54	nsec3hash.8		\
55	rndc-confgen.8		\
56	rndc.8
57
58MANPAGES_RST =			\
59	arpaname.rst		\
60	ddns-confgen.rst	\
61	delv.rst		\
62	dig.rst			\
63	dnssec-cds.rst		\
64	dnssec-checkds.rst	\
65	dnssec-coverage.rst	\
66	dnssec-dsfromkey.rst	\
67	dnssec-importkey.rst	\
68	dnssec-keyfromlabel.rst	\
69	dnssec-keygen.rst	\
70	dnssec-keymgr.rst	\
71	dnssec-revoke.rst	\
72	dnssec-settime.rst	\
73	dnssec-signzone.rst	\
74	dnssec-verify.rst	\
75	dnstap-read.rst		\
76	filter-aaaa.rst		\
77	host.rst		\
78	mdig.rst		\
79	named-checkconf.rst	\
80	named-checkzone.rst	\
81	named-journalprint.rst	\
82	named-nzd2nzf.rst	\
83	named-rrchecker.rst	\
84	named.conf.rst		\
85	named.rst		\
86	nsec3hash.rst		\
87	nslookup.rst		\
88	nsupdate.rst		\
89	rndc-confgen.rst	\
90	rndc.conf.rst		\
91	rndc.rst		\
92	pkcs11-destroy.rst	\
93	pkcs11-keygen.rst	\
94	pkcs11-list.rst		\
95	pkcs11-tokens.rst
96
97MANPAGES_IN = \
98	arpaname.1in		\
99	ddns-confgen.8in	\
100	delv.1in		\
101	dig.1in			\
102	dnssec-cds.8in		\
103	dnssec-checkds.8in	\
104	dnssec-coverage.8in	\
105	dnssec-dsfromkey.8in	\
106	dnssec-importkey.8in	\
107	dnssec-keyfromlabel.8in	\
108	dnssec-keygen.8in	\
109	dnssec-keymgr.8in	\
110	dnssec-revoke.8in	\
111	dnssec-settime.8in	\
112	dnssec-signzone.8in	\
113	dnssec-verify.8in	\
114	dnstap-read.1in		\
115	filter-aaaa.8in		\
116	host.1in		\
117	mdig.1in		\
118	named-checkconf.8in	\
119	named-checkzone.8in	\
120	named-journalprint.8in	\
121	named-nzd2nzf.8in	\
122	named-rrchecker.1in	\
123	named.conf.5in		\
124	named.8in		\
125	nsec3hash.8in		\
126	nslookup.1in		\
127	nsupdate.1in		\
128	rndc-confgen.8in	\
129	rndc.conf.5in		\
130	rndc.8in		\
131	pkcs11-destroy.8in	\
132	pkcs11-keygen.8in	\
133	pkcs11-list.8in		\
134	pkcs11-tokens.8in
135
136dnstap_man1_MANS =		\
137	dnstap-read.1
138
139nzd_man8_MANS =			\
140	named-nzd2nzf.8
141
142pkcs11_man8_MANS =		\
143	pkcs11-destroy.8	\
144	pkcs11-keygen.8		\
145	pkcs11-list.8		\
146	pkcs11-tokens.8
147
148BIND9_VERSION=@BIND9_VERSION@
149RELEASE_DATE=@RELEASE_DATE@
150BIND9_VERSIONSTRING=@BIND9_VERSIONSTRING@
151
152# You can set these variables from the command line.
153SPHINXBUILD = @SPHINX_BUILD@
154SPHINXBUILDDIR = ${builddir}/_build
155
156common_SPHINXOPTS =		\
157	-W			\
158	-a			\
159	-v			\
160	-c "${abs_srcdir}"
161
162ALLSPHINXOPTS =					\
163	$(common_SPHINXOPTS)			\
164	-D version="${BIND9_VERSION}"		\
165	-D today="${RELEASE_DATE}"		\
166	-D release="${BIND9_VERSIONSTRING}"	\
167	$(SPHINXOPTS)				\
168	${srcdir}
169
170man_SPHINXOPTS =				\
171	$(common_SPHINXOPTS)			\
172	-D version="@""BIND9_VERSION""@"	\
173	-D today="@""RELEASE_DATE""@"		\
174	-D release="@""BIND9_VERSIONSTRING""@"	\
175	$(SPHINXOPTS)				\
176	${srcdir}
177
178# Put it first so that "make" without argument just builds manpages
179all: man
180	@:
181
182man:: ootsetup $(man1_MANS) $(man5_MANS) $(man8_MANS) @DNSTAP_MANS@ @NZD_MANS@ @PKCS11_MANS@
183
184doc:: @HTMLTARGET@ @PDFTARGET@
185
186html dirhtml:
187	$(SPHINXBUILD) -b $@ -d "$(SPHINXBUILDDIR)"/.doctrees/$@ $(ALLSPHINXOPTS) "$(SPHINXBUILDDIR)"/$@
188
189# copy in out-of-tree files in case sphinx-build isn't available
190.NOTPARALLEL:
191ootsetup: $(MANPAGES_IN)
192	for man in $(MANPAGES_IN); do \
193	  [ -e "$$man" ] || cp -f ${srcdir}/"$$man" .; \
194	done
195
196$(MANPAGES_IN): $(MANPAGES_RST)
197	$(SPHINXBUILD) -b man -d "$(SPHINXBUILDDIR)"/.doctrees/$@ $(man_SPHINXOPTS) "$(SPHINXBUILDDIR)"/man
198	-for man in $(MANPAGES_IN); do \
199	  [ -e "$(SPHINXBUILDDIR)"/man/"$$(basename $$man in)" ] && \
200	    cp -f "$(SPHINXBUILDDIR)"/man/"$$(basename $$man in)" "$$man"; \
201	done
202
203man_SUBST = sed							\
204	-e 's,[@]BIND9_VERSION[@],$(BIND9_VERSION),'			\
205	-e 's,[@]RELEASE_DATE[@],$(RELEASE_DATE),'			\
206	-e 's,[@]BIND9_VERSION_STRING[@],$(BIND9_VERSION_STRING),'	\
207	-e 's,[@]sysconfdir[@],$(sysconfdir),'				\
208	-e 's,[@]plugindir[@],$(plugindir),'
209
210$(man1_MANS): @MANSRCS@
211	for m in $(man1_MANS); do \
212		$(man_SUBST) $${m}in > $$m; \
213	done
214
215$(man5_MANS): @MANSRCS@
216	for m in $(man5_MANS); do \
217		$(man_SUBST) $${m}in > $$m; \
218	done
219
220$(man8_MANS): @MANSRCS@
221	for m in $(man8_MANS); do \
222		$(man_SUBST) $${m}in > $$m; \
223	done
224
225$(dnstap_man1_MANS): @MANSRCS@
226	for m in $(dnstap_man1_MANS); do \
227		$(man_SUBST) $${m}in > $$m; \
228	done
229
230$(nzd_man8_MANS): @MANSRCS@
231	for m in $(nzd_man8_MANS); do \
232		$(man_SUBST) $${m}in > $$m; \
233	done
234
235$(pkcs11_man8_MANS): @MANSRCS@
236	for m in $(pkcs11_man8_MANS); do \
237		$(man_SUBST) $${m}in > $$m; \
238	done
239
240.PHONY: help Makefile doc pdf man
241
242installdirs:
243	$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man1
244	$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man5
245	$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
246
247install:: installdirs
248	for m in $(man1_MANS); do ${INSTALL_DATA} $$m ${DESTDIR}${mandir}/man1/; done
249	for m in $(man5_MANS); do ${INSTALL_DATA} $$m ${DESTDIR}${mandir}/man5/; done
250	for m in $(man8_MANS); do ${INSTALL_DATA} $$m ${DESTDIR}${mandir}/man8/; done
251	( cd ${DESTDIR}${mandir}/man8/; rm -f named-compilezone.8; ${LINK_PROGRAM} named-checkzone.8 named-compilezone.8 )
252	( cd ${DESTDIR}${mandir}/man8/; rm -f tsig-keygen.8; ${LINK_PROGRAM} ddns-confgen.8 tsig-keygen.8 )
253	for m in @DNSTAP_MANS@; do ${INSTALL_DATA} $$m ${DESTDIR}${mandir}/man1/; done
254	for m in @NZD_MANS@; do ${INSTALL_DATA} $$m ${DESTDIR}${mandir}/man8/; done
255	for m in @PKCS11_MANS@; do ${INSTALL_DATA} $$m ${DESTDIR}${mandir}/man8/; done
256
257uninstall::
258	for m in $(man1_MANS); do rm -f ${DESTDIR}${mandir}/man1/$$m; done
259	for m in $(man5_MANS); do rm -f ${DESTDIR}${mandir}/man5/$$m; done
260	for m in $(man8_MANS); do rm -f ${DESTDIR}${mandir}/man8/$$m; done
261	rm -f ${DESTDIR}${mandir}/man8/named-compilezone.8
262	rm -f ${DESTDIR}${mandir}/man8/tsig-keygen.8
263	for m in @DNSTAP_MANS@; do rm -f ${DESTDIR}${mandir}/man1/$$m; done
264	for m in @NZD_MANS@; do rm -f ${DESTDIR}${mandir}/man8/$$m; done
265	for m in @PKCS11_MANS@; do rm -f ${DESTDIR}${mandir}/man8/$$m; done
266
267docclean manclean maintainer-clean::
268	rm -f $(MANPAGES_IN)
269
270clean::
271	-rm -rf $(SPHINXBUILDDIR)
272	-rm -f $(man1_MANS) $(man5_MANS) $(man8_MANS) @DNSTAP_MANS@ @NZD_MANS@ @PKCS11_MANS@
273