diff --git a/Makefile.in b/Makefile.in index 8f6c0c8b..5665f1d3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -9,6 +9,7 @@ MAKEFLAGS += -r CPPFLAGS=-I$(objdir) -I$(srcdir) @CPPFLAGS@ CFLAGS=$(CPPFLAGS) @CFLAGS@ LDFLAGS=@LDFLAGS@ +M4FLAGS=@M4FLAGS@ LIBS=@LIBS@ DAEMON_LIBS=@DAEMON_LIBS@ CLIENT_LIBS=@CLIENT_LIBS@ diff --git a/aclocal.m4 b/aclocal.m4 index dcf1bd8b..28a632c8 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -175,3 +175,22 @@ AC_DEFUN([BIRD_CHECK_PROG_FLAVOR_GNU], ) esac ]) + +AC_DEFUN([BIRD_CHECK_BISON_VERSION], +[ + $1=`bison --version | ( read line; echo ${line##* } )` + case "$$1" in + 1.* | 2.0* | 2.1* | 2.2* | 2.3*) + AC_MSG_ERROR([Provided Bison version $$1 is too old, need at least 2.4]) + ;; + 2.*) + bird_bison_synclines=no + ;; + 3.* | 4.* | 5.* | 6.* | 7.* | 8.* | 9.*) + bird_bison_synclines=yes + ;; + *) + AC_MSG_ERROR([Couldn't parse Bison version $$1. Call the developers for help.]) + ;; + esac +]) diff --git a/conf/Makefile b/conf/Makefile index fb3dd052..47024d26 100644 --- a/conf/Makefile +++ b/conf/Makefile @@ -11,7 +11,7 @@ BISON_DEBUG=-t endif $(conf-y-targets): $(s)confbase.Y $(s)flowspec.Y - $(M4) -P $| $^ >$@ + $(M4) $(M4FLAGS) -P $| $^ >$@ $(o)cf-parse.y: | $(s)gen_parser.m4 $(o)keywords.h: | $(s)gen_keywords.m4 diff --git a/configure.ac b/configure.ac index 44184273..9a2e55e2 100644 --- a/configure.ac +++ b/configure.ac @@ -157,6 +157,15 @@ test -z "$FLEX" && AC_MSG_ERROR([Flex is missing.]) test -z "$BISON" && AC_MSG_ERROR([Bison is missing.]) test -z "$M4" && AC_MSG_ERROR([M4 is missing.]) +AC_MSG_CHECKING([bison version]) +BIRD_CHECK_BISON_VERSION(BISON_VERSION) +AC_MSG_RESULT([$BISON_VERSION]) +if test "$bird_bison_synclines" = yes; then + M4FLAGS="$M4FLAGS -s" +fi + +AC_SUBST([M4FLAGS]) + BIRD_CHECK_PROG_FLAVOR_GNU([$M4], [], [AC_MSG_ERROR([Provided M4 is not GNU M4.])]