build: Insist on m4 being installed.
authorAndre Noll <maan@tuebingen.mpg.de>
Thu, 12 May 2016 18:55:26 +0000 (20:55 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Sun, 15 May 2016 10:16:01 +0000 (12:16 +0200)
Unlike stated in the manual, m4 is not an optional package that is
only needed on developer machines to build the html version of the
manual. Rather, the m4 macro processor is an essential requirement
because the gengetopt input files are generated with m4 from their
templates in m4/gengetopt.

This patch moves the documentation item on m4 from the development
section of the manual to the list of required packages for building
the paraslash package. It also adds a check for the m4 executable
to configure.ac to let the generated configure script fail the build
early on systems where m4 is not installed.

Makefile.in
configure.ac
m4/gengetopt/makefile
web/manual.md

index a8e2a8b..61da659 100644 (file)
@@ -9,6 +9,7 @@ PACKAGE_TARNAME := @PACKAGE_TARNAME@
 PACKAGE_VERSION := @PACKAGE_VERSION@
 
 INSTALL := @INSTALL@
+M4 := @M4@
 GENGETOPT := @GENGETOPT@
 HELP2MAN := @HELP2MAN@
 
index 5960b08..2e4b42c 100644 (file)
@@ -71,6 +71,10 @@ AC_PATH_PROG([GENGETOPT], [gengetopt])
 test -z "$GENGETOPT" && AC_MSG_ERROR(
        [gengetopt is required to build this package])
 
+AC_PATH_PROG([M4], [m4])
+test -z "$M4" && AC_MSG_ERROR(
+       [The m4 macro processor is required to build this package])
+
 AC_PATH_PROG([HELP2MAN], [help2man])
 test -z "$HELP2MAN" && AC_MSG_ERROR(
        [help2man is required to build this package])
index 5130ddd..0db9d10 100644 (file)
@@ -18,10 +18,10 @@ endif
 
 $(m4depdir)/%.m4d: $(m4_ggo_dir)/%.m4 | $(m4depdir)
        @[ -z "$(Q)" ] || echo 'M4D $<'
-       $(Q) m4 -I $(m4_ggo_dir) -s $< \
+       $(Q) $(M4) -I $(m4_ggo_dir) -s $< \
        | awk '{if ($$1 ~ /#line/) {gsub(/"/, "", $$3); if ($$3 != "$<") \
        print "$(ggo_dir)/$(*F).ggo: " $$3}}' | sort | uniq > $@
 
 $(ggo_dir)/%.ggo: $(m4_ggo_dir)/%.m4 $(m4_ggo_dir)/header.m4 | $(ggo_dir)
        @[ -z "$(Q)" ] || echo 'M4 $<'
-       $(Q) m4 -I $(m4_ggo_dir) $< > $@
+       $(Q) $(M4) -I $(m4_ggo_dir) $< > $@
index 3b9c270..43509f1 100644 (file)
@@ -187,7 +187,7 @@ Requirements
 
        git clone git://git.tuebingen.mpg.de/osl
        cd osl && make && sudo make install && sudo ldconfig
-       sudo apt-get install autoconf libssl-dev help2man gengetopt \
+       sudo apt-get install autoconf libssl-dev help2man gengetopt m4 \
               libmad0-dev libid3tag0-dev libasound2-dev libvorbis-dev \
               libfaad-dev libspeex-dev libFLAC-dev libsamplerate-dev realpath \
               libasound2-dev libao-dev libreadline-dev libncurses-dev \
@@ -221,6 +221,9 @@ executables.
 - [help2man](ftp://ftp.gnu.org/pub/gnu/help2man) is used to create
 the man pages.
 
+- [m4](ftp://ftp.gnu.org/pub/gnu/m4/). Some source files are generated
+from templates by the m4 macro processor.
+
 Optional:
 
 - [openssl](http://www.openssl.org/) or
@@ -1825,9 +1828,6 @@ developer machine.
 paraslash development. It is necessary for cloning the git repository
 and for getting updates.
 
-- [m4](ftp://ftp.gnu.org/pub/gnu/m4/). Some input files for gengetopt
-are generated from templates by the m4 macro processor.
-
 - [autoconf](ftp://ftp.gnu.org/pub/gnu/autoconf/) GNU autoconf creates
 the configure file which is shipped in the tarballs but has to be
 generated when compiling from git.