xref: /Universal-ctags/man/GNUmakefile.am (revision 72ae698186a95e6b87de4fb39d82b76eb3190c03)
1*72ae6981SMasatake YAMATO#
2*72ae6981SMasatake YAMATO# This is a Makefile.am read by the Autotools.
3*72ae6981SMasatake YAMATO# GNU Make is needed.
4*72ae6981SMasatake YAMATO#
5*72ae6981SMasatake YAMATO#	Copyright (c) 2017, Masatake YAMMATO
6*72ae6981SMasatake YAMATO#	Copyright (c) 2017, Red Hat, Inc.
7*72ae6981SMasatake YAMATO#
8*72ae6981SMasatake YAMATO#	This source code is released for free distribution under the terms
9*72ae6981SMasatake YAMATO#	of the GNU General Public License version 2 or (at your option) any
10*72ae6981SMasatake YAMATO#	later version.
11*72ae6981SMasatake YAMATO#
12*72ae6981SMasatake YAMATO
13*72ae6981SMasatake YAMATO# Note: RST2MAN, RST2HTML, RST2PDF, and RST2MAN_OPTIONS are defined by configure.ac
14*72ae6981SMasatake YAMATORST2MAN_FLAGS = $(RST2MAN_OPTIONS)
15*72ae6981SMasatake YAMATORST2HTML_FLAGS =
16*72ae6981SMasatake YAMATORST2PDF_FLAGS =
17*72ae6981SMasatake YAMATODOCS_DIR = ../docs/man
18*72ae6981SMasatake YAMATO
19*72ae6981SMasatake YAMATOSUFFIXES = .rst .html .pdf .in
20*72ae6981SMasatake YAMATO
21*72ae6981SMasatake YAMATO# The man_MANS or dist_man_MANS requires conventional file names for man files.
22*72ae6981SMasatake YAMATO# For example `$(basename $(files))` is not accepted.
23*72ae6981SMasatake YAMATOGEN_IN_MAN_FILES = \
24*72ae6981SMasatake YAMATO	ctags.1 \
25*72ae6981SMasatake YAMATO	ctags-optlib.7 \
26*72ae6981SMasatake YAMATO	ctags-incompatibilities.7 \
27*72ae6981SMasatake YAMATO	ctags-client-tools.7 \
28*72ae6981SMasatake YAMATO	ctags-faq.7 \
29*72ae6981SMasatake YAMATO	\
30*72ae6981SMasatake YAMATO	ctags-lang-gdscript.7 \
31*72ae6981SMasatake YAMATO	ctags-lang-iPythonCell.7 \
32*72ae6981SMasatake YAMATO	ctags-lang-julia.7 \
33*72ae6981SMasatake YAMATO	ctags-lang-python.7 \
34*72ae6981SMasatake YAMATO	ctags-lang-tcl.7 \
35*72ae6981SMasatake YAMATO	ctags-lang-verilog.7 \
36*72ae6981SMasatake YAMATO	ctags-lang-inko.7 \
37*72ae6981SMasatake YAMATO	ctags-lang-r.7 \
38*72ae6981SMasatake YAMATO	ctags-lang-rmarkdown.7 \
39*72ae6981SMasatake YAMATO	ctags-lang-sql.7 \
40*72ae6981SMasatake YAMATO	ctags-lang-elm.7 \
41*72ae6981SMasatake YAMATO	\
42*72ae6981SMasatake YAMATO	readtags.1 \
43*72ae6981SMasatake YAMATO	tags.5 \
44*72ae6981SMasatake YAMATO	\
45*72ae6981SMasatake YAMATO	$(NULL)
46*72ae6981SMasatake YAMATO
47*72ae6981SMasatake YAMATOman_pages  = $(GEN_IN_MAN_FILES)
48*72ae6981SMasatake YAMATOman_in_files = $(addsuffix .in,$(man_pages))
49*72ae6981SMasatake YAMATOrst_files  = $(addsuffix .rst,$(man_pages))
50*72ae6981SMasatake YAMATOhtml_pages = $(addsuffix .html,$(man_pages))
51*72ae6981SMasatake YAMATOpdf_pages  = $(addsuffix .pdf,$(man_pages))
52*72ae6981SMasatake YAMATOdoc_files  = $(addprefix $(DOCS_DIR)/,$(rst_files))
53*72ae6981SMasatake YAMATO
54*72ae6981SMasatake YAMATO# for automake
55*72ae6981SMasatake YAMATO# generate man pages only when rst2man is installed
56*72ae6981SMasatake YAMATOif HAVE_RST2MAN
57*72ae6981SMasatake YAMATOman_MANS = $(man_pages)
58*72ae6981SMasatake YAMATOendif
59*72ae6981SMasatake YAMATOEXTRA_DIST = README $(addsuffix .rst.in,$(GEN_IN_MAN_FILES)) $(man_in_files)
60*72ae6981SMasatake YAMATOCLEANFILES = $(man_pages) $(addsuffix .rst,$(GEN_IN_MAN_FILES)) $(html_pages) $(pdf_pages)
61*72ae6981SMasatake YAMATOMAINTAINERCLEANFILES =  $(man_in_files)
62*72ae6981SMasatake YAMATO
63*72ae6981SMasatake YAMATO.PHONY: man man-in html pdf update-docs clean-docs
64*72ae6981SMasatake YAMATO
65*72ae6981SMasatake YAMATOall-am: update-docs
66*72ae6981SMasatake YAMATO
67*72ae6981SMasatake YAMATOman: $(man_pages)
68*72ae6981SMasatake YAMATOman-in: $(man_in_files)
69*72ae6981SMasatake YAMATOhtml: $(html_pages)
70*72ae6981SMasatake YAMATOpdf: $(pdf_pages)
71*72ae6981SMasatake YAMATO
72*72ae6981SMasatake YAMATO# use `[@]` not to be replaced by automake
73*72ae6981SMasatake YAMATOREPLACE_CONF_VARS =	sed \
74*72ae6981SMasatake YAMATO		-e s/[@]CTAGS_NAME_EXECUTABLE[@]/ctags/g \
75*72ae6981SMasatake YAMATO		-e s/[@]ETAGS_NAME_EXECUTABLE[@]/etags/g \
76*72ae6981SMasatake YAMATO		-e s/[@]VERSION[@]/$(VERSION)/g
77*72ae6981SMasatake YAMATO
78*72ae6981SMasatake YAMATOrst2man_verbose    = $(rst2man_verbose_@AM_V@)
79*72ae6981SMasatake YAMATOrst2man_verbose_   = $(rst2man_verbose_@AM_DEFAULT_V@)
80*72ae6981SMasatake YAMATOrst2man_verbose_0  = @echo RST2MAN "   $@";
81*72ae6981SMasatake YAMATO
82*72ae6981SMasatake YAMATOrst2html_verbose   = $(rst2html_verbose_@AM_V@)
83*72ae6981SMasatake YAMATOrst2html_verbose_  = $(rst2html_verbose_@AM_DEFAULT_V@)
84*72ae6981SMasatake YAMATOrst2html_verbose_0 = @echo RST2HTML "  $@";
85*72ae6981SMasatake YAMATO
86*72ae6981SMasatake YAMATOrst2pdf_verbose    = $(rst2pdf_verbose_@AM_V@)
87*72ae6981SMasatake YAMATOrst2pdf_verbose_   = $(rst2pdf_verbose_@AM_DEFAULT_V@)
88*72ae6981SMasatake YAMATOrst2pdf_verbose_0  = @echo RST2MAN "   $@";
89*72ae6981SMasatake YAMATO
90*72ae6981SMasatake YAMATOsed_verbose        = $(sed_verbose_@AM_V@)
91*72ae6981SMasatake YAMATOsed_verbose_       = $(sed_verbose_@AM_DEFAULT_V@)
92*72ae6981SMasatake YAMATOsed_verbose_0      = @echo SED "       $@";
93*72ae6981SMasatake YAMATO
94*72ae6981SMasatake YAMATOrm_verbose         = $(rm_verbose_@AM_V@)
95*72ae6981SMasatake YAMATOrm_verbose_        = $(rm_verbose_@AM_DEFAULT_V@)
96*72ae6981SMasatake YAMATOrm_verbose_0       = @echo RM "        $@";
97*72ae6981SMasatake YAMATO
98*72ae6981SMasatake YAMATO#
99*72ae6981SMasatake YAMATO# generate man
100*72ae6981SMasatake YAMATO#
101*72ae6981SMasatake YAMATO# generate *.in to be distributed
102*72ae6981SMasatake YAMATO%.in: %.rst.in
103*72ae6981SMasatake YAMATOif HAVE_RST2MAN
104*72ae6981SMasatake YAMATO	$(rst2man_verbose)$(RST2MAN) $(RST2MAN_FLAGS) $< > $@
105*72ae6981SMasatake YAMATOelse
106*72ae6981SMasatake YAMATO	$(error Cannot make $@: rst2man is not installed)
107*72ae6981SMasatake YAMATOendif
108*72ae6981SMasatake YAMATO
109*72ae6981SMasatake YAMATO%: %.in
110*72ae6981SMasatake YAMATO	$(sed_verbose)$(REPLACE_CONF_VARS) < $< > $@
111*72ae6981SMasatake YAMATO
112*72ae6981SMasatake YAMATO#
113*72ae6981SMasatake YAMATO# generate HTML and PDF
114*72ae6981SMasatake YAMATO#
115*72ae6981SMasatake YAMATO%.rst: %.rst.in
116*72ae6981SMasatake YAMATO	$(sed_verbose)$(REPLACE_CONF_VARS) < $< > $@
117*72ae6981SMasatake YAMATO
118*72ae6981SMasatake YAMATO%.html: %.rst
119*72ae6981SMasatake YAMATOif HAVE_RST2HTML
120*72ae6981SMasatake YAMATO	$(rst2html_verbose)$(RST2HTML) $(RST2HTML_FLAGS) $< > $@
121*72ae6981SMasatake YAMATOelse
122*72ae6981SMasatake YAMATO	$(error Cannot make $@: rst2html is not installed)
123*72ae6981SMasatake YAMATOendif
124*72ae6981SMasatake YAMATO
125*72ae6981SMasatake YAMATO%.pdf: %.rst
126*72ae6981SMasatake YAMATOif HAVE_RST2PDF
127*72ae6981SMasatake YAMATO	$(rst2pdf_verbose)$(RST2PDF) $(RST2PDF_FLAGS) $< -o $@
128*72ae6981SMasatake YAMATOelse
129*72ae6981SMasatake YAMATO	$(error Cannot make $@: rst2pdf is not installed)
130*72ae6981SMasatake YAMATOendif
131*72ae6981SMasatake YAMATO
132*72ae6981SMasatake YAMATO#
133*72ae6981SMasatake YAMATO# generate $(DOCS_DIR)/*.rst for Sphinx document
134*72ae6981SMasatake YAMATO#
135*72ae6981SMasatake YAMATOupdate-docs: $(doc_files)
136*72ae6981SMasatake YAMATO
137*72ae6981SMasatake YAMATO# Convert the names of man page files (without suffix) to man page citations.
138*72ae6981SMasatake YAMATO#   ctags.1 tags.5 ... => ctags(1) tags(5) ...
139*72ae6981SMasatake YAMATOcites := ${subst .,(,${addsuffix ),${man_pages}}}
140*72ae6981SMasatake YAMATO
141*72ae6981SMasatake YAMATO# Convert the man page citations to sed patterns for making hyperlinks.
142*72ae6981SMasatake YAMATO#   ctags(1) tags(5) ...
143*72ae6981SMasatake YAMATO#     => -e 's/\<ctags(1)/:ref:`& <&>`/g' -e 's/\<ctags(5)/:ref:`& <&>`/g' ...
144*72ae6981SMasatake YAMATOif HAS_GNU_SED
145*72ae6981SMasatake YAMATOreppat := $(foreach m,$(cites),-e 's/\<$(m)/:ref:`& <&>`/g')
146*72ae6981SMasatake YAMATOelse
147*72ae6981SMasatake YAMATOreppat := $(foreach m,$(cites),-e 's/[[:<:]]$(m)/:ref:`& <&>`/g')
148*72ae6981SMasatake YAMATOendif
149*72ae6981SMasatake YAMATO
150*72ae6981SMasatake YAMATO# Delete the line "------" in the first 10 lines of $(DOCS_DIR)/*.rst to
151*72ae6981SMasatake YAMATO# suppress unnecessary section indices.
152*72ae6981SMasatake YAMATO$(DOCS_DIR)/%.rst: %.rst
153*72ae6981SMasatake YAMATO	@$(MKDIR_P) $(DOCS_DIR)
154*72ae6981SMasatake YAMATO	$(sed_verbose)sed $(reppat) -e '1,10s/^-*$$//' < $< > $@
155*72ae6981SMasatake YAMATO
156*72ae6981SMasatake YAMATO# remove generated files to be commited (used for `make checkgen`)
157*72ae6981SMasatake YAMATOclean-local: clean-docs
158*72ae6981SMasatake YAMATOclean-docs:
159*72ae6981SMasatake YAMATO	$(rm_verbose)rm -f $(man_in_files) $(doc_files)
160