aboutsummaryrefslogtreecommitdiff
path: root/documentation/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/makefile')
-rw-r--r--documentation/makefile133
1 files changed, 123 insertions, 10 deletions
diff --git a/documentation/makefile b/documentation/makefile
index 5b2f0e8..1a72794 100644
--- a/documentation/makefile
+++ b/documentation/makefile
@@ -11,35 +11,148 @@ dist-win := $(out_base)/.dist-win
install := $(out_base)/.install
cleandoc := $(out_base)/.cleandoc
-$(default): $(out_base)/cxx/
+# Import.
+#
+$(call import,\
+ $(scf_root)/import/cli/stub.make,\
+ cli: cli,cli-rules: cli_rules)
+
+# Build.
+#
+$(default): \
+$(out_base)/cxx/ \
+$(out_base)/xsde.xhtml \
+$(out_base)/xsde.1
+
+# Man/html pages.
+#
+$(out_base)/xsde.xhtml $(out_base)/xsde.1: cli := $(cli)
+$(out_base)/xsde.xhtml $(out_base)/xsde.1: cli_options += -I $(src_root)/xsde
+
+$(out_base)/xsde.xhtml $(out_base)/xsde.1: \
+$(src_root)/xsde/options.cli \
+$(src_root)/xsde/cxx/options.cli \
+$(src_root)/xsde/cxx/hybrid/options.cli \
+$(src_root)/xsde/cxx/parser/options.cli \
+$(src_root)/xsde/cxx/serializer/options.cli
+
+# Assemble the options from different files in a specific order.
+#
+
+# XHTML
+#
+$(out_base)/xsde.xhtml: $(src_base)/xsde-prologue.xhtml \
+ $(src_base)/xsde-epilogue.xhtml \
+ $(src_base)/xsde-hybrid-header.xhtml \
+ $(src_base)/xsde-parser-header.xhtml \
+ $(src_base)/xsde-serializer-header.xhtml \
+ | $(out_base)/.
+# Common options.
+#
+ $(call message,cli-html $$1,$(cli) $(cli_options) --generate-html \
+--stdout --suppress-undocumented --exclude-base --class CXX::options \
+--class options --html-prologue $(src_base)/xsde-prologue.xhtml \
+$$1 >$@, $(src_root)/xsde/cxx/options.cli)
+
+# C++/Hybrid options.
+#
+ $(call message,cli-html $$1,$(cli) $(cli_options) --generate-html \
+--stdout --suppress-undocumented --exclude-base \
+--html-prologue $(src_base)/xsde-hybrid-header.xhtml \
+$$1 >>$@, $(src_root)/xsde/cxx/hybrid/options.cli)
+
+# C++/Parser options.
+#
+ $(call message,cli-html $$1,$(cli) $(cli_options) --generate-html \
+--stdout --suppress-undocumented --exclude-base \
+--html-prologue $(src_base)/xsde-parser-header.xhtml \
+$$1 >>$@, $(src_root)/xsde/cxx/parser/options.cli)
+
+# C++/Serializer options.
+#
+ $(call message,cli-html $$1,$(cli) $(cli_options) --generate-html \
+--stdout --suppress-undocumented --exclude-base \
+--html-prologue $(src_base)/xsde-serializer-header.xhtml \
+--html-epilogue $(src_base)/xsde-epilogue.xhtml \
+$$1 >>$@, $(src_root)/xsde/cxx/serializer/options.cli)
+
+
+# MAN
+#
+$(out_base)/xsde.1: $(src_base)/xsde-prologue.1 \
+ $(src_base)/xsde-epilogue.1 \
+ $(src_base)/xsde-hybrid-header.1 \
+ $(src_base)/xsde-parser-header.1 \
+ $(src_base)/xsde-serializer-header.1 \
+ | $(out_base)/.
+# Common options.
+#
+ $(call message,cli-man $$1,$(cli) $(cli_options) --generate-man \
+--stdout --suppress-undocumented --exclude-base --class CXX::options \
+--class options --man-prologue $(src_base)/xsde-prologue.1 \
+$$1 >$@, $(src_root)/xsde/cxx/options.cli)
+
+# C++/Hybrid options.
+#
+ $(call message,cli-man $$1,$(cli) $(cli_options) --generate-man \
+--stdout --suppress-undocumented --exclude-base \
+--man-prologue $(src_base)/xsde-hybrid-header.1 \
+$$1 >>$@, $(src_root)/xsde/cxx/hybrid/options.cli)
+
+# C++/Parser options.
+#
+ $(call message,cli-man $$1,$(cli) $(cli_options) --generate-man \
+--stdout --suppress-undocumented --exclude-base \
+--man-prologue $(src_base)/xsde-parser-header.1 \
+$$1 >>$@, $(src_root)/xsde/cxx/parser/options.cli)
+
+# C++/Serializer options.
+#
+ $(call message,cli-man $$1,$(cli) $(cli_options) --generate-man \
+--stdout --suppress-undocumented --exclude-base \
+--man-prologue $(src_base)/xsde-serializer-header.1 \
+--man-epilogue $(src_base)/xsde-epilogue.1 \
+$$1 >>$@, $(src_root)/xsde/cxx/serializer/options.cli)
+
# Dist.
#
dist-common := $(out_base)/.dist-common
-$(dist-common):
+$(dist-common): $(out_base)/xsde.xhtml \
+ $(out_base)/xsde.1
$(call install-data,$(src_base)/default.css,$(dist_prefix)/documentation/default.css)
- $(call install-data,$(src_base)/xsde.xhtml,$(dist_prefix)/documentation/xsde.xhtml)
- $(call install-data,$(src_base)/xsde.1,$(dist_prefix)/documentation/xsde.1)
+ $(call install-data,$(out_base)/xsde.xhtml,$(dist_prefix)/documentation/xsde.xhtml)
+ $(call install-data,$(out_base)/xsde.1,$(dist_prefix)/documentation/xsde.1)
$(dist): $(dist-common) $(out_base)/cxx/.dist
$(dist-win): $(dist-common) $(out_base)/cxx/.dist
-
# Install.
#
-$(install):
+$(install): $(out_base)/xsde.xhtml \
+ $(out_base)/xsde.1
$(call install-dir,$(src_base)/cxx,$(install_doc_dir)/xsde/cxx)
$(call install-data,$(src_base)/default.css,$(install_doc_dir)/xsde/default.css)
- $(call install-data,$(src_base)/xsde.xhtml,$(install_doc_dir)/xsde/xsde.xhtml)
- $(call install-data,$(src_base)/xsde.1,$(install_man_dir)/man1/xsde.1)
-
+ $(call install-data,$(out_base)/xsde.xhtml,$(install_doc_dir)/xsde/xsde.xhtml)
+ $(call install-data,$(out_base)/xsde.1,$(install_man_dir)/man1/xsde.1)
# Clean.
#
$(cleandoc): $(src_base)/cxx/.cleandoc
+ $(call message,rm $$1,rm -f $$1,$(out_base)/xsde.1)
+ $(call message,rm $$1,rm -f $$1,$(out_base)/xsde.xhtml)
+# Generated .gitignore.
+#
+ifeq ($(out_base),$(src_base))
+$(out_base)/xsde.xhtml $(out_base)/xsde.1: | $(out_base)/.gitignore
-$(call include,$(bld_root)/install.make)
+$(out_base)/.gitignore: files := xsde.1 xsde.xhtml
+$(clean): $(out_base)/.gitignore.clean
+$(call include,$(bld_root)/git/gitignore.make)
+endif
+
+$(call include,$(bld_root)/install.make)
$(call import,$(src_base)/cxx/makefile)