From 72e147f53fc11d0397e080297db31ef897346910 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Thu, 28 Jun 2018 23:10:14 +0200 Subject: [PATCH] build: Build and install manual pages. * 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 | 6 +- GNUmakefile | 134 ++++++++++++++++-------------------------- build-aux/export.make | 79 +++++++++++++++++++++++++ configure | 4 ++ guix.scm | 1 + install.sh | 15 ++++- 6 files changed, 153 insertions(+), 86 deletions(-) create mode 100644 build-aux/export.make diff --git a/.gitignore b/.gitignore index 852e4209..ccfff1af 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/GNUmakefile b/GNUmakefile index 1ecbb6a0..26cdaf21 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,14 +1,31 @@ -.PHONY: doc +# Mes --- Maxwell Equations of Software +# Copyright © 2018 Jan (janneke) Nieuwenhuizen +# +# 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 . -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 index 00000000..065819f4 --- /dev/null +++ b/build-aux/export.make @@ -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 diff --git a/configure b/configure index bd312107..89b7f627 100755 --- 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 "")) diff --git a/guix.scm b/guix.scm index 8b4ab924..67608d33 100644 --- 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) diff --git a/install.sh b/install.sh index 84aa3f4e..c34c7f84 100755 --- a/install.sh +++ b/install.sh @@ -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