| 1 | # The default target of this Makefile is... |
| 2 | all:: |
| 3 | |
| 4 | # Import tree-wide shared Makefile behavior and libraries |
| 5 | include ../shared.mak |
| 6 | |
| 7 | .PHONY: FORCE |
| 8 | |
| 9 | # Guard against environment variables |
| 10 | MAN1_TXT = |
| 11 | MAN5_TXT = |
| 12 | MAN7_TXT = |
| 13 | HOWTO_TXT = |
| 14 | DOC_DEP_TXT = |
| 15 | TECH_DOCS = |
| 16 | ARTICLES = |
| 17 | SP_ARTICLES = |
| 18 | OBSOLETE_HTML = |
| 19 | |
| 20 | -include GIT-EXCLUDED-PROGRAMS |
| 21 | |
| 22 | MAN1_TXT += $(filter-out \ |
| 23 | $(patsubst %,%.adoc,$(EXCLUDED_PROGRAMS)) \ |
| 24 | $(addsuffix .adoc, $(ARTICLES) $(SP_ARTICLES)), \ |
| 25 | $(wildcard git-*.adoc)) |
| 26 | MAN1_TXT += git.adoc |
| 27 | MAN1_TXT += gitk.adoc |
| 28 | MAN1_TXT += gitweb.adoc |
| 29 | MAN1_TXT += scalar.adoc |
| 30 | |
| 31 | # man5 / man7 guides (note: new guides should also be added to command-list.txt) |
| 32 | MAN5_TXT += gitattributes.adoc |
| 33 | MAN5_TXT += gitformat-bundle.adoc |
| 34 | MAN5_TXT += gitformat-chunk.adoc |
| 35 | MAN5_TXT += gitformat-commit-graph.adoc |
| 36 | MAN5_TXT += gitformat-diff-hunks.adoc |
| 37 | MAN5_TXT += gitformat-index.adoc |
| 38 | MAN5_TXT += gitformat-loose.adoc |
| 39 | MAN5_TXT += gitformat-pack.adoc |
| 40 | MAN5_TXT += gitformat-signature.adoc |
| 41 | MAN5_TXT += githooks.adoc |
| 42 | MAN5_TXT += gitignore.adoc |
| 43 | MAN5_TXT += gitmailmap.adoc |
| 44 | MAN5_TXT += gitmodules.adoc |
| 45 | MAN5_TXT += gitprotocol-capabilities.adoc |
| 46 | MAN5_TXT += gitprotocol-common.adoc |
| 47 | MAN5_TXT += gitprotocol-http.adoc |
| 48 | MAN5_TXT += gitprotocol-pack.adoc |
| 49 | MAN5_TXT += gitprotocol-v2.adoc |
| 50 | MAN5_TXT += gitrepository-layout.adoc |
| 51 | MAN5_TXT += gitweb.conf.adoc |
| 52 | |
| 53 | MAN7_TXT += gitcli.adoc |
| 54 | MAN7_TXT += gitcore-tutorial.adoc |
| 55 | MAN7_TXT += gitcredentials.adoc |
| 56 | MAN7_TXT += gitcvs-migration.adoc |
| 57 | MAN7_TXT += gitdatamodel.adoc |
| 58 | MAN7_TXT += gitdiffcore.adoc |
| 59 | MAN7_TXT += giteveryday.adoc |
| 60 | MAN7_TXT += gitfaq.adoc |
| 61 | MAN7_TXT += gitglossary.adoc |
| 62 | MAN7_TXT += gitpacking.adoc |
| 63 | MAN7_TXT += gitnamespaces.adoc |
| 64 | MAN7_TXT += gitremote-helpers.adoc |
| 65 | MAN7_TXT += gitrevisions.adoc |
| 66 | MAN7_TXT += gitsubmodules.adoc |
| 67 | MAN7_TXT += gittutorial-2.adoc |
| 68 | MAN7_TXT += gittutorial.adoc |
| 69 | MAN7_TXT += gitworkflows.adoc |
| 70 | |
| 71 | HOWTO_TXT += $(wildcard howto/*.adoc) |
| 72 | |
| 73 | DOC_DEP_TXT += $(wildcard *.adoc) |
| 74 | DOC_DEP_TXT += $(wildcard config/*.adoc) |
| 75 | DOC_DEP_TXT += $(wildcard includes/*.adoc) |
| 76 | |
| 77 | ifdef MAN_FILTER |
| 78 | MAN_TXT = $(filter $(MAN_FILTER),$(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)) |
| 79 | else |
| 80 | MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT) |
| 81 | MAN_FILTER = $(MAN_TXT) |
| 82 | endif |
| 83 | |
| 84 | MAN_XML = $(patsubst %.adoc,%.xml,$(MAN_TXT)) |
| 85 | MAN_HTML = $(patsubst %.adoc,%.html,$(MAN_TXT)) |
| 86 | GIT_MAN_REF = master |
| 87 | |
| 88 | OBSOLETE_HTML += everyday.html |
| 89 | OBSOLETE_HTML += git-remote-helpers.html |
| 90 | |
| 91 | ARTICLES += howto-index |
| 92 | ARTICLES += git-tools |
| 93 | ARTICLES += git-bisect-lk2009 |
| 94 | # with their own formatting rules. |
| 95 | SP_ARTICLES += user-manual |
| 96 | SP_ARTICLES += howto/new-command |
| 97 | SP_ARTICLES += howto/revert-branch-rebase |
| 98 | SP_ARTICLES += howto/using-merge-subtree |
| 99 | SP_ARTICLES += howto/using-signed-tag-in-pull-request |
| 100 | SP_ARTICLES += howto/use-git-daemon |
| 101 | SP_ARTICLES += howto/update-hook-example |
| 102 | SP_ARTICLES += howto/setup-git-server-over-http |
| 103 | SP_ARTICLES += howto/separating-topic-branches |
| 104 | SP_ARTICLES += howto/revert-a-faulty-merge |
| 105 | SP_ARTICLES += howto/recover-corrupted-blob-object |
| 106 | SP_ARTICLES += howto/recover-corrupted-object-harder |
| 107 | SP_ARTICLES += howto/rebuild-from-update-hook |
| 108 | SP_ARTICLES += howto/rebase-from-internal-branch |
| 109 | SP_ARTICLES += howto/keep-canonical-history-correct |
| 110 | SP_ARTICLES += howto/maintain-git |
| 111 | SP_ARTICLES += howto/coordinate-embargoed-releases |
| 112 | API_DOCS = $(patsubst %.adoc,%,$(filter-out technical/api-index-skel.adoc technical/api-index.adoc, $(wildcard technical/api-*.adoc))) |
| 113 | SP_ARTICLES += $(API_DOCS) |
| 114 | |
| 115 | TECH_DOCS += BreakingChanges |
| 116 | TECH_DOCS += DecisionMaking |
| 117 | TECH_DOCS += ReviewingGuidelines |
| 118 | TECH_DOCS += MyFirstContribution |
| 119 | TECH_DOCS += MyFirstObjectWalk |
| 120 | TECH_DOCS += SubmittingPatches |
| 121 | TECH_DOCS += ToolsForGit |
| 122 | TECH_DOCS += technical/bitmap-format |
| 123 | TECH_DOCS += technical/build-systems |
| 124 | TECH_DOCS += technical/bundle-uri |
| 125 | TECH_DOCS += technical/commit-graph |
| 126 | TECH_DOCS += technical/directory-rename-detection |
| 127 | TECH_DOCS += technical/hash-function-transition |
| 128 | TECH_DOCS += technical/large-object-promisors |
| 129 | TECH_DOCS += technical/long-running-process-protocol |
| 130 | TECH_DOCS += technical/multi-pack-index |
| 131 | TECH_DOCS += technical/packfile-uri |
| 132 | TECH_DOCS += technical/pack-heuristics |
| 133 | TECH_DOCS += technical/paint-down-to-common |
| 134 | TECH_DOCS += technical/parallel-checkout |
| 135 | TECH_DOCS += technical/partial-clone |
| 136 | TECH_DOCS += technical/platform-support |
| 137 | TECH_DOCS += technical/racy-git |
| 138 | TECH_DOCS += technical/reftable |
| 139 | TECH_DOCS += technical/remembering-renames |
| 140 | TECH_DOCS += technical/repository-version |
| 141 | TECH_DOCS += technical/rerere |
| 142 | TECH_DOCS += technical/scalar |
| 143 | TECH_DOCS += technical/send-pack-pipeline |
| 144 | TECH_DOCS += technical/shallow |
| 145 | TECH_DOCS += technical/sparse-checkout |
| 146 | TECH_DOCS += technical/sparse-index |
| 147 | TECH_DOCS += technical/trivial-merge |
| 148 | TECH_DOCS += technical/unambiguous-types |
| 149 | TECH_DOCS += technical/unit-tests |
| 150 | SP_ARTICLES += $(TECH_DOCS) |
| 151 | SP_ARTICLES += technical/api-index |
| 152 | |
| 153 | ARTICLES_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES)) |
| 154 | HTML_FILTER ?= $(ARTICLES_HTML) $(OBSOLETE_HTML) |
| 155 | DOC_HTML = $(MAN_HTML) $(filter $(HTML_FILTER),$(ARTICLES_HTML) $(OBSOLETE_HTML)) |
| 156 | |
| 157 | DOC_MAN1 = $(patsubst %.adoc,%.1,$(filter $(MAN_FILTER),$(MAN1_TXT))) |
| 158 | DOC_MAN5 = $(patsubst %.adoc,%.5,$(filter $(MAN_FILTER),$(MAN5_TXT))) |
| 159 | DOC_MAN7 = $(patsubst %.adoc,%.7,$(filter $(MAN_FILTER),$(MAN7_TXT))) |
| 160 | |
| 161 | prefix ?= $(HOME) |
| 162 | bindir ?= $(prefix)/bin |
| 163 | htmldir ?= $(prefix)/share/doc/git-doc |
| 164 | infodir ?= $(prefix)/share/info |
| 165 | pdfdir ?= $(prefix)/share/doc/git-doc |
| 166 | mandir ?= $(prefix)/share/man |
| 167 | man1dir = $(mandir)/man1 |
| 168 | man5dir = $(mandir)/man5 |
| 169 | man7dir = $(mandir)/man7 |
| 170 | # DESTDIR = |
| 171 | |
| 172 | ASCIIDOC = asciidoc |
| 173 | ASCIIDOC_EXTRA = |
| 174 | ASCIIDOC_HTML = xhtml11 |
| 175 | ASCIIDOC_DOCBOOK = docbook |
| 176 | ASCIIDOC_CONF = -f asciidoc.conf |
| 177 | ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) |
| 178 | ASCIIDOC_DEPS = asciidoc.conf GIT-ASCIIDOCFLAGS |
| 179 | TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML) |
| 180 | TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK) |
| 181 | MANPAGE_XSL = manpage-normal.xsl |
| 182 | XMLTO = xmlto |
| 183 | XMLTO_EXTRA = |
| 184 | INSTALL ?= install |
| 185 | RM ?= rm -f |
| 186 | MAN_REPO = ../../git-manpages |
| 187 | HTML_REPO = ../../git-htmldocs |
| 188 | |
| 189 | MAKEINFO = makeinfo |
| 190 | INSTALL_INFO = install-info |
| 191 | DOCBOOK2X_TEXI = docbook2x-texi |
| 192 | DBLATEX = dblatex |
| 193 | ASCIIDOC_DBLATEX_DIR = /etc/asciidoc/dblatex |
| 194 | DBLATEX_COMMON = -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty |
| 195 | ifndef PERL_PATH |
| 196 | PERL_PATH = /usr/bin/perl |
| 197 | endif |
| 198 | |
| 199 | -include ../config.mak.autogen |
| 200 | -include ../config.mak |
| 201 | |
| 202 | # Set GIT_VERSION_OVERRIDE such that version_gen knows to substitute |
| 203 | # GIT_VERSION in case it was set by the user. |
| 204 | GIT_VERSION_OVERRIDE := $(GIT_VERSION) |
| 205 | |
| 206 | ifndef NO_MAN_BOLD_LITERAL |
| 207 | XMLTO_EXTRA += -m manpage-bold-literal.xsl |
| 208 | endif |
| 209 | |
| 210 | # Newer DocBook stylesheet emits warning cruft in the output when |
| 211 | # this is not set, and if set it shows an absolute link. Older |
| 212 | # stylesheets simply ignore this parameter. |
| 213 | # |
| 214 | # Distros may want to use MAN_BASE_URL=file:///path/to/git/docs/ |
| 215 | # or similar. |
| 216 | ifndef MAN_BASE_URL |
| 217 | MAN_BASE_URL = file://$(htmldir)/ |
| 218 | endif |
| 219 | XMLTO_EXTRA += --stringparam man.base.url.for.relative.links='$(MAN_BASE_URL)' |
| 220 | |
| 221 | ifdef USE_ASCIIDOCTOR |
| 222 | ASCIIDOC = asciidoctor |
| 223 | ASCIIDOC_CONF = |
| 224 | ASCIIDOC_HTML = xhtml5 |
| 225 | ASCIIDOC_DOCBOOK = docbook5 |
| 226 | ASCIIDOC_EXTRA += -acompat-mode -atabsize=8 |
| 227 | ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions |
| 228 | ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;' |
| 229 | ASCIIDOC_EXTRA += -adocinfo=shared |
| 230 | ASCIIDOC_DEPS = asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS |
| 231 | DBLATEX_COMMON = |
| 232 | XMLTO_EXTRA += --skip-validation |
| 233 | XMLTO_EXTRA += -x manpage.xsl |
| 234 | |
| 235 | asciidoctor-extensions.rb: asciidoctor-extensions.rb.in FORCE |
| 236 | $(QUIET_GEN)$(call version_gen,"$(shell pwd)/..",$<,$@) |
| 237 | else |
| 238 | asciidoc.conf: asciidoc.conf.in FORCE |
| 239 | $(QUIET_GEN)$(call version_gen,"$(shell pwd)/..",$<,$@) |
| 240 | endif |
| 241 | |
| 242 | ifdef WITH_BREAKING_CHANGES |
| 243 | ASCIIDOC_EXTRA += -awith-breaking-changes |
| 244 | endif |
| 245 | |
| 246 | ASCIIDOC_DEPS += docinfo.html |
| 247 | |
| 248 | SHELL_PATH ?= $(SHELL) |
| 249 | # Shell quote; |
| 250 | SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) |
| 251 | |
| 252 | ASCIIDOC_EXTRA += -abuild_dir='$(shell pwd)' |
| 253 | ifdef DEFAULT_PAGER |
| 254 | DEFAULT_PAGER_SQ = $(subst ','\'',$(DEFAULT_PAGER)) |
| 255 | ASCIIDOC_EXTRA += -a 'git-default-pager=$(DEFAULT_PAGER_SQ)' |
| 256 | endif |
| 257 | |
| 258 | ifdef DEFAULT_EDITOR |
| 259 | DEFAULT_EDITOR_SQ = $(subst ','\'',$(DEFAULT_EDITOR)) |
| 260 | ASCIIDOC_EXTRA += -a 'git-default-editor=$(DEFAULT_EDITOR_SQ)' |
| 261 | endif |
| 262 | |
| 263 | all:: html man |
| 264 | |
| 265 | html: $(DOC_HTML) |
| 266 | |
| 267 | man: man1 man5 man7 |
| 268 | man1: $(DOC_MAN1) |
| 269 | man5: $(DOC_MAN5) |
| 270 | man7: $(DOC_MAN7) |
| 271 | |
| 272 | info: git.info gitman.info |
| 273 | |
| 274 | pdf: user-manual.pdf |
| 275 | |
| 276 | install: install-man |
| 277 | |
| 278 | install-man: man |
| 279 | $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) |
| 280 | $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) |
| 281 | $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir) |
| 282 | $(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir) |
| 283 | $(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir) |
| 284 | $(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir) |
| 285 | |
| 286 | install-info: info |
| 287 | $(INSTALL) -d -m 755 $(DESTDIR)$(infodir) |
| 288 | $(INSTALL) -m 644 git.info gitman.info $(DESTDIR)$(infodir) |
| 289 | if test -r $(DESTDIR)$(infodir)/dir; then \ |
| 290 | $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) git.info ;\ |
| 291 | $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) gitman.info ;\ |
| 292 | else \ |
| 293 | echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \ |
| 294 | fi |
| 295 | |
| 296 | install-pdf: pdf |
| 297 | $(INSTALL) -d -m 755 $(DESTDIR)$(pdfdir) |
| 298 | $(INSTALL) -m 644 user-manual.pdf $(DESTDIR)$(pdfdir) |
| 299 | |
| 300 | install-html: html |
| 301 | '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir) |
| 302 | |
| 303 | mergetools_txt = mergetools-diff.adoc mergetools-merge.adoc |
| 304 | |
| 305 | # |
| 306 | # Determine "include::" file references in asciidoc files. |
| 307 | # |
| 308 | docdep_prereqs = \ |
| 309 | $(mergetools_txt) \ |
| 310 | cmd-list.made $(cmds_txt) |
| 311 | |
| 312 | doc.dep : $(docdep_prereqs) $(DOC_DEP_TXT) build-docdep.perl |
| 313 | $(QUIET_GEN)$(PERL_PATH) ./build-docdep.perl "$(shell pwd)" >$@ $(QUIET_STDERR) |
| 314 | |
| 315 | ifneq ($(MAKECMDGOALS),clean) |
| 316 | -include doc.dep |
| 317 | endif |
| 318 | |
| 319 | cmds_txt = cmds-ancillaryinterrogators.adoc \ |
| 320 | cmds-ancillarymanipulators.adoc \ |
| 321 | cmds-mainporcelain.adoc \ |
| 322 | cmds-plumbinginterrogators.adoc \ |
| 323 | cmds-plumbingmanipulators.adoc \ |
| 324 | cmds-synchingrepositories.adoc \ |
| 325 | cmds-synchelpers.adoc \ |
| 326 | cmds-guide.adoc \ |
| 327 | cmds-developerinterfaces.adoc \ |
| 328 | cmds-userinterfaces.adoc \ |
| 329 | cmds-purehelpers.adoc \ |
| 330 | cmds-foreignscminterface.adoc |
| 331 | |
| 332 | $(cmds_txt): cmd-list.made |
| 333 | |
| 334 | cmd-list.made: cmd-list.sh ../command-list.txt $(MAN1_TXT) |
| 335 | $(QUIET_GEN)$(SHELL_PATH) ./cmd-list.sh .. . $(cmds_txt) && \ |
| 336 | date >$@ |
| 337 | |
| 338 | mergetools-%.adoc: generate-mergetool-list.sh ../git-mergetool--lib.sh $(wildcard ../mergetools/*) |
| 339 | mergetools-diff.adoc: |
| 340 | $(QUIET_GEN)$(SHELL_PATH) ./generate-mergetool-list.sh .. diff $@ |
| 341 | mergetools-merge.adoc: |
| 342 | $(QUIET_GEN)$(SHELL_PATH) ./generate-mergetool-list.sh .. merge $@ |
| 343 | |
| 344 | TRACK_ASCIIDOCFLAGS = $(subst ','\'',$(ASCIIDOC_COMMON):$(ASCIIDOC_HTML):$(ASCIIDOC_DOCBOOK)) |
| 345 | |
| 346 | GIT-ASCIIDOCFLAGS: FORCE |
| 347 | @FLAGS='$(TRACK_ASCIIDOCFLAGS)'; \ |
| 348 | if test x"$$FLAGS" != x"`cat GIT-ASCIIDOCFLAGS 2>/dev/null`" ; then \ |
| 349 | echo >&2 " * new asciidoc flags"; \ |
| 350 | echo "$$FLAGS" >GIT-ASCIIDOCFLAGS; \ |
| 351 | fi |
| 352 | |
| 353 | clean: |
| 354 | $(RM) -rf .build/ |
| 355 | $(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7 |
| 356 | $(RM) *.texi *.texi+ *.texi++ git.info gitman.info |
| 357 | $(RM) *.pdf |
| 358 | $(RM) howto-index.adoc howto/*.html doc.dep |
| 359 | $(RM) technical/*.html technical/api-index.adoc |
| 360 | $(RM) SubmittingPatches.adoc |
| 361 | $(RM) $(cmds_txt) $(mergetools_txt) *.made |
| 362 | $(RM) GIT-ASCIIDOCFLAGS |
| 363 | $(RM) asciidoc.conf asciidoctor-extensions.rb |
| 364 | $(RM) -rf tmp-meson-diff |
| 365 | |
| 366 | docinfo.html: docinfo-html.in |
| 367 | $(QUIET_GEN)$(RM) $@ && cat $< >$@ |
| 368 | |
| 369 | $(MAN_HTML): %.html : %.adoc $(ASCIIDOC_DEPS) |
| 370 | $(QUIET_ASCIIDOC)$(TXT_TO_HTML) -d manpage -o $@ $< |
| 371 | |
| 372 | $(OBSOLETE_HTML): %.html : %.adoco $(ASCIIDOC_DEPS) |
| 373 | $(QUIET_ASCIIDOC)$(TXT_TO_HTML) -o $@ $< |
| 374 | |
| 375 | manpage-prereqs := $(wildcard manpage*.xsl) |
| 376 | manpage-cmd = $(QUIET_XMLTO)$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< |
| 377 | |
| 378 | %.1 : %.xml $(manpage-prereqs) |
| 379 | $(manpage-cmd) |
| 380 | %.5 : %.xml $(manpage-prereqs) |
| 381 | $(manpage-cmd) |
| 382 | %.7 : %.xml $(manpage-prereqs) |
| 383 | $(manpage-cmd) |
| 384 | |
| 385 | %.xml : %.adoc $(ASCIIDOC_DEPS) |
| 386 | $(QUIET_ASCIIDOC)$(TXT_TO_XML) -d manpage -o $@ $< |
| 387 | |
| 388 | user-manual.xml: user-manual.adoc $(ASCIIDOC_DEPS) |
| 389 | $(QUIET_ASCIIDOC)$(TXT_TO_XML) -d book -o $@ $< |
| 390 | |
| 391 | technical/api-index.adoc: technical/api-index-skel.adoc \ |
| 392 | technical/api-index.sh $(patsubst %,%.adoc,$(API_DOCS)) |
| 393 | $(QUIET_GEN)'$(SHELL_PATH_SQ)' technical/api-index.sh ./technical ./technical/api-index.adoc |
| 394 | |
| 395 | technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../ |
| 396 | $(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.adoc \ |
| 397 | $(ASCIIDOC_DEPS) |
| 398 | $(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.adoc |
| 399 | |
| 400 | SubmittingPatches.adoc: SubmittingPatches |
| 401 | $(QUIET_GEN) cp $< $@ |
| 402 | |
| 403 | XSLT = docbook.xsl |
| 404 | XSLTOPTS = |
| 405 | XSLTOPTS += --xinclude |
| 406 | XSLTOPTS += --stringparam html.stylesheet docbook-xsl.css |
| 407 | XSLTOPTS += --param generate.consistent.ids 1 |
| 408 | |
| 409 | user-manual.html: user-manual.xml $(XSLT) |
| 410 | $(QUIET_XSLTPROC)xsltproc $(XSLTOPTS) -o $@ $(XSLT) $< |
| 411 | |
| 412 | git.info: user-manual.texi |
| 413 | $(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi |
| 414 | |
| 415 | user-manual.texi: user-manual.xml fix-texi.sh |
| 416 | $(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@+ && \ |
| 417 | $(SHELL_PATH) fix-texi.sh <$@+ >$@ && \ |
| 418 | $(RM) $@+ |
| 419 | |
| 420 | user-manual.pdf: user-manual.xml |
| 421 | $(QUIET_DBLATEX)$(DBLATEX) -o $@ $(DBLATEX_COMMON) $< |
| 422 | |
| 423 | gitman.texi: $(MAN_XML) cat-texi.perl texi.xsl |
| 424 | $(QUIET_DB2TEXI) \ |
| 425 | ($(foreach xml,$(sort $(MAN_XML)),xsltproc -o $(xml)+ texi.xsl $(xml) && \ |
| 426 | $(DOCBOOK2X_TEXI) --encoding=UTF-8 --to-stdout $(xml)+ && \ |
| 427 | $(RM) $(xml)+ &&) true) > $@+ && \ |
| 428 | $(PERL_PATH) cat-texi.perl $@ <$@+ >$@ && \ |
| 429 | $(RM) $@+ |
| 430 | |
| 431 | gitman.info: gitman.texi |
| 432 | $(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $< |
| 433 | |
| 434 | $(patsubst %.adoc,%.texi,$(MAN_TXT)): %.texi : %.xml |
| 435 | $(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@ |
| 436 | |
| 437 | howto-index.adoc: howto/howto-index.sh $(HOWTO_TXT) |
| 438 | $(QUIET_GEN)'$(SHELL_PATH_SQ)' ./howto/howto-index.sh $(sort $(HOWTO_TXT)) >$@ |
| 439 | |
| 440 | $(patsubst %,%.html,$(ARTICLES)) : %.html : %.adoc $(ASCIIDOC_DEPS) |
| 441 | $(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.adoc |
| 442 | |
| 443 | WEBDOC_DEST = /pub/software/scm/git/docs |
| 444 | |
| 445 | howto/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../ |
| 446 | $(patsubst %.adoc,%.html,$(HOWTO_TXT)): %.html : %.adoc $(ASCIIDOC_DEPS) |
| 447 | $(QUIET_ASCIIDOC) \ |
| 448 | sed -e '1,/^$$/d' $< | \ |
| 449 | $(TXT_TO_HTML) - >$@ |
| 450 | |
| 451 | install-webdoc : html |
| 452 | '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST) |
| 453 | |
| 454 | # You must have a clone of 'git-htmldocs' and 'git-manpages' repositories |
| 455 | # next to the 'git' repository itself for the following to work. |
| 456 | |
| 457 | quick-install: quick-install-man |
| 458 | |
| 459 | require-manrepo:: |
| 460 | @if test ! -d $(MAN_REPO); \ |
| 461 | then echo "git-manpages repository must exist at $(MAN_REPO)"; exit 1; fi |
| 462 | |
| 463 | quick-install-man: require-manrepo |
| 464 | '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir) $(GIT_MAN_REF) |
| 465 | |
| 466 | require-htmlrepo:: |
| 467 | @if test ! -d $(HTML_REPO); \ |
| 468 | then echo "git-htmldocs repository must exist at $(HTML_REPO)"; exit 1; fi |
| 469 | |
| 470 | quick-install-html: require-htmlrepo |
| 471 | '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir) $(GIT_MAN_REF) |
| 472 | |
| 473 | print-man1: |
| 474 | @for i in $(MAN1_TXT); do echo $$i; done |
| 475 | |
| 476 | ## Lint: gitlink |
| 477 | LINT_DOCS_GITLINK = $(patsubst %.adoc,.build/lint-docs/gitlink/%.ok,$(HOWTO_TXT) $(DOC_DEP_TXT)) |
| 478 | $(LINT_DOCS_GITLINK): lint-gitlink.perl |
| 479 | $(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.adoc |
| 480 | $(call mkdir_p_parent_template) |
| 481 | $(QUIET_LINT_GITLINK)$(PERL_PATH) lint-gitlink.perl \ |
| 482 | $< \ |
| 483 | $(HOWTO_TXT) $(DOC_DEP_TXT) \ |
| 484 | --section=1 $(MAN1_TXT) \ |
| 485 | --section=5 $(MAN5_TXT) \ |
| 486 | --section=7 $(MAN7_TXT) >$@ |
| 487 | .PHONY: lint-docs-gitlink |
| 488 | lint-docs-gitlink: $(LINT_DOCS_GITLINK) |
| 489 | |
| 490 | ## Lint: man-end-blurb |
| 491 | LINT_DOCS_MAN_END_BLURB = $(patsubst %.adoc,.build/lint-docs/man-end-blurb/%.ok,$(MAN_TXT)) |
| 492 | $(LINT_DOCS_MAN_END_BLURB): lint-man-end-blurb.perl |
| 493 | $(LINT_DOCS_MAN_END_BLURB): .build/lint-docs/man-end-blurb/%.ok: %.adoc |
| 494 | $(call mkdir_p_parent_template) |
| 495 | $(QUIET_LINT_MANEND)$(PERL_PATH) lint-man-end-blurb.perl $< >$@ |
| 496 | .PHONY: lint-docs-man-end-blurb |
| 497 | |
| 498 | ## Lint: man-section-order |
| 499 | LINT_DOCS_MAN_SECTION_ORDER = $(patsubst %.adoc,.build/lint-docs/man-section-order/%.ok,$(MAN_TXT)) |
| 500 | $(LINT_DOCS_MAN_SECTION_ORDER): lint-man-section-order.perl |
| 501 | $(LINT_DOCS_MAN_SECTION_ORDER): .build/lint-docs/man-section-order/%.ok: %.adoc |
| 502 | $(call mkdir_p_parent_template) |
| 503 | $(QUIET_LINT_MANSEC)$(PERL_PATH) lint-man-section-order.perl $< >$@ |
| 504 | .PHONY: lint-docs-man-section-order |
| 505 | lint-docs-man-section-order: $(LINT_DOCS_MAN_SECTION_ORDER) |
| 506 | |
| 507 | .PHONY: lint-docs-fsck-msgids |
| 508 | LINT_DOCS_FSCK_MSGIDS = .build/lint-docs/fsck-msgids.ok |
| 509 | $(LINT_DOCS_FSCK_MSGIDS): lint-fsck-msgids.perl |
| 510 | $(LINT_DOCS_FSCK_MSGIDS): ../fsck.h fsck-msgids.adoc |
| 511 | $(call mkdir_p_parent_template) |
| 512 | $(QUIET_GEN)$(PERL_PATH) lint-fsck-msgids.perl \ |
| 513 | ../fsck.h fsck-msgids.adoc $@ |
| 514 | lint-docs-fsck-msgids: $(LINT_DOCS_FSCK_MSGIDS) |
| 515 | |
| 516 | ## Lint: delimited sections |
| 517 | LINT_DOCS_DELIMITED_SECTIONS = $(patsubst %.adoc,.build/lint-docs/delimited-sections/%.ok,$(MAN_TXT)) |
| 518 | $(LINT_DOCS_DELIMITED_SECTIONS): lint-delimited-sections.perl |
| 519 | $(LINT_DOCS_DELIMITED_SECTIONS): .build/lint-docs/delimited-sections/%.ok: %.adoc |
| 520 | $(call mkdir_p_parent_template) |
| 521 | $(QUIET_LINT_DELIMSEC)$(PERL_PATH) lint-delimited-sections.perl $< >$@ |
| 522 | .PHONY: lint-docs-delimited-sections |
| 523 | lint-docs-delimited-sections: $(LINT_DOCS_DELIMITED_SECTIONS) |
| 524 | |
| 525 | ## Lint: Documentation style |
| 526 | LINT_DOCS_DOC_STYLE = $(patsubst %.adoc,.build/lint-docs/doc-style/%.ok,$(DOC_DEP_TXT)) |
| 527 | $(LINT_DOCS_DOC_STYLE): lint-documentation-style.perl |
| 528 | $(LINT_DOCS_DOC_STYLE): .build/lint-docs/doc-style/%.ok: %.adoc |
| 529 | $(call mkdir_p_parent_template) |
| 530 | $(QUIET_LINT_DOCSTYLE)$(PERL_PATH) lint-documentation-style.perl $< >$@ |
| 531 | .PHONY: lint-docs-doc-style |
| 532 | lint-docs-doc-style: $(LINT_DOCS_DOC_STYLE) |
| 533 | |
| 534 | lint-docs-manpages: |
| 535 | $(QUIET_GEN)./lint-manpages.sh |
| 536 | |
| 537 | .PHONY: lint-docs-meson |
| 538 | lint-docs-meson: |
| 539 | @# awk acts up when trying to match single quotes, so we use \047 instead. |
| 540 | @mkdir -p tmp-meson-diff && \ |
| 541 | awk "/^manpages = {$$/ {flag=1 ; next } /^}$$/ { flag=0 } flag { gsub(/^ \047/, \"\"); gsub(/\047 : [157],\$$/, \"\"); print }" meson.build | \ |
| 542 | grep -v -e '#' -e '^$$' | \ |
| 543 | sort >tmp-meson-diff/meson.adoc && \ |
| 544 | ls git*.adoc scalar.adoc | \ |
| 545 | grep -v -e git-bisect-lk2009.adoc \ |
| 546 | -e git-pack-redundant.adoc \ |
| 547 | -e git-tools.adoc \ |
| 548 | -e git-whatchanged.adoc \ |
| 549 | >tmp-meson-diff/actual.adoc && \ |
| 550 | if ! cmp tmp-meson-diff/meson.adoc tmp-meson-diff/actual.adoc; then \ |
| 551 | echo "Meson man pages differ from actual man pages:"; \ |
| 552 | diff -u tmp-meson-diff/meson.adoc tmp-meson-diff/actual.adoc; \ |
| 553 | exit 1; \ |
| 554 | fi |
| 555 | |
| 556 | ## Lint: list of targets above |
| 557 | .PHONY: lint-docs |
| 558 | lint-docs: lint-docs-fsck-msgids |
| 559 | lint-docs: lint-docs-gitlink |
| 560 | lint-docs: lint-docs-man-end-blurb |
| 561 | lint-docs: lint-docs-man-section-order |
| 562 | lint-docs: lint-docs-delimited-sections |
| 563 | lint-docs: lint-docs-doc-style |
| 564 | lint-docs: lint-docs-manpages |
| 565 | lint-docs: lint-docs-meson |
| 566 | |
| 567 | ifeq ($(wildcard po/Makefile),po/Makefile) |
| 568 | doc-l10n install-l10n:: |
| 569 | $(MAKE) -C po $@ |
| 570 | endif |
| 571 | |
| 572 | .PHONY: FORCE |