e523f99fb9
This modifies the command-line usage of rustdoc to intake its own JSON output as well as a rust source file. This also alters the command line from `rustdoc input file` to `rustdoc file` with the input/output formats specified as -r and -w, respectively. When using a JSON input, no passes or plugins are re-run over the json, instead the output is generated directly from the JSON that was provided. Passes and plugins are still run on rust source input, however.
270 lines
8.6 KiB
Makefile
270 lines
8.6 KiB
Makefile
# Copyright 2012 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.css: manual.css
|
|
@$(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.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
"$(CFG_PANDOC)" \
|
|
--standalone --toc \
|
|
--section-divs \
|
|
--number-sections \
|
|
--from=markdown --to=html \
|
|
--css=rust.css \
|
|
--css=manual.css \
|
|
--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/rustpkg.html
|
|
doc/rustpkg.html: rustpkg.md doc/version_info.html doc/rust.css doc/manual.css
|
|
@$(call E, pandoc: $@)
|
|
$(Q)$(CFG_NODE) $(S)doc/prep.js --highlight $< | \
|
|
"$(CFG_PANDOC)" \
|
|
--standalone --toc \
|
|
--section-divs \
|
|
--number-sections \
|
|
--from=markdown --to=html \
|
|
--css=rust.css \
|
|
--css=manual.css \
|
|
--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=html --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=html --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=html --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=html --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=html --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=html --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=html --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=html --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=html --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 \
|
|
$<
|
|
|
|
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_TRIPLE))/rustdoc$(X_$(CFG_BUILD_TRIPLE))
|
|
|
|
# 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_TRIPLE)))
|
|
$(eval $(call libdoc,extra,$(EXTRALIB_CRATE),$(CFG_BUILD_TRIPLE)))
|
|
|
|
|
|
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
|