CFG_VALGRIND :=
endif
-DOCS :=
-ifeq ($(CFG_PANDOC),)
- $(info cfg: no pandoc found, omitting doc/rust.html)
-else
- DOCS += doc/rust.html
-endif
-
-ifeq ($(CFG_PANDOC),)
- $(info cfg: no pandoc found, omitting doc/rust.pdf)
-else
- ifeq ($(CFG_PDFLATEX),)
- $(info cfg: no pdflatex found, omitting doc/rust.pdf)
- else
- DOCS += doc/rust.pdf
- endif
-endif
-
-ifeq ($(CFG_NODE),)
- $(info cfg: no node found, omitting doc/tutorial/web)
-else
- DOCS += doc/tutorial/web/index.html
-endif
-
-ifeq ($(CFG_NATURALDOCS),)
- $(info cfg: no naturaldocs found, omitting library doc build)
-else
- DOCS += doc/core/index.html doc/std/index.html
-endif
-
-ifdef CFG_DISABLE_DOCS
- $(info cfg: disabling doc build (CFG_DISABLE_DOCS))
- DOCS :=
-endif
######################################################################
# Target-and-rule "utility variables"
CFG_INFO := $(info cfg: *** stage2 and later will not be built ***)
CFG_INFO := $(info cfg:)
-all: $(SREQ1$(CFG_HOST_TRIPLE)) $(GENERATED) $(DOCS)
+all: $(SREQ1$(CFG_HOST_TRIPLE)) $(GENERATED) docs
else
CARGO := $(HBIN3_H_$(CFG_HOST_TRIPLE))/cargo$(X)
RUSTDOC := $(HBIN3_H_$(CFG_HOST_TRIPLE))/rustdoc$(X)
-all: rustc $(GENERATED) $(DOCS) $(FUZZ) $(CARGO) $(RUSTDOC)
+all: rustc $(GENERATED) docs $(FUZZ) $(CARGO) $(RUSTDOC)
endif
# Doc variables and rules
######################################################################
-doc/version.md: $(MKFILE_DEPS) rust.md
- @$(call E, version-stamp: $@)
- $(Q)echo "$(CFG_VERSION)" >>$@
+DOCS :=
-doc/keywords.md: $(MKFILE_DEPS) rust.md
- @$(call E, grep -v: $$@)
- $(Q)grep -v '^#' $< >$@
-ifdef CFG_PANDOC
+######################################################################
+# Pandoc (reference-manual related)
+######################################################################
+ifeq ($(CFG_PANDOC),)
+ $(info cfg: no pandoc found, omitting doc/rust.pdf)
+else
+DOCS += doc/rust.html
doc/rust.html: rust.md doc/version.md doc/keywords.md
@$(call E, pandoc: $@)
$(Q)$(CFG_PANDOC) \
-$(Q)cp -a $(S)doc/rust.css doc/rust.css 2> /dev/null
-ifdef CFG_PDFLATEX
+ 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 doc/keywords.md
@$(call E, pandoc: $@)
$(Q)$(CFG_PANDOC) \
-output-directory=doc \
$<
+ endif
+ endif
+ 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
-ifdef CFG_NODE
+######################################################################
+# Node (tutorial related)
+######################################################################
+ifeq ($(CFG_NODE),)
+ $(info cfg: no node found, omitting doc/tutorial/web)
+else
+DOCS += doc/tutorial/web/index.html
doc/tutorial/web/index.html: \
$(wildcard $(S)doc/tutorial/*.md)
@$(call E, cp: $(S)doc/tutorial)
endif
-ifdef CFG_LLNEXTGEN
-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
-
-
-GENERATED += doc/keywords.md doc/version.md
+######################################################################
+# Naturaldocs (library reference related)
+######################################################################
-docsnap: doc/rust.pdf
- @$(call E, snap: doc/rust-$(shell date +"%Y-%m-%d")-snap.pdf)
- $(Q)mv $< doc/rust-$(shell date +"%Y-%m-%d")-snap.pdf
+ifeq ($(CFG_NATURALDOCS),)
+ $(info cfg: no naturaldocs found, omitting library doc build)
+else
define libdoc
doc/$(1)/index.html: nd/$(1)/Languages.txt nd/$(1)/Topics.txt \
nd/$(1)/Data
DOCS += doc/$(1)/index.html nd/$(1)/lib.css
-
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/keywords.md: $(MKFILE_DEPS) rust.md
+ @$(call E, grep -v: $$@)
+ $(Q)grep -v '^#' $< >$@
+
+GENERATED += doc/keywords.md doc/version.md
docs: $(DOCS)