1 # Guard against environment variables
10 STGIT_ALL_PY
= $(shell find ..
/stgit
-name
'*.py')
11 STG_COMMANDS
= $(shell $(PYTHON
) ..
/build.py
--commands
)
12 STG_COMMANDS_TXT
= $(patsubst %,stg-
%.txt
,$(STG_COMMANDS
))
13 STGIT_VERSION
= $(shell $(PYTHON
) ..
/build.py
--stgit-version
)
16 MAN1_TXT
+= $(STG_COMMANDS_TXT
)
19 MAN_TXT
= $(filter $(MAN_FILTER
),$(MAN1_TXT
) $(MAN5_TXT
) $(MAN7_TXT
))
21 MAN_TXT
= $(MAN1_TXT
) $(MAN5_TXT
) $(MAN7_TXT
)
22 MAN_FILTER
= $(MAN_TXT
)
25 MAN_XML
= $(patsubst %.txt
,%.xml
,$(MAN_TXT
))
26 MAN_HTML
= $(patsubst %.txt
,%.html
,$(MAN_TXT
))
28 DOC_HTML
=$(patsubst %.txt
,%.html
,$(MAN1_TXT
))
30 ARTICLES_HTML
+= $(patsubst %,%.html
,$(ARTICLES
) $(SP_ARTICLES
))
31 HTML_FILTER ?
= $(ARTICLES_HTML
) $(OBSOLETE_HTML
)
32 DOC_HTML
= $(MAN_HTML
) $(filter $(HTML_FILTER
),$(ARTICLES_HTML
) $(OBSOLETE_HTML
))
34 DOC_MAN1
= $(patsubst %.txt
,%.1,$(filter $(MAN_FILTER
),$(MAN1_TXT
)))
35 DOC_MAN5
= $(patsubst %.txt
,%.5,$(filter $(MAN_FILTER
),$(MAN5_TXT
)))
36 DOC_MAN7
= $(patsubst %.txt
,%.7,$(filter $(MAN_FILTER
),$(MAN7_TXT
)))
38 prefix ?
= $(HOME
)/.local
39 bindir ?
= $(prefix)/bin
40 htmldir ?
= $(prefix)/share
/doc
/stgit
41 infodir ?
= $(prefix)/share
/info
42 pdfdir ?
= $(prefix)/share
/doc
/stgit
43 mandir ?
= $(prefix)/share
/man
44 man1dir = $(mandir)/man1
45 man5dir = $(mandir)/man5
46 man7dir = $(mandir)/man7
51 ASCIIDOC_HTML ?
= xhtml11
52 ASCIIDOC_DOCBOOK
= docbook
53 ASCIIDOC_CONF
= -f asciidoc.conf
54 ASCIIDOC_COMMON
= $(ASCIIDOC
) $(ASCIIDOC_EXTRA
) $(ASCIIDOC_CONF
) \
55 -amanversion
=$(STGIT_VERSION
) \
56 -amanmanual
='StGit Manual' -amansource
='StGit'
57 TXT_TO_HTML
= $(ASCIIDOC_COMMON
) -b
$(ASCIIDOC_HTML
)
58 TXT_TO_XML
= $(ASCIIDOC_COMMON
) -b
$(ASCIIDOC_DOCBOOK
)
59 MANPAGE_XSL
= manpage-normal.xsl
66 INSTALL_INFO
= install-info
67 DOCBOOK2X_TEXI
= docbook2x-texi
69 ASCIIDOC_DBLATEX_DIR
= /etc
/asciidoc
/dblatex
70 DBLATEX_COMMON
= -p
$(ASCIIDOC_DBLATEX_DIR
)/asciidoc-dblatex.xsl
-s
$(ASCIIDOC_DBLATEX_DIR
)/asciidoc-dblatex.sty
72 PERL_PATH
= /usr
/bin
/perl
75 ifndef NO_MAN_BOLD_LITERAL
76 XMLTO_EXTRA
+= -m manpage-bold-literal.xsl
79 # Newer DocBook stylesheet emits warning cruft in the output when
80 # this is not set, and if set it shows an absolute link. Older
81 # stylesheets simply ignore this parameter.
83 # Distros may want to use MAN_BASE_URL=file:///path/to/git/docs/
86 MAN_BASE_URL
= file
://$(htmldir
)/
88 XMLTO_EXTRA
+= -m manpage-base-url.xsl
90 # If your target system uses GNU groff, it may try to render
91 # apostrophes as a "pretty" apostrophe using unicode. This breaks
92 # cut&paste, so you should set GNU_ROFF to force them to be ASCII
93 # apostrophes. Unfortunately does not work with non-GNU roff.
95 XMLTO_EXTRA
+= -m manpage-quote-apos.xsl
99 ASCIIDOC
= asciidoctor
101 ASCIIDOC_HTML
= xhtml5
102 ASCIIDOC_DOCBOOK
= docbook5
103 ASCIIDOC_EXTRA
+= -acompat-mode
-atabsize
=8
104 ASCIIDOC_EXTRA
+= -I.
-rasciidoctor-extensions
105 ASCIIDOC_EXTRA
+= -alitdd
='&\#x2d;&\#x2d;'
107 XMLTO_EXTRA
+= --skip-validation
108 XMLTO_EXTRA
+= -x manpage.xsl
111 SHELL_PATH ?
= $(SHELL
)
113 SHELL_PATH_SQ
= $(subst ','\'',$(SHELL_PATH))
114 # ' <-- help syntax highlighters back into good state
116 QUIET_SUBDIR0
= +$(MAKE
) -C
# space to separate -C and subdir
119 ifneq ($(findstring $(MAKEFLAGS
),w
),w
)
120 PRINT_DIR
= --no-print-directory
125 ifneq ($(findstring $(MAKEFLAGS
),s
),s
)
127 QUIET_ASCIIDOC
= @echo
' ' ASCIIDOC
$@
;
128 QUIET_XMLTO
= @echo
' ' XMLTO
$@
;
129 QUIET_DB2TEXI
= @echo
' ' DB2TEXI
$@
;
130 QUIET_MAKEINFO
= @echo
' ' MAKEINFO
$@
;
131 QUIET_DBLATEX
= @echo
' ' DBLATEX
$@
;
132 QUIET_XSLTPROC
= @echo
' ' XSLTPROC
$@
;
133 QUIET_GEN
= @echo
' ' GEN
$@
;
134 QUIET_LINT
= @echo
' ' LINT
$@
;
135 QUIET_STDERR
= 2> /dev
/null
136 QUIET_SUBDIR0
= +@subdir
=
137 QUIET_SUBDIR1
= ;$(NO_SUBDIR
) echo
' ' SUBDIR
$$subdir; \
138 $(MAKE
) $(PRINT_DIR
) -C
$$subdir
157 $(INSTALL
) -d
-m
755 $(DESTDIR
)$(man1dir)
158 $(INSTALL
) -m
644 $(DOC_MAN1
) $(DESTDIR
)$(man1dir)
161 $(INSTALL
) -d
-m
755 $(DESTDIR
)$(infodir)
162 $(INSTALL
) -m
644 stgitman.
info $(DESTDIR
)$(infodir)
163 if
test -r
$(DESTDIR
)$(infodir)/dir; then \
164 $(INSTALL_INFO
) --info-dir
=$(DESTDIR
)$(infodir) stgitman.
info ;\
166 echo
"No directory found in $(DESTDIR)$(infodir)" >&2 ; \
170 $(INSTALL
) -d
-m
755 $(DESTDIR
)$(htmldir
)
171 $(INSTALL
) -m
644 $(DOC_HTML
) $(DESTDIR
)$(htmldir
)
173 $(DOC_HTML
) $(DOC_MAN1
): asciidoc.conf
176 # Determine "include::" file references in asciidoc files.
178 doc.dep
: $(wildcard *.txt
) build-docdep.perl
179 $(QUIET_GEN
)$(RM
) $@
+ $@
&& \
180 $(PERL_PATH
) .
/build-docdep.perl
>$@
+ $(QUIET_STDERR
) && \
185 HTML-ASCIIDOCFLAGS
: FORCE
186 @FLAGS
='$(subst ','\'',$(TXT_TO_HTML
))'; \
187 if test x"$$FLAGS" != x"`cat HTML-ASCIIDOCFLAGS 2>/dev/null`"; then \
188 echo >&2 " * new HTML-ASCIIDOCFLAGS"; \
189 echo "$$FLAGS" >HTML-ASCIIDOCFLAGS; \
192 XML-ASCIIDOCFLAGS: FORCE
193 @FLAGS='$(subst ','\'',$(TXT_TO_XML))'; \
194 if
test x
"$$FLAGS" != x
"`cat XML-ASCIIDOCFLAGS 2>/dev/null`"; then \
195 echo
>&2 " * new XML-ASCIIDOCFLAGS"; \
196 echo
"$$FLAGS" >XML-ASCIIDOCFLAGS
; \
200 $(RM
) *.xml
*.xml
+ *.html
*.html
+ *.1 *.5 *.7
201 $(RM
) *.texi
*.texi
+ *.texi
++ stgitman.
info
204 $(RM
) manpage-base-url.xsl
205 $(RM
) *-ASCIIDOCFLAGS
206 $(RM
) $(STG_COMMANDS_TXT
) command-list.txt
208 $(MAN_HTML
): %.html
: %.txt asciidoc.conf asciidoctor-extensions.rb HTML-ASCIIDOCFLAGS
209 $(QUIET_ASCIIDOC
)$(RM
) $@
+ $@
&& \
210 $(TXT_TO_HTML
) -d manpage
-o
$@
+ $< && \
213 $(OBSOLETE_HTML
): %.html
: %.txto asciidoc.conf asciidoctor-extensions.rb HTML-ASCIIDOCFLAGS
214 $(QUIET_ASCIIDOC
)$(RM
) $@
+ $@
&& \
215 $(TXT_TO_HTML
) -o
$@
+ $< && \
218 manpage-base-url.xsl
: manpage-base-url.xsl.in
219 $(QUIET_GEN
)sed
"s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
221 %.1 %.5 %.7 : %.xml manpage-base-url.xsl
$(wildcard manpage
*.xsl
)
222 $(QUIET_XMLTO
)$(RM
) $@
&& \
223 $(XMLTO
) -m
$(MANPAGE_XSL
) $(XMLTO_EXTRA
) man
$<
225 %.xml
: %.txt asciidoc.conf asciidoctor-extensions.rb XML-ASCIIDOCFLAGS
226 $(QUIET_ASCIIDOC
)$(RM
) $@
+ $@
&& \
227 $(TXT_TO_XML
) -d manpage
-o
$@
+ $< && \
230 stgitman.texi
: $(MAN_XML
) cat-texi.perl texi.xsl
231 $(QUIET_DB2TEXI
)$(RM
) $@
+ $@
&& \
232 ($(foreach xml
,$(sort $(MAN_XML
)),xsltproc
-o
$(xml
)+ texi.xsl
$(xml
) && \
233 $(DOCBOOK2X_TEXI
) --encoding
=UTF-8
--to-stdout
$(xml
)+ && \
234 rm $(xml
)+ &&) true
) > $@
++ && \
235 $(PERL_PATH
) cat-texi.perl
$@
<$@
++ >$@
+ && \
239 stgitman.
info: stgitman.texi
240 $(QUIET_MAKEINFO
)$(MAKEINFO
) --no-split
--no-validate
$*.texi
242 $(patsubst %.txt
,%.texi
,$(MAN_TXT
)): %.texi
: %.xml
243 $(QUIET_DB2TEXI
)$(RM
) $@
+ $@
&& \
244 $(DOCBOOK2X_TEXI
) --to-stdout
$*.xml
>$@
+ && \
247 $(patsubst %,%.html
,$(ARTICLES
)) : %.html
: %.txt HTML-ASCIIDOCFLAGS
248 $(QUIET_ASCIIDOC
)$(TXT_TO_HTML
) -a toc
$*.txt
251 @for i in
$(MAN1_TXT
); do echo
$$i; done
255 $(STG_COMMANDS_TXT
): $(STGIT_ALL_PY
)
256 $(QUIET_GEN
)$(PYTHON
) ..
/build.py
--asciidoc
$(basename $(subst stg-
,,$@
)) > $@
258 command-list.txt
: $(STGIT_ALL_PY
)
259 $(QUIET_GEN
)$(PYTHON
) ..
/build.py
--cmd-list
> $@
261 build-txt
: command-list.txt FORCE