maint: check for dot before using it

* configure.ac: here.
* doc/Makefile.am: Use $(DOT).
Ship the generated files, to spare the user the need for Graphviz.
This commit is contained in:
Akim Demaille
2012-10-19 11:28:01 +02:00
parent fc4fdd623e
commit a029e56f5c
3 changed files with 24 additions and 19 deletions

View File

@@ -43,16 +43,17 @@ These requirements do not apply when building from a distribution tarball.
** Requirements ** Requirements
We've opted to keep only the highest-level sources in the repository. We've opted to keep only the highest-level sources in the repository. This
This eases our maintenance burden, (fewer merges etc.), but imposes more eases our maintenance burden, (fewer merges etc.), but imposes more
requirements on anyone wishing to build from the just-checked-out sources. requirements on anyone wishing to build from the just-checked-out sources.
For example, you have to use the latest stable versions of the maintainer For example, you have to use the latest stable versions of the maintainer
tools we depend upon, including: tools we depend upon, including:
- Automake <http://www.gnu.org/software/automake/>
- Autoconf <http://www.gnu.org/software/autoconf/> - Autoconf <http://www.gnu.org/software/autoconf/>
- Automake <http://www.gnu.org/software/automake/>
- Flex <http://www.gnu.org/software/flex/> - Flex <http://www.gnu.org/software/flex/>
- Gettext <http://www.gnu.org/software/gettext/> - Gettext <http://www.gnu.org/software/gettext/>
- Graphviz <http://www.graphviz.org>
- Gzip <http://www.gnu.org/software/gzip/> - Gzip <http://www.gnu.org/software/gzip/>
- Perl <http://www.cpan.org/> - Perl <http://www.cpan.org/>
- Rsync <http://samba.anu.edu.au/rsync/> - Rsync <http://samba.anu.edu.au/rsync/>
@@ -61,16 +62,16 @@ tools we depend upon, including:
Valgrind <http://valgrind.org/> is also highly recommended, if it supports Valgrind <http://valgrind.org/> is also highly recommended, if it supports
your architecture. your architecture.
Bison is written using Bison grammars, so there are bootstrapping Bison is written using Bison grammars, so there are bootstrapping issues.
issues. The bootstrap script attempts to discover when the C code The bootstrap script attempts to discover when the C code generated from the
generated from the grammars is out of date, and to bootstrap with an grammars is out of date, and to bootstrap with an out-of-date version of the
out-of-date version of the C code, but the process is not foolproof. C code, but the process is not foolproof. Also, you may run into similar
Also, you may run into similar problems yourself if you modify Bison. problems yourself if you modify Bison.
Only building the initial full source tree will be a bit painful. Only building the initial full source tree will be a bit painful. Later,
Later, after synchronizing from the repository a plain 'make' should after synchronizing from the repository a plain 'make' should be sufficient.
be sufficient. Note, however, that when gnulib is updated, running Note, however, that when gnulib is updated, running './bootstrap' again
'./bootstrap' again might be needed. might be needed.
** First checkout ** First checkout

View File

@@ -115,6 +115,7 @@ AC_SUBST([YACC_SCRIPT])
AC_SUBST([YACC_LIBRARY]) AC_SUBST([YACC_LIBRARY])
# Checks for programs. # Checks for programs.
AM_MISSING_PROG([DOT], [dot])
AC_PROG_LEX AC_PROG_LEX
$LEX_IS_FLEX || AC_MSG_ERROR([Flex is required]) $LEX_IS_FLEX || AC_MSG_ERROR([Flex is required])
AC_PROG_YACC AC_PROG_YACC

View File

@@ -101,26 +101,29 @@ nodist_man_MANS = yacc.1
## ----------------------------- ## ## ----------------------------- ##
CLEANDIRS += figs CLEANDIRS += figs
EXTRA_DIST += figs/example-reduce.dot figs/example-shift.dot FIGS_DOT = figs/example-reduce.dot figs/example-shift.dot
EXTRA_DIST += \
$(FIGS_DOT) \
$(FIGS_DOT:.dot=.eps) $(FIGS_DOT:.dot=.pdf) $(FIGS_DOT:.dot=.png)
SUFFIXES += .dot .eps .pdf .png SUFFIXES += .dot .eps .pdf .png
bison.dvi: figs/example-reduce.eps figs/example-shift.eps bison.dvi: $(FIGS_DOT:.dot=.eps)
bison.html: figs/example-reduce.png figs/example-shift.png bison.html: $(FIGS_DOT:.dot=.png)
bison.pdf: figs/example-reduce.pdf figs/example-shift.pdf bison.pdf: $(FIGS_DOT:.dot=.pdf)
.dot.eps: .dot.eps:
$(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'` $(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'`
$(AM_V_at) dot -Teps $< >$@.tmp $(AM_V_at) $(DOT) -Gmargin=0 -Teps $< >$@.tmp
$(AM_V_at) mv $@.tmp $@ $(AM_V_at) mv $@.tmp $@
.dot.pdf: .dot.pdf:
$(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'` $(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'`
$(AM_V_at) dot -Tpdf -Gmargin=0 $< >$@.tmp $(AM_V_at) $(DOT) -Gmargin=0 -Tpdf $< >$@.tmp
$(AM_V_at) mv $@.tmp $@ $(AM_V_at) mv $@.tmp $@
.dot.png: .dot.png:
$(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'` $(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'`
$(AM_V_at) dot -Tpng $< >$@.tmp $(AM_V_at) $(DOT) -Gmargin=0 -Tpng $< >$@.tmp
$(AM_V_at) mv $@.tmp $@ $(AM_V_at) mv $@.tmp $@
## -------------- ## ## -------------- ##