diff --git a/aclocal.m4 b/aclocal.m4 index 58ad2cc5..2cf4da1f 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -141,3 +141,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 cd78c821..0eee95ec 100644 --- a/conf/Makefile +++ b/conf/Makefile @@ -11,19 +11,17 @@ BISON_DEBUG=-t #FLEX_DEBUG=-d endif -cf-parse.tab.h: cf-parse.tab.c - cf-parse.tab.c: cf-parse.y $(BISON) -bcf-parse -dv -pcf_ $(BISON_DEBUG) cf-parse.y cf-parse.y: $(conf-fragments) $(conf-src)/gen_parser.m4 - $(M4) -P $(conf-src)/gen_parser.m4 $(conf-fragments) >cf-parse.y + $(M4) $(M4FLAGS) -P $(conf-src)/gen_parser.m4 $(conf-fragments) >cf-parse.y keywords.h: $(conf-fragments) $(conf-src)/gen_keywords.m4 - $(M4) -P $(conf-src)/gen_keywords.m4 $(conf-fragments) >keywords.h + $(M4) $(M4FLAGS) -P $(conf-src)/gen_keywords.m4 $(conf-fragments) >keywords.h commands.h: $(conf-fragments) $(conf-src)/gen_commands.m4 $(srcdir)/client/cmds.m4 - $(M4) -P $(conf-src)/gen_commands.m4 $(srcdir)/client/cmds.m4 $(conf-fragments) | sort >commands.h + $(M4) $(M4FLAGS) -P $(conf-src)/gen_commands.m4 $(srcdir)/client/cmds.m4 $(conf-fragments) | sort >commands.h cf-lex.c: cf-lex.l $(FLEX) $(FLEX_DEBUG) -s -B -8 -ocf-lex.c -Pcf_ cf-lex.l diff --git a/configure.ac b/configure.ac index 44382e4f..750d7449 100644 --- a/configure.ac +++ b/configure.ac @@ -178,6 +178,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.])] diff --git a/tools/Rules.in b/tools/Rules.in index f00c85d1..92c61615 100644 --- a/tools/Rules.in +++ b/tools/Rules.in @@ -22,6 +22,7 @@ clean-dirs:=$(all-dirs) proto sysdep CPPFLAGS=-I$(root-rel) -I$(srcdir) @CPPFLAGS@ CFLAGS=$(CPPFLAGS) @CFLAGS@ LDFLAGS=@LDFLAGS@ +M4FLAGS=@M4FLAGS@ LIBS=@LIBS@ CLIENT_LIBS=@CLIENT_LIBS@ CC=@CC@