gnu: Add python-pastescript.
[jackhill/guix/guix.git] / doc.am
diff --git a/doc.am b/doc.am
index 1c52066..127029c 100644 (file)
--- a/doc.am
+++ b/doc.am
@@ -1,6 +1,9 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 # Copyright © 2013 Andreas Enge <andreas@enge.fr>
+# Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+# Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 #
 # This file is part of GNU Guix.
 #
 # along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 info_TEXINFOS = doc/guix.texi
+
+DOT_FILES =                                    \
+  doc/images/bootstrap-graph.dot               \
+  doc/images/bootstrap-packages.dot            \
+  doc/images/coreutils-graph.dot               \
+  doc/images/coreutils-bag-graph.dot           \
+  doc/images/service-graph.dot                 \
+  doc/images/shepherd-graph.dot
+
+DOT_VECTOR_GRAPHICS =                          \
+  $(DOT_FILES:%.dot=%.eps)                     \
+  $(DOT_FILES:%.dot=%.pdf)
+
 EXTRA_DIST +=                                  \
+  doc/htmlxref.cnf                             \
   doc/contributing.texi                                \
   doc/emacs.texi                               \
   doc/fdl-1.3.texi                             \
-  doc/images/bootstrap-graph.dot               \
-  doc/images/bootstrap-graph.eps               \
-  doc/images/bootstrap-graph.pdf
+  $(DOT_FILES)                                 \
+  $(DOT_VECTOR_GRAPHICS)                       \
+  doc/images/coreutils-size-map.eps            \
+  doc/environment-gdb.scm                      \
+  doc/package-hello.scm
 
 OS_CONFIG_EXAMPLES_TEXI =                      \
   doc/os-config-bare-bones.texi                        \
@@ -36,11 +55,13 @@ EXTRA_DIST           += $(OS_CONFIG_EXAMPLES_TEXI)
 MAINTAINERCLEANFILES  = $(OS_CONFIG_EXAMPLES_TEXI)
 
 doc/os-config-%.texi: gnu/system/examples/%.tmpl
-       $(MKDIR_P) "`dirname "$@"`"
+       $(AM_V_GEN)$(MKDIR_P) "`dirname $@`";   \
        cp "$<" "$@"
 
 infoimagedir = $(infodir)/images
-dist_infoimage_DATA = doc/images/bootstrap-graph.png
+dist_infoimage_DATA =                          \
+  $(DOT_FILES:%.dot=%.png)                     \
+  doc/images/coreutils-size-map.png
 
 # Try hard to obtain an image size and aspect that's reasonable for inclusion
 # in an Info or PDF document.
@@ -49,69 +70,86 @@ DOT_OPTIONS =                                       \
   -Nfontsize=9 -Nheight=.1 -Nwidth=.1
 
 .dot.png:
-       $(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$@.tmp"
-       mv "$@.tmp" "$@"
+       $(AM_V_DOT)$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \
+       mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
 
 .dot.pdf:
-       $(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$@.tmp"
-       mv "$@.tmp" "$@"
+       $(AM_V_DOT)$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \
+       mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
 
 .dot.eps:
-       $(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$@.tmp"
-       mv "$@.tmp" "$@"
+       $(AM_V_DOT)$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \
+       mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
+
+.png.eps:
+       $(AM_V_GEN)convert "$<" "$@-tmp.eps"; \
+       mv "$@-tmp.eps" "$@"
 
 # We cannot add new dependencies to `doc/guix.pdf' & co. (info "(automake)
 # Extending").  Using the `-local' rules is imperfect, because they may be
 # triggered after the main rule.  Oh, well.
-pdf-local: $(top_srcdir)/doc/images/bootstrap-graph.pdf
-info-local: $(top_srcdir)/doc/images/bootstrap-graph.png
-ps-local: $(top_srcdir)/doc/images/bootstrap-graph.eps
-
-\f
-# Manual pages.
-
-doc/guix.1: scripts/guix
-       -LANGUAGE= $(top_builddir)/pre-inst-env \
-         $(HELP2MAN) --output="$@" guix
-
-doc/guix-daemon.1: guix-daemon
-       -LANGUAGE= $(top_builddir)/pre-inst-env \
-         $(HELP2MAN) --output="$@" guix-daemon
-
-define subcommand-manual-target
-
-doc/guix-$(1).1: scripts/guix guix/scripts/$(1).go
-       -LANGUAGE= $(top_builddir)/pre-inst-env         \
-         $(HELP2MAN) --output="$$@" "guix $(1)"
-
-endef
-
-SUBCOMMANDS :=                                 \
-  archive                                      \
-  build                                                \
-  download                                     \
-  edit                                         \
-  environment                                  \
-  gc                                           \
-  hash                                         \
-  import                                       \
-  lint                                         \
-  package                                      \
-  publish                                      \
-  pull                                         \
-  refresh                                      \
-  system
-
-$(eval $(foreach subcommand,$(SUBCOMMANDS),                    \
-          $(call subcommand-manual-target,$(subcommand))))
+pdf-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.pdf)
+info-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.png)
+ps-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.eps)               \
+         $(top_srcdir)/doc/images/coreutils-size-map.eps
+dvi-local: ps-local
+
+## ----------- ##
+##  Man pages. ##
+## ----------- ##
+
+sub_commands_mans =                            \
+  doc/guix-archive.1                           \
+  doc/guix-build.1                             \
+  doc/guix-challenge.1                         \
+  doc/guix-download.1                          \
+  doc/guix-edit.1                              \
+  doc/guix-environment.1                       \
+  doc/guix-gc.1                                        \
+  doc/guix-hash.1                              \
+  doc/guix-import.1                            \
+  doc/guix-lint.1                              \
+  doc/guix-package.1                           \
+  doc/guix-publish.1                           \
+  doc/guix-pull.1                              \
+  doc/guix-refresh.1                           \
+  doc/guix-size.1                              \
+  doc/guix-system.1
 
 dist_man1_MANS =                               \
   doc/guix.1                                   \
-  $(SUBCOMMANDS:%=doc/guix-%.1)
+  $(sub_commands_mans)
+
+# Man pages are generated using GNU help2man.
+gen_man =                                              \
+  LANGUAGE= $(top_builddir)/pre-inst-env $(HELP2MAN)   \
+  $(HELP2MANFLAGS)
+
+HELP2MANFLAGS = --source=GNU --info-page=$(PACKAGE_TARNAME)
+
+# Note: Do not depend on 'scripts/guix' since that would trigger a rebuild
+# even for people building from a tarball.
+doc/guix.1: $(sub_commands_mans)
+       -$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
+
+# Note: The dependency on $(GOBJECTS) is meant to force these docs to be made
+# only after all Guile modules have been compiled.  The 'case' ensures the man
+# pages are only generated if the corresponding script source has been
+# changed.
+doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
+       -@case '$?' in \
+         *$<*) $(AM_V_P) && set -x || echo "  HELP2MAN $@"; \
+               $(gen_man) --output="$@" "guix $*";; \
+         *)    : ;; \
+       esac
 
 if BUILD_DAEMON
 
-dist_man1_MANS +=                              \
-  doc/guix-daemon.1
+dist_man1_MANS += doc/guix-daemon.1
+
+# Note: Do not depend on 'guix-daemon' since that would trigger a rebuild even
+# for people building from a tarball.
+doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
+       -$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
 
 endif