build: Build and install manual pages.
authorJan Nieuwenhuizen <janneke@gnu.org>
Thu, 28 Jun 2018 21:10:14 +0000 (23:10 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Thu, 12 Jul 2018 20:29:59 +0000 (22:29 +0200)
* build-aux/export.make: New file.
* GNUmakefile (man): New target.
  (doc): Depend on man.
  include build-aux/export.make, remove exports.
* guix.scm (mes): Add dependency on help2man.
* configure: Check for help2man.
* install.sh: Install manual pages if built.

.gitignore
GNUmakefile
build-aux/export.make [new file with mode: 0644]
configure
guix.scm
install.sh

index 852e4209f32ff526563b12a7862bf2dbb40964ef..ccfff1af0d8b3bc73c47491aec3f5316d0ca0efb 100644 (file)
@@ -52,8 +52,6 @@
 ?
 ?.mes
 \#*#
-/doc/mes.info
-/doc/version.texi
 /doc/fosdem/fosdem.aux
 /doc/fosdem/fosdem.log
 /doc/fosdem/fosdem.nav
@@ -62,3 +60,7 @@
 /doc/fosdem/fosdem.tex
 /doc/fosdem/fosdem.toc
 /doc/fosdem/fosdem.*vrb
+/doc/mes.1
+/doc/mes.info
+/doc/mescc.1
+/doc/version.texi
index 1ecbb6a0d1e1f4c568e8f2e634af58750578fd1a..26cdaf21250a570db339cf9ee6bb364e4b6014ba 100644 (file)
@@ -1,14 +1,31 @@
-.PHONY: doc
+# Mes --- Maxwell Equations of Software
+# Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+#
+# This file is part of Mes.
+#
+# Mes is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# Mes is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Mes.  If not, see <http://www.gnu.org/licenses/>.
 
-GUILE:=guile
 GUILE_FLAGS:=--no-auto-compile -L . -L guile -C . -C guile
 
 include .config.make
 
 .config.make:
-       ./configure
+       ./configure --prefix=$(PREFIX)
+
+PHONY_TARGETS:= all all-go build check clean clean-go default doc help install install-info man\
+cc mes mes-gcc mes-tcc
 
-PHONY_TARGETS:= all all-go check clean clean-go default help install
 .PHONY: $(PHONY_TARGETS)
 
 default: all
@@ -25,7 +42,12 @@ mes-gcc:
        build-aux/build-cc32.sh
 
 mes-tcc:
+ifdef TCC
        CC32=$(TCC) build-aux/build-cc32.sh
+else
+
+$(warning skipping mes-tcc: no tcc)
+endif
 
 mes:
        build-aux/build-mes.sh
@@ -49,7 +71,9 @@ install:
 .config.make: ./configure
 
 seed: all-go mes-gcc mes-tcc
+ifdef TCC
        cd $(TINYCC_SEED) && MES_PREFIX=$(PWD) ./refresh.sh
+endif
        cd $(MES_SEED) && git reset --hard HEAD
        MES=$(GUILE) GUILE=$(GUILE) SEED=1 build-aux/build-mes.sh
        cd $(MES_SEED) && MES_PREFIX=$(PWD) ./refresh.sh
@@ -70,7 +94,18 @@ doc/version.texi: doc/mes.texi GNUmakefile
        echo "@set EDITION $(VERSION)"; \
        echo "@set VERSION $(VERSION)") > $@
 
+doc: doc/version.texi
+ifdef MAKEINFO
 doc: info
+else
+$(warning skipping info: no makeinfo)
+endif
+
+ifdef HELP2MAN
+doc: man
+else
+$(warning skipping man: no help2man)
+endif
 
 info: doc/mes.info
 
@@ -79,6 +114,17 @@ doc/mes.info: doc/mes.texi doc/version.texi GNUmakefile
 
 install-info: info
 
+man: doc/mes.1 doc/mescc.1
+
+doc/mes.1: src/mes.gcc-out
+       MES_ARENA=10000000 $(HELP2MAN) $< > $@
+
+src/mes.gcc-out:
+       $(MAKE) cc
+
+doc/mescc.1: src/mes.gcc-out scripts/mescc
+       MES_ARENA=10000000 $(HELP2MAN) $< > $@
+
 define HELP_TOP
 Usage: make [OPTION]... [TARGET]...
 
@@ -102,82 +148,4 @@ export HELP_TOP
 help:
        @echo "$$HELP_TOP"
 
