From 4f54d13e7924424358e401840f985936f9867274 Mon Sep 17 00:00:00 2001 From: jfarrell Date: Thu, 10 Jul 2014 09:23:43 -0400 Subject: [PATCH] THRIFT-2602: Fix missing dist files Client: build process Patch: jfarrell Adding macro check around bison version and removing am__yacc_c2h and will conditionally include the necessary h/hh file, this will fix the mentioned missing .hh file in dist and make it compatible with automake 1.11 and above --- aclocal/ac_prog_bison.m4 | 54 +++++++++++++++++++++++++++++++++++++ compiler/cpp/src/thriftl.ll | 4 +++ configure.ac | 1 + 3 files changed, 59 insertions(+) create mode 100644 aclocal/ac_prog_bison.m4 diff --git a/aclocal/ac_prog_bison.m4 b/aclocal/ac_prog_bison.m4 new file mode 100644 index 00000000..1e2d200c --- /dev/null +++ b/aclocal/ac_prog_bison.m4 @@ -0,0 +1,54 @@ +dnl +dnl Check Bison version +dnl AC_PROG_BISON([MIN_VERSION=2.6]) +dnl +dnl Will define BISON_USE_PARSER_H_EXTENSION if Automake is < 1.11 +dnl for use with .h includes. +dnl + +AC_DEFUN([AC_PROG_BISON], [ +if test "x$1" = "x" ; then + bison_required_version="2.6" +else + bison_required_version="$1" +fi + +AC_CHECK_PROG(have_prog_bison, [bison], [yes],[no]) + +AC_DEFINE_UNQUOTED([BISON_VERSION], [0.0], [Bison version if bison is not available]) + +#Do not use *.h extension for parser header files, use newer *.hh +bison_use_parser_h_extension=false + +if test "$have_prog_bison" = "yes" ; then + AC_MSG_CHECKING([for bison version >= $bison_required_version]) + bison_version=`bison --version | head -n 1 | cut '-d ' -f 4` + AC_DEFINE_UNQUOTED([BISON_VERSION], [$bison_version], [Defines bison version]) + if test "$bison_version" \< "$bison_required_version" ; then + BISON=: + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Bison version 2.6 or higher must be installed on the system!]) + else + AC_MSG_RESULT([yes]) + BISON=bison + AC_SUBST(BISON) + + #Verify automake version 1.11 headers for yy files are .h, > 1.12 uses .hh + automake_version=`automake --version | head -n 1 | cut '-d ' -f 4` + AC_DEFINE_UNQUOTED([AUTOMAKE_VERSION], [$automake_version], [Defines automake version]) + + if test "$automake_version" \< "1.12" ; then + #Use *.h extension for parser header file + bison_use_parser_h_extension=true + echo "Automake version < 1.12" + AC_DEFINE([BISON_USE_PARSER_H_EXTENSION], [1], [Use *.h extension for parser header file]) + fi + fi +else + BISON=: + AC_MSG_RESULT([NO]) +fi + +AM_CONDITIONAL([BISON_USE_PARSER_H_EXTENSION], [test x$bison_use_parser_h_extension = xtrue]) +AC_SUBST(BISON) +]) diff --git a/compiler/cpp/src/thriftl.ll b/compiler/cpp/src/thriftl.ll index aee44060..5afc6011 100644 --- a/compiler/cpp/src/thriftl.ll +++ b/compiler/cpp/src/thriftl.ll @@ -61,7 +61,11 @@ * Must be included AFTER parse/t_program.h, but I can't remember why anymore * because I wrote this a while ago. */ +#if defined(BISON_USE_PARSER_H_EXTENSION) #include "thrifty.h" +#else +#include "thrifty.hh" +#endif void thrift_reserved_keyword(char* keyword) { yyerror("Cannot use reserved language keyword: \"%s\"\n", keyword); diff --git a/configure.ac b/configure.ac index e20dc645..49d704eb 100755 --- a/configure.ac +++ b/configure.ac @@ -88,6 +88,7 @@ AC_PROG_CXX AC_PROG_INSTALL AC_PROG_LIBTOOL AC_PROG_MAKE_SET +AC_PROG_BISON AC_PROG_YACC AC_PROG_LEX AM_PROG_LEX -- 2.17.1