From 78041a77488a7db8a45db5bc9fff49079e3ab30e Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Mon, 26 Aug 2019 12:48:28 +0200 Subject: [PATCH] gst/parse: define pure-parser depending on bison version MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit After release bison 2.5 the declaration %pure-parser was deprecated in favor of %define api.pure Nonetheless, until bison 3.4, the declaration was treated as backward compatibility, but now bison shows a warning: warning: deprecated directive, use ‘%define api.pure’ The patch's approach is to handle both directives according with the used bison's version, by string replacement at source configuration stage. --- gst/parse/{grammar.y => grammar.y.in} | 2 +- gst/parse/meson.build | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) rename gst/parse/{grammar.y => grammar.y.in} (99%) diff --git a/gst/parse/grammar.y b/gst/parse/grammar.y.in similarity index 99% rename from gst/parse/grammar.y rename to gst/parse/grammar.y.in index 1aa77edb39..034232499f 100644 --- a/gst/parse/grammar.y +++ b/gst/parse/grammar.y.in @@ -796,7 +796,7 @@ static int yyerror (void *scanner, graph_t *graph, const char *s); %lex-param { void *scanner } %parse-param { void *scanner } %parse-param { graph_t *graph } -%pure-parser +@BISON_PURE_PARSER@ %start graph %% diff --git a/gst/parse/meson.build b/gst/parse/meson.build index a843398135..35ed6f2f40 100644 --- a/gst/parse/meson.build +++ b/gst/parse/meson.build @@ -27,6 +27,7 @@ gen_lex = configure_file(input : 'gen_lex.py.in', configuration : flex_cdata) # Find bison, configure grammar generator +bison_parser_cdata = configuration_data() bison_cdata = configuration_data() bison_min_version='2.4' @@ -44,7 +45,15 @@ else message('bison version @0@ >= @1@: YES'.format(bversion, bison_min_version)) endif +if bversion.version_compare('>' + '2.5') + bison_parser_cdata.set('BISON_PURE_PARSER', '%define api.pure full') +else + bison_parser_cdata.set('BISON_PURE_PARSER', '%pure-parser') +endif +gen_grammar_file = configure_file(input : 'grammar.y.in', + output : 'grammar.y', + configuration : bison_parser_cdata) bison_cdata.set('BISON', bison.path()) bison_cdata.set('BISON_ARGS', '') @@ -61,7 +70,7 @@ parser = custom_target('parselex', ) grammar = custom_target('parsegrammar', - input : 'grammar.y', + input : gen_grammar_file, output : ['grammar.tab.c', 'grammar.tab.h'], command : [python3, gen_grammar, '@OUTPUT0@', '@OUTPUT1@', '@INPUT@'], depends : [parser], -- 2.34.1