759c0168a1
Pandoc can create epub verions of the markdown files. Since the docs are lengthy, epubs are handy to have around. Two rules to create epub versions of the reference manual and the main tutorial are added here. Signed-off-by: Noufal Ibrahim <noufal@nibrahim.net.in>
312 lines
10 KiB
Makefile
312 lines
10 KiB
Makefile
# Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
|
|
# file at the top-level directory of this distribution and at
|
|
# http://rust-lang.org/COPYRIGHT.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
# option. This file may not be copied, modified, or distributed
|
|
# except according to those terms.
|
|
|
|
######################################################################
|
|
# Doc variables and rules
|
|
######################################################################
|
|
|
|
DOCS :=
|
|
DOCS_L10N :=
|
|
|
|
|
|
######################################################################
|
|
# Docs, from pandoc, rustdoc (which runs pandoc), and node
|
|
######################################################################
|
|
|
|
doc/rust.css: rust.css
|
|
@$(call E, cp: $@)
|
|
$(Q)cp -a $< $@ 2> /dev/null
|
|
|
|
doc/manual.inc: manual.inc
|
|
@$(call E, cp: $@)
|
|
$(Q)cp -a $< $@ 2> /dev/null
|
|
|
|
ifeq ($(CFG_PANDOC),)
|
|
$(info cfg: no pandoc found, omitting docs)
|
|
NO_DOCS = 1
|
|
endif
|
|
|
|
ifeq ($(CFG_NODE),)
|
|
$(info cfg: no node found, omitting docs)
|
|
NO_DOCS = 1
|
|
endif
|
|
|
|
ifneq ($(NO_DOCS),1)
|
|
|
|
DOCS += doc/rust.html
|
|
doc/rust.html: rust.md doc/version_info.html doc/rust.css doc/manual.inc
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
"$(CFG_PANDOC)" \
|
|
--standalone --toc \
|
|
--section-divs \
|
|
--number-sections \
|
|
--from=markdown --to=html5 \
|
|
--css=rust.css --include-in-header=doc/manual.inc \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/rust.tex
|
|
doc/rust.tex: rust.md doc/version.md
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js $< | \
|
|
"$(CFG_PANDOC)" \
|
|
--standalone --toc \
|
|
--number-sections \
|
|
--include-before-body=doc/version.md \
|
|
--from=markdown --to=latex \
|
|
--output=$@
|
|
|
|
DOCS += doc/rust.epub
|
|
doc/rust.epub: rust.md doc/version_info.html doc/rust.css doc/manual.inc
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
"$(CFG_PANDOC)" \
|
|
--standalone --toc \
|
|
--section-divs \
|
|
--number-sections \
|
|
--from=markdown --to=epub \
|
|
--css=rust.css --include-in-header=doc/manual.inc \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
|
|
DOCS += doc/tutorial.tex
|
|
doc/tutorial.tex: tutorial.md doc/version.md
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js $< | \
|
|
"$(CFG_PANDOC)" \
|
|
--standalone --toc \
|
|
--number-sections \
|
|
--include-before-body=doc/version.md \
|
|
--from=markdown --to=latex \
|
|
--output=$@
|
|
|
|
DOCS += doc/rustpkg.html
|
|
doc/rustpkg.html: rustpkg.md doc/version_info.html doc/rust.css doc/manual.inc
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
"$(CFG_PANDOC)" \
|
|
--standalone --toc \
|
|
--section-divs \
|
|
--number-sections \
|
|
--from=markdown --to=html5 \
|
|
--css=rust.css --include-in-header=doc/manual.inc \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/tutorial.html
|
|
doc/tutorial.html: tutorial.md doc/version_info.html doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=html5 --css=rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/tutorial.epub
|
|
doc/tutorial.epub: tutorial.md doc/version_info.html doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=epub --css=rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
|
|
DOCS_L10N += doc/l10n/ja/tutorial.html
|
|
doc/l10n/ja/tutorial.html: doc/l10n/ja/tutorial.md doc/version_info.html doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight doc/l10n/ja/tutorial.md | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=html5 --css=../../rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/tutorial-macros.html
|
|
doc/tutorial-macros.html: tutorial-macros.md doc/version_info.html \
|
|
doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=html5 --css=rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/tutorial-container.html
|
|
doc/tutorial-container.html: tutorial-container.md doc/version_info.html doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=html5 --css=rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/tutorial-ffi.html
|
|
doc/tutorial-ffi.html: tutorial-ffi.md doc/version_info.html doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=html5 --css=rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/tutorial-borrowed-ptr.html
|
|
doc/tutorial-borrowed-ptr.html: tutorial-borrowed-ptr.md doc/version_info.html doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=html5 --css=rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/tutorial-tasks.html
|
|
doc/tutorial-tasks.html: tutorial-tasks.md doc/version_info.html doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=html5 --css=rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/tutorial-conditions.html
|
|
doc/tutorial-conditions.html: tutorial-conditions.md doc/version_info.html doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=html5 --css=rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
DOCS += doc/tutorial-rustpkg.html
|
|
doc/tutorial-rustpkg.html: tutorial-rustpkg.md doc/version_info.html doc/rust.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
$(CFG_PANDOC) --standalone --toc \
|
|
--section-divs --number-sections \
|
|
--from=markdown --to=html5 --css=rust.css \
|
|
--include-before-body=doc/version_info.html \
|
|
--output=$@
|
|
|
|
ifeq ($(CFG_PDFLATEX),)
|
|
$(info cfg: no pdflatex found, omitting doc/rust.pdf)
|
|
else
|
|
ifeq ($(CFG_XETEX),)
|
|
$(info cfg: no xetex found, disabling doc/rust.pdf)
|
|
else
|
|
ifeq ($(CFG_LUATEX),)
|
|
$(info cfg: lacking luatex, disabling pdflatex)
|
|
else
|
|
|
|
DOCS += doc/rust.pdf
|
|
doc/rust.pdf: doc/rust.tex
|
|
@$(call E, pdflatex: $@)
|
|
$(Q)$(CFG_PDFLATEX) \
|
|
-interaction=batchmode \
|
|
-output-directory=doc \
|
|
$<
|
|
|
|
DOCS += doc/tutorial.pdf
|
|
doc/tutorial.pdf: doc/tutorial.tex
|
|
@$(call E, pdflatex: $@)
|
|
$(Q)$(CFG_PDFLATEX) \
|
|
-interaction=batchmode \
|
|
-output-directory=doc \
|
|
$<
|
|
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endif # No pandoc / node
|
|
|
|
######################################################################
|
|
# LLnextgen (grammar analysis from refman)
|
|
######################################################################
|
|
ifeq ($(CFG_LLNEXTGEN),)
|
|
$(info cfg: no llnextgen found, omitting grammar-verification)
|
|
else
|
|
.PHONY: verify-grammar
|
|
|
|
doc/rust.g: rust.md $(S)src/etc/extract_grammar.py
|
|
@$(call E, extract_grammar: $@)
|
|
$(Q)$(CFG_PYTHON) $(S)src/etc/extract_grammar.py $< >$@
|
|
|
|
verify-grammar: doc/rust.g
|
|
@$(call E, LLnextgen: $<)
|
|
$(Q)$(CFG_LLNEXTGEN) --generate-lexer-wrapper=no $< >$@
|
|
$(Q)rm -f doc/rust.c doc/rust.h
|
|
endif
|
|
|
|
|
|
######################################################################
|
|
# Rustdoc (libstd/extra)
|
|
######################################################################
|
|
|
|
# The rustdoc executable
|
|
RUSTDOC = $(HBIN2_H_$(CFG_BUILD))/rustdoc$(X_$(CFG_BUILD))
|
|
|
|
# The library documenting macro
|
|
# $(1) - The crate name (std/extra)
|
|
# $(2) - The crate file
|
|
# $(3) - The relevant host build triple (to depend on libstd)
|
|
define libdoc
|
|
doc/$(1)/index.html: $$(RUSTDOC) $$(TLIB2_T_$(3)_H_$(3))/$(CFG_STDLIB_$(3))
|
|
@$$(call E, rustdoc: $$@)
|
|
$(Q)$(RUSTDOC) $(2)
|
|
|
|
DOCS += doc/$(1)/index.html
|
|
endef
|
|
|
|
$(eval $(call libdoc,std,$(STDLIB_CRATE),$(CFG_BUILD)))
|
|
$(eval $(call libdoc,extra,$(EXTRALIB_CRATE),$(CFG_BUILD)))
|
|
|
|
|
|
ifdef CFG_DISABLE_DOCS
|
|
$(info cfg: disabling doc build (CFG_DISABLE_DOCS))
|
|
DOCS :=
|
|
endif
|
|
|
|
|
|
doc/version.md: $(MKFILE_DEPS) $(wildcard $(S)doc/*.*)
|
|
@$(call E, version-stamp: $@)
|
|
$(Q)echo "$(CFG_VERSION)" >$@
|
|
|
|
doc/version_info.html: version_info.html.template $(MKFILE_DEPS) \
|
|
$(wildcard $(S)doc/*.*)
|
|
@$(call E, version-info: $@)
|
|
sed -e "s/VERSION/$(CFG_RELEASE)/; s/SHORT_HASH/$(shell echo \
|
|
$(CFG_VER_HASH) | head -c 8)/;\
|
|
s/STAMP/$(CFG_VER_HASH)/;" $< >$@
|
|
|
|
GENERATED += doc/version.md doc/version_info.html
|
|
|
|
docs: $(DOCS)
|
|
|
|
docs-l10n: $(DOCS_L10N)
|
|
|
|
doc/l10n/%.md: doc/po/%.md.po doc/po4a.conf
|
|
po4a --copyright-holder="The Rust Project Developers" \
|
|
--package-name="Rust" \
|
|
--package-version="$(CFG_RELEASE)" \
|
|
-M UTF-8 -L UTF-8 \
|
|
doc/po4a.conf
|
|
|
|
.PHONY: docs-l10n
|