-ifdef PREFIX
-export PREFIX
-endif
-
-ifdef VERSION
-export VERSION
-endif
-
-ifdef CC
-export CC
-endif
-
-ifdef CC32
-export CC32
-endif
-
-ifdef BLOOD_ELF
-export BLOOD_ELF
-endif
-
-ifdef M1
-export M1
-endif
-
-ifdef HEX2
-export HEX2
-endif
-
-ifdef GUILE
-export GUILE
-endif
-
-ifdef GUILE_TOOLS
-export GUILE_TOOLS
-endif
-
-ifdef TCC
-export TCC
-endif
-
-ifdef GUILE_LOAD_PATH
-export GUILE_LOAD_PATH
-endif
-
-ifdef GUILE_LOAD_COMPILED_PATH
-export GUILE_LOAD_COMPILED_PATH
-endif
-
-ifdef CFLAGS
-export CFLAGS
-endif
-
-ifdef C32FLAGS
-export C32FLAGS
-endif
-
-ifdef HEX2FLAGS
-export HEX2FLAGS
-endif
-
-ifdef M1FLAGS
-export M1FLAGS
-endif
-
-ifdef MESCCFLAGS
-export MESCCFLAGS
-endif
-
-ifdef MES_SEED
-export MES_SEED
-endif
-
-ifdef MESCC_TOOLS_SEED
-export MESCC_TOOLS_SEED
-endif
-
-ifdef TINYCC_SEED
-export TINYCC_SEED
-endif
+include build-aux/export.make
diff --git a/build-aux/export.make b/build-aux/export.make
new file mode 100644 (file)
index 0000000..065819f
--- /dev/null
@@ -0,0 +1,79 @@
+ifdef PREFIX
+export PREFIX
+endif
+
+ifdef VERSION
+export VERSION
+endif
+
+ifdef CC
+export CC
+endif
+
+ifdef CC32
+export CC32
+endif
+
+ifdef BLOOD_ELF
+export BLOOD_ELF
+endif
+
+ifdef M1
+export M1
+endif
+
+ifdef HEX2
+export HEX2
+endif
+
+ifdef GUILE
+export GUILE
+endif
+
+ifdef GUILE_TOOLS
+export GUILE_TOOLS
+endif
+
+ifdef TCC
+export TCC
+endif
+
+ifdef GUILE_LOAD_PATH
+export GUILE_LOAD_PATH
+endif
+
+ifdef GUILE_LOAD_COMPILED_PATH
+export GUILE_LOAD_COMPILED_PATH
+endif
+
+ifdef CFLAGS
+export CFLAGS
+endif
+
+ifdef C32FLAGS
+export C32FLAGS
+endif
+
+ifdef HEX2FLAGS
+export HEX2FLAGS
+endif
+
+ifdef M1FLAGS
+export M1FLAGS
+endif
+
+ifdef MESCCFLAGS
+export MESCCFLAGS
+endif
+
+ifdef MES_SEED
+export MES_SEED
+endif
+
+ifdef MESCC_TOOLS_SEED
+export MESCC_TOOLS_SEED
+endif
+
+ifdef TINYCC_SEED
+export TINYCC_SEED
+endif
index bd312107125cce297d98b2554c0d5f11ecd91d6a..89b7f627bb677d7ce4dd008fe969475161bb7b4b 100755 (executable)
--- a/configure
+++ b/configure
@@ -246,6 +246,7 @@ Some influential environment variables:
     (let ((CC32 (or (getenv "CC32")
                     (if (member ARCH '("i686" "arm")) (string-append BUILD_TRIPLET "-" CC)
                         "i686-unknown-linux-gnu-gcc")))
+          (HELP2MAN (or (getenv "HELP2MAN") "help2man"))
           (TCC (or (getenv "TCC") "tcc"))
           (MAKEINFO (or (getenv "MAKEINFO") "makeinfo"))
           (GUILE_TOOLS (or (getenv "GUILE_TOOLS") "guile-tools"))
@@ -290,6 +291,8 @@ Some influential environment variables:
       (check-version "perl" '(5))
       (if (not (check-version "makeinfo" '(6) #:optional? #t))
           (set! MAKEINFO #f))
+      (if (not (check-version "help2man" '(1 47) #:optional? #t))
+          (set! HELP2MAN #f))
 
       (when (pair? required)
         (stderr "\nMissing dependencies [~a], run\n\n" ((->string ", ") required))
@@ -305,6 +308,7 @@ Some influential environment variables:
           (stdout "ARCH:=~a\n" ARCH)
           (stdout "CC:=~a\n" (or CC ""))
           (stdout "CC32:=~a\n" (or CC32 ""))
+          (stdout "HELP2MAN:=~a\n" (or HELP2MAN ""))
           (stdout "TCC:=~a\n" (or TCC ""))
           (stdout "BLOOD_ELF:=~a\n" (or BLOOD_ELF ""))
           (stdout "MES_SEED:=~a\n" (or MES_SEED ""))
index 8b4ab924bca6c5d6a0af20a94cbbe61e96c15a80..67608d330962977513686cc3181b3bccacbce267 100644 (file)
--- a/guix.scm
+++ b/guix.scm
@@ -50,6 +50,7 @@
              (gnu packages cross-base)
              (gnu packages gcc)
              (gnu packages guile)
+             (gnu packages man)
              (gnu packages mes)
              (gnu packages package-management)
              (gnu packages perl)
index 84aa3f4eba7bb716098eb0cd5d0a26a9861e3029..c34c7f84d36d551fd04f6516eb9bbbbb1239020c 100755 (executable)
@@ -3,7 +3,10 @@
 set -e
 set -o pipefail
 
-export PREFIX
+if [ -n "$BUILD_DEBUG" ]; then
+    set -x
+fi
+
 SHELL=${SHELL-$(command -v sh)}
 PREFIX=${PREFIX-/usr/local}
 MES_PREFIX=${MES_PREFIX-$PREFIX/share/mes}
@@ -63,3 +66,13 @@ if [ -f doc/mes.info ]; then
     install-info --info-dir=$PREFIX/share/info doc/mes.info
     tar -cf- doc/mes.info* | tar -xf- --strip-components=1 -C $PREFIX/share/info
 fi
+
+if [ -f doc/mes.1 ]; then
+    mkdir -p $PREFIX/man/man1
+    cp doc/mes.1 $PREFIX/man/man1/
+fi
+
+if [ -f doc/mescc.1 ]; then
+    mkdir -p $PREFIX/man/man1
+    cp doc/mescc.1 $PREFIX/man/man1/
+fi