From 95f7c4722399964142aac1813c72f566d84d4d72 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 18 Sep 2009 11:03:38 +0200 Subject: Integrate documentation generation into the build system --- build/bootstrap.make | 50 ++++++++++++++++++++---------- documentation/cxx/makefile | 20 ++++++++++++ documentation/cxx/parser/guide/makefile | 55 +++++++++++++++++++++++++++------ documentation/cxx/tree/guide/makefile | 53 +++++++++++++++++++++++++------ documentation/cxx/tree/manual/makefile | 53 +++++++++++++++++++++++++------ documentation/makefile | 14 +++++++-- makefile | 14 ++++++--- 7 files changed, 209 insertions(+), 50 deletions(-) create mode 100644 documentation/cxx/makefile diff --git a/build/bootstrap.make b/build/bootstrap.make index 1c3d21e..1c38a72 100644 --- a/build/bootstrap.make +++ b/build/bootstrap.make @@ -9,7 +9,6 @@ include build-0.3/bootstrap.make # Configuration # - $(call include,$(scf_root)/configuration.make) @@ -17,38 +16,57 @@ $(call include,$(scf_root)/configuration.make) # ifdef %interactive% -.PHONY: test $(out_base)/.test \ - install $(out_base)/.install \ - clean $(out_base)/.clean +.PHONY: test $(out_base)/.test \ + install $(out_base)/.install \ + dist $(out_base)/.dist \ + dist-win $(out_base)/.dist-win \ + clean $(out_base)/.clean \ + cleandoc $(out_base)/.cleandoc test: $(out_base)/.test install: $(out_base)/.install +dist: $(out_base)/.dist +dist-win: $(out_base)/.dist-win clean: $(out_base)/.clean +cleandoc: $(out_base)/.cleandoc -ifeq ($(.DEFAULT_GOAL),test) +ifneq ($(filter $(.DEFAULT_GOAL),test install dist dist-win clean cleandoc),) .DEFAULT_GOAL := endif -ifeq ($(.DEFAULT_GOAL),install) -.DEFAULT_GOAL := endif -ifeq ($(.DEFAULT_GOAL),clean) -.DEFAULT_GOAL := -endif +# Make sure the distribution prefix is set if the goal is dist or dist-win. +# +ifneq ($(filter $(MAKECMDGOALS),dist dist-win),) +ifeq ($(dist_prefix),) +$(error dist_prefix is not set) +endif endif -# Don't include dependency info if we are cleaning. +# Don't include dependency info for certain targets. # define include-dep -endef - -ifneq ($(MAKECMDGOALS),clean) -ifneq ($(MAKECMDGOALS),disfigure) -define include-dep $(call -include,$1) endef + +ifneq ($(filter $(MAKECMDGOALS),clean cleandoc disfigure),) +include-dep = endif + + +# For dist, don't include dependecies in examples, and tests. +# +ifneq ($(filter $(MAKECMDGOALS),dist dist-win),) + +ifneq ($(subst $(src_root)/tests/,,$(src_base)),$(src_base)) +include-dep = +endif + +ifneq ($(subst $(src_root)/examples/,,$(src_base)),$(src_base)) +include-dep = +endif + endif diff --git a/documentation/cxx/makefile b/documentation/cxx/makefile new file mode 100644 index 0000000..551aef4 --- /dev/null +++ b/documentation/cxx/makefile @@ -0,0 +1,20 @@ +# file : documentation/cxx/makefile +# author : Boris Kolpackov +# copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make + +docs := parser/guide tree/guide tree/manual + +default := $(out_base)/ +dist := $(out_base)/.dist +dist-win := $(out_base)/.dist-win +cleandoc := $(out_base)/.cleandoc + +$(default): $(addprefix $(out_base)/,$(addsuffix /,$(docs))) +$(dist): $(addprefix $(out_base)/,$(addsuffix /.dist,$(docs))) +$(dist-win): $(addprefix $(out_base)/,$(addsuffix /.dist-win,$(docs))) +$(cleandoc): $(addprefix $(out_base)/,$(addsuffix /.cleandoc,$(docs))) + +$(foreach m,$(docs),$(call import,$(src_base)/$m/makefile)) diff --git a/documentation/cxx/parser/guide/makefile b/documentation/cxx/parser/guide/makefile index ca76286..1d85874 100644 --- a/documentation/cxx/parser/guide/makefile +++ b/documentation/cxx/parser/guide/makefile @@ -1,12 +1,49 @@ -.PHONY: all -all: cxx-parser-guide.ps cxx-parser-guide.pdf +# file : documentation/cxx/parser/guide/makefile +# author : Boris Kolpackov +# copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file -cxx-parser-guide.pdf: cxx-parser-guide.ps - ps2pdf14 $< +include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make -cxx-parser-guide.ps: index.xhtml guide.html2ps - html2ps -f guide.html2ps -o $@ $< +default := $(out_base)/ +dist := $(out_base)/.dist +dist-win := $(out_base)/.dist-win +cleandoc := $(out_base)/.cleandoc -.PHONY: clean -clean: - rm -f cxx-parser-guide.ps cxx-parser-guide.pdf +.PHONY: $(default) $(dist) $(dist-win) $(cleandoc) + +# Build. +# +$(default): $(out_base)/cxx-parser-guide.ps $(out_base)/cxx-parser-guide.pdf + + +$(out_base)/cxx-parser-guide.ps: $(src_base)/index.xhtml \ + $(src_base)/figure-1.png \ + $(src_base)/guide.html2ps \ + | $(out_base)/. + $(call message,html2ps $<,html2ps -f $(src_base)/guide.html2ps -o $@ $<) + +$(out_base)/cxx-parser-guide.pdf: $(out_base)/cxx-parser-guide.ps | $(out_base)/. + $(call message,ps2pdf $<,ps2pdf14 $< $@) + +# Dist. +# +$(dist): path := $(subst $(src_root)/,,$(src_base)) +$(dist): $(out_base)/cxx-parser-guide.ps $(out_base)/cxx-parser-guide.pdf + $(call install-data,$(src_base)/figure-1.png,$(dist_prefix)/$(path)/figure-1.png) + $(call install-data,$(src_base)/index.xhtml,$(dist_prefix)/$(path)/index.xhtml) + $(call install-data,$(out_base)/cxx-parser-guide.ps,$(dist_prefix)/$(path)/cxx-parser-guide.ps) + $(call install-data,$(out_base)/cxx-parser-guide.pdf,$(dist_prefix)/$(path)/cxx-parser-guide.pdf) + +$(dist-win): $(dist) + + +# Clean +# +$(cleandoc): + $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-parser-guide.ps) + $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-parser-guide.pdf) + +# How to. +# +$(call include,$(bld_root)/install.make) diff --git a/documentation/cxx/tree/guide/makefile b/documentation/cxx/tree/guide/makefile index 188b419..7c52f36 100644 --- a/documentation/cxx/tree/guide/makefile +++ b/documentation/cxx/tree/guide/makefile @@ -1,12 +1,47 @@ -.PHONY: all -all: cxx-tree-guide.ps cxx-tree-guide.pdf +# file : documentation/cxx/tree/guide/makefile +# author : Boris Kolpackov +# copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file -cxx-tree-guide.pdf: cxx-tree-guide.ps - ps2pdf14 $< +include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make -cxx-tree-guide.ps: index.xhtml guide.html2ps - html2ps -f guide.html2ps -o $@ $< +default := $(out_base)/ +dist := $(out_base)/.dist +dist-win := $(out_base)/.dist-win +cleandoc := $(out_base)/.cleandoc -.PHONY: clean -clean: - rm -f cxx-tree-guide.ps cxx-tree-guide.pdf +.PHONY: $(default) $(dist) $(dist-win) $(cleandoc) + +# Build. +# +$(default): $(out_base)/cxx-tree-guide.ps $(out_base)/cxx-tree-guide.pdf + + +$(out_base)/cxx-tree-guide.ps: $(src_base)/index.xhtml \ + $(src_base)/guide.html2ps \ + | $(out_base)/. + $(call message,html2ps $<,html2ps -f $(src_base)/guide.html2ps -o $@ $<) + +$(out_base)/cxx-tree-guide.pdf: $(out_base)/cxx-tree-guide.ps | $(out_base)/. + $(call message,ps2pdf $<,ps2pdf14 $< $@) + +# Dist. +# +$(dist): path := $(subst $(src_root)/,,$(src_base)) +$(dist): $(out_base)/cxx-tree-guide.ps $(out_base)/cxx-tree-guide.pdf + $(call install-data,$(src_base)/index.xhtml,$(dist_prefix)/$(path)/index.xhtml) + $(call install-data,$(out_base)/cxx-tree-guide.ps,$(dist_prefix)/$(path)/cxx-tree-guide.ps) + $(call install-data,$(out_base)/cxx-tree-guide.pdf,$(dist_prefix)/$(path)/cxx-tree-guide.pdf) + +$(dist-win): $(dist) + + +# Clean +# +$(cleandoc): + $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-tree-guide.ps) + $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-tree-guide.pdf) + +# How to. +# +$(call include,$(bld_root)/install.make) diff --git a/documentation/cxx/tree/manual/makefile b/documentation/cxx/tree/manual/makefile index bfdd6d3..1586cfb 100644 --- a/documentation/cxx/tree/manual/makefile +++ b/documentation/cxx/tree/manual/makefile @@ -1,12 +1,47 @@ -.PHONY: all -all: cxx-tree-manual.ps cxx-tree-manual.pdf +# file : documentation/cxx/tree/manual/makefile +# author : Boris Kolpackov +# copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file -cxx-tree-manual.pdf: cxx-tree-manual.ps - ps2pdf14 $< +include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make -cxx-tree-manual.ps: index.xhtml manual.html2ps - html2ps -f manual.html2ps -o $@ $< +default := $(out_base)/ +dist := $(out_base)/.dist +dist-win := $(out_base)/.dist-win +cleandoc := $(out_base)/.cleandoc -.PHONY: clean -clean: - rm -f cxx-tree-manual.ps cxx-tree-manual.pdf +.PHONY: $(default) $(dist) $(dist-win) $(cleandoc) + +# Build. +# +$(default): $(out_base)/cxx-tree-manual.ps $(out_base)/cxx-tree-manual.pdf + + +$(out_base)/cxx-tree-manual.ps: $(src_base)/index.xhtml \ + $(src_base)/manual.html2ps \ + | $(out_base)/. + $(call message,html2ps $<,html2ps -f $(src_base)/manual.html2ps -o $@ $<) + +$(out_base)/cxx-tree-manual.pdf: $(out_base)/cxx-tree-manual.ps | $(out_base)/. + $(call message,ps2pdf $<,ps2pdf14 $< $@) + +# Dist. +# +$(dist): path := $(subst $(src_root)/,,$(src_base)) +$(dist): $(out_base)/cxx-tree-manual.ps $(out_base)/cxx-tree-manual.pdf + $(call install-data,$(src_base)/index.xhtml,$(dist_prefix)/$(path)/index.xhtml) + $(call install-data,$(out_base)/cxx-tree-manual.ps,$(dist_prefix)/$(path)/cxx-tree-manual.ps) + $(call install-data,$(out_base)/cxx-tree-manual.pdf,$(dist_prefix)/$(path)/cxx-tree-manual.pdf) + +$(dist-win): $(dist) + + +# Clean +# +$(cleandoc): + $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-tree-manual.ps) + $(call message,rm $$1,rm -f $$1,$(out_base)/cxx-tree-manual.pdf) + +# How to. +# +$(call include,$(bld_root)/install.make) diff --git a/documentation/makefile b/documentation/makefile index 3fd6133..7d581ac 100644 --- a/documentation/makefile +++ b/documentation/makefile @@ -5,10 +5,14 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make -install := $(out_base)/.install +default := $(out_base)/ +install := $(out_base)/.install +cleandoc := $(out_base)/.cleandoc -.PHONY: $(install) +$(default): $(out_base)/cxx/ +# Install. +# $(install): $(call install-dir,$(src_base)/cxx,$(install_doc_dir)/xsd/cxx) $(call install-data,$(src_base)/default.css,$(install_doc_dir)/xsd/default.css) @@ -17,4 +21,10 @@ $(install): $(call install-data,$(src_base)/xsd.xhtml,$(install_doc_dir)/xsd/xsd.xhtml) $(call install-data,$(src_base)/xsd.1,$(install_man_dir)/man1/xsd.1) +# Clean. +# +$(cleandoc): $(src_base)/cxx/.cleandoc + $(call include,$(bld_root)/install.make) + +$(call import,$(src_base)/cxx/makefile) diff --git a/makefile b/makefile index 55d8fdc..d82be89 100644 --- a/makefile +++ b/makefile @@ -5,16 +5,18 @@ include $(dir $(lastword $(MAKEFILE_LIST)))build/bootstrap.make -default := $(out_base)/ -test := $(out_base)/.test -install := $(out_base)/.install -clean := $(out_base)/.clean +default := $(out_base)/ +test := $(out_base)/.test +install := $(out_base)/.install +clean := $(out_base)/.clean +cleandoc := $(out_base)/.cleandoc .PHONY: $(default) $(test) $(install) $(clean) $(default): $(out_base)/xsd/ \ $(out_base)/tests/ \ - $(out_base)/examples/ + $(out_base)/examples/ \ + $(out_base)/documentation/ $(test): $(out_base)/tests/.test @@ -32,6 +34,8 @@ $(clean): $(out_base)/xsd/.clean \ $(out_base)/tests/.clean \ $(out_base)/examples/.clean +$(cleandoc): $(out_base)/documentation/.cleandoc + $(call include,$(bld_root)/install.make) $(call import,$(src_base)/xsd/makefile) -- cgit v1.1