/mk/docs.mk
http://github.com/jruderman/rust · Makefile · 158 lines · 106 code · 32 blank · 20 comment · 0 complexity · d3b731620499cc303bbf84a5b7037d8e MD5 · raw file
- ######################################################################
- # Doc variables and rules
- ######################################################################
- DOCS :=
- ######################################################################
- # Pandoc (reference-manual related)
- ######################################################################
- ifeq ($(CFG_PANDOC),)
- $(info cfg: no pandoc found, omitting doc/rust.pdf)
- else
- ifeq ($(CFG_NODE),)
- $(info cfg: no node found, omitting doc/tutorial.html)
- else
- doc/rust.css: rust.css
- @$(call E, cp: $@)
- $(Q)cp -a $< $@ 2> /dev/null
- DOCS += doc/rust.html
- doc/rust.html: rust.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=$@
- endif
- 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.tex: rust.md doc/version.md
- @$(call E, pandoc: $@)
- $(Q)$(CFG_NODE) $(S)doc/prep.js $< | \
- "$(CFG_PANDOC)" \
- --standalone --toc \
- --number-sections \
- --from=markdown --to=latex \
- --output=$@
- doc/rust.pdf: doc/rust.tex
- @$(call E, pdflatex: $@)
- $(Q)$(CFG_PDFLATEX) \
- -interaction=batchmode \
- -output-directory=doc \
- $<
- endif
- endif
- endif
- ######################################################################
- # Node (tutorial related)
- ######################################################################
- ifeq ($(CFG_NODE),)
- $(info cfg: no node found, omitting doc/tutorial.html)
- else
- 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=$@
- endif
- endif
- ######################################################################
- # 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)$(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 (libcore/std)
- ######################################################################
- ifeq ($(CFG_PANDOC),)
- $(info cfg: no pandoc found, omitting library doc build)
- else
- # The rustdoc executable
- RUSTDOC = $(HBIN2_H_$(CFG_HOST_TRIPLE))/rustdoc$(X)
- # The library documenting macro
- # $(1) - The output directory
- # $(2) - The crate file
- # $(3) - The crate soruce files
- define libdoc
- doc/$(1)/index.html: $(2) $(3) $$(RUSTDOC) doc/$(1)/rust.css
- @$$(call E, rustdoc: $$@)
- $(Q)$(RUSTDOC) $(2) --output-dir=doc/$(1)
- doc/$(1)/rust.css: rust.css
- @$$(call E, cp: $$@)
- $(Q)cp $$< $$@
- DOCS += doc/$(1)/index.html
- endef
- $(eval $(call libdoc,core,$(CORELIB_CRATE),$(CORELIB_INPUTS)))
- $(eval $(call libdoc,std,$(STDLIB_CRATE),$(STDLIB_INPUTS)))
- endif
- ifdef CFG_DISABLE_DOCS
- $(info cfg: disabling doc build (CFG_DISABLE_DOCS))
- DOCS :=
- endif
- doc/version.md: $(MKFILE_DEPS) rust.md
- @$(call E, version-stamp: $@)
- $(Q)echo "$(CFG_VERSION)" >$@
- doc/version_info.html: version_info_template.html
- @$(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
- docs: $(DOCS)