aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2019-08-05 12:34:29 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-08-06 11:24:27 +0100
commit09992cb5a48b958970e256280f642033cd09df25 (patch)
tree5481a79f5fc7d2b2c05f8e2352b39e36a668f43e
parentcd671da06dbc6b504caae7bfe1cff2155654d755 (diff)
downloadopenembedded-core-contrib-09992cb5a48b958970e256280f642033cd09df25.tar.gz
openembedded-core-contrib-09992cb5a48b958970e256280f642033cd09df25.tar.bz2
openembedded-core-contrib-09992cb5a48b958970e256280f642033cd09df25.zip
groff: Fix math.h inclusion from system headers issue
groff has system headers overrides in its sourcecode which it generates as fallbacks but in some cases when a system header includes math.h via include <> directive it lands in the override header and causes compile issues, seen with clang+libc++, this patch makes sure that right defines are available before including it (From OE-Core rev: e9beba2a33b46d31bfdd926211d22ebf2abb6c90) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-extended/groff/files/0001-Include-config.h.patch1228
-rw-r--r--meta/recipes-extended/groff/groff_1.22.4.bb1
2 files changed, 1229 insertions, 0 deletions
diff --git a/meta/recipes-extended/groff/files/0001-Include-config.h.patch b/meta/recipes-extended/groff/files/0001-Include-config.h.patch
new file mode 100644
index 00000000000..348a61d9df9
--- /dev/null
+++ b/meta/recipes-extended/groff/files/0001-Include-config.h.patch
@@ -0,0 +1,1228 @@
+From 6cfa9f8126c1d6ec26f120d273e714fb19108873 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 4 Aug 2019 16:32:41 -0700
+Subject: [PATCH] Include config.h
+
+This helps avoid the include conflicts where <stdlib.h> is including
+<math.h> and since -I./lib is used and a local math.h wrapper is
+residing in there, the build breaks since stdlib.h really wants the
+standard system math.h to be included, this ensures that right macros
+are predefined and included before stdlib.h is included
+
+fixes
+In file included from src/libs/libgroff/assert.cpp:20:
+In file included from TOPDIR/build/tmp/work/aarch64-yoe-linux-musl/groff/1.22.4-r0/recipe-sysroot/usr/include/c++/v1/stdlib.h:100:
+./lib/math.h:38:3: error: "Please include config.h first."
+ #error "Please include config.h first."
+ ^
+./lib/math.h:40:1: error: unknown type name '_GL_INLINE_HEADER_BEGIN'
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libs/libgroff/assert.cpp | 4 +
+ src/libs/libgroff/curtime.cpp | 4 +
+ src/libs/libgroff/device.cpp | 4 +
+ src/libs/libgroff/error.cpp | 4 +
+ src/libs/libgroff/fatal.cpp | 4 +
+ src/libs/libgroff/string.cpp | 4 +
+ src/libs/libgroff/strsave.cpp | 4 +
+ src/preproc/eqn/eqn.cpp | 450 ++++++++++++++++++----------------
+ src/preproc/eqn/eqn.hpp | 12 +-
+ src/preproc/eqn/eqn.ypp | 4 +
+ src/preproc/eqn/other.cpp | 4 +
+ src/preproc/eqn/text.cpp | 4 +
+ src/preproc/pic/object.cpp | 4 +
+ 13 files changed, 285 insertions(+), 221 deletions(-)
+
+diff --git a/src/libs/libgroff/assert.cpp b/src/libs/libgroff/assert.cpp
+index aceed05..97780d6 100644
+--- a/src/libs/libgroff/assert.cpp
++++ b/src/libs/libgroff/assert.cpp
+@@ -16,6 +16,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include "assert.h"
+diff --git a/src/libs/libgroff/curtime.cpp b/src/libs/libgroff/curtime.cpp
+index 72fe067..9ddba08 100644
+--- a/src/libs/libgroff/curtime.cpp
++++ b/src/libs/libgroff/curtime.cpp
+@@ -15,6 +15,10 @@ for more details.
+ The GNU General Public License version 2 (GPL2) is available in the
+ internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <errno.h>
+ #include <limits.h>
+ #include <stdlib.h>
+diff --git a/src/libs/libgroff/device.cpp b/src/libs/libgroff/device.cpp
+index 0d28b85..c211f85 100644
+--- a/src/libs/libgroff/device.cpp
++++ b/src/libs/libgroff/device.cpp
+@@ -17,6 +17,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <stdlib.h>
+ #include "device.h"
+ #include "defs.h"
+diff --git a/src/libs/libgroff/error.cpp b/src/libs/libgroff/error.cpp
+index 9a18803..7b63d3d 100644
+--- a/src/libs/libgroff/error.cpp
++++ b/src/libs/libgroff/error.cpp
+@@ -17,6 +17,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+diff --git a/src/libs/libgroff/fatal.cpp b/src/libs/libgroff/fatal.cpp
+index c0dcb35..fd6003e 100644
+--- a/src/libs/libgroff/fatal.cpp
++++ b/src/libs/libgroff/fatal.cpp
+@@ -16,6 +16,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <stdlib.h>
+
+ #define FATAL_ERROR_EXIT_CODE 3
+diff --git a/src/libs/libgroff/string.cpp b/src/libs/libgroff/string.cpp
+index 46c015c..449f3a6 100644
+--- a/src/libs/libgroff/string.cpp
++++ b/src/libs/libgroff/string.cpp
+@@ -17,6 +17,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <stdlib.h>
+
+ #include "lib.h"
+diff --git a/src/libs/libgroff/strsave.cpp b/src/libs/libgroff/strsave.cpp
+index f95c05e..d875045 100644
+--- a/src/libs/libgroff/strsave.cpp
++++ b/src/libs/libgroff/strsave.cpp
+@@ -17,6 +17,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <string.h>
+ #include <stdlib.h>
+
+diff --git a/src/preproc/eqn/eqn.cpp b/src/preproc/eqn/eqn.cpp
+index 4ede465..fdd9484 100644
+--- a/src/preproc/eqn/eqn.cpp
++++ b/src/preproc/eqn/eqn.cpp
+@@ -1,8 +1,9 @@
+-/* A Bison parser, made by GNU Bison 3.2. */
++/* A Bison parser, made by GNU Bison 3.4.1. */
+
+ /* Bison implementation for Yacc-like parsers in C
+
+- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
++ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
++ Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -47,7 +48,7 @@
+ #define YYBISON 1
+
+ /* Bison version. */
+-#define YYBISON_VERSION "3.2"
++#define YYBISON_VERSION "3.4.1"
+
+ /* Skeleton name. */
+ #define YYSKELETON_NAME "yacc.c"
+@@ -65,7 +66,11 @@
+
+
+ /* First part of user prologue. */
+-#line 18 "../src/preproc/eqn/eqn.ypp" /* yacc.c:338 */
++#line 18 "src/preproc/eqn/eqn.ypp"
++
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
+
+ #include <stdio.h>
+ #include <string.h>
+@@ -77,7 +82,8 @@ extern int non_empty_flag;
+ int yylex();
+ void yyerror(const char *);
+
+-#line 81 "src/preproc/eqn/eqn.cpp" /* yacc.c:338 */
++#line 86 "src/preproc/eqn/eqn.cpp"
++
+ # ifndef YY_NULLPTR
+ # if defined __cplusplus
+ # if 201103L <= __cplusplus
+@@ -98,8 +104,8 @@ void yyerror(const char *);
+ # define YYERROR_VERBOSE 0
+ #endif
+
+-/* In a future release of Bison, this section will be replaced
+- by #include "y.tab.h". */
++/* Use api.header.include to #include this header
++ instead of duplicating it here. */
+ #ifndef YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED
+ # define YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED
+ /* Debug traces. */
+@@ -237,10 +243,9 @@ extern int yydebug;
+
+ /* Value type. */
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+-
+ union YYSTYPE
+ {
+-#line 30 "../src/preproc/eqn/eqn.ypp" /* yacc.c:353 */
++#line 34 "src/preproc/eqn/eqn.ypp"
+
+ char *str;
+ box *b;
+@@ -249,9 +254,9 @@ union YYSTYPE
+ int n;
+ column *col;
+
+-#line 253 "src/preproc/eqn/eqn.cpp" /* yacc.c:353 */
+-};
++#line 258 "src/preproc/eqn/eqn.cpp"
+
++};
+ typedef union YYSTYPE YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
+ # define YYSTYPE_IS_DECLARED 1
+@@ -366,6 +371,8 @@ typedef short yytype_int16;
+ #endif
+
+
++#define YY_ASSERT(E) ((void) (0 && (E)))
++
+ #if ! defined yyoverflow || YYERROR_VERBOSE
+
+ /* The parser invokes alloca or malloc; define the necessary symbols. */
+@@ -508,16 +515,16 @@ union yyalloc
+ /* YYNSTATES -- Number of states. */
+ #define YYNSTATES 142
+
+-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+- by yylex, with out-of-bounds checking. */
+ #define YYUNDEFTOK 2
+ #define YYMAXUTOK 315
+
++/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
++ as returned by yylex, with out-of-bounds checking. */
+ #define YYTRANSLATE(YYX) \
+ ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+ /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+- as returned by yylex, without out-of-bounds checking. */
++ as returned by yylex. */
+ static const yytype_uint8 yytranslate[] =
+ {
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 63,
+@@ -558,14 +565,14 @@ static const yytype_uint8 yytranslate[] =
+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
+ static const yytype_uint16 yyrline[] =
+ {
+- 0, 121, 121, 123, 128, 130, 141, 143, 145, 150,
+- 152, 154, 156, 158, 163, 165, 167, 169, 174, 176,
+- 181, 183, 185, 190, 192, 194, 196, 198, 200, 202,
+- 204, 206, 208, 210, 212, 214, 216, 218, 220, 222,
+- 224, 226, 228, 230, 232, 234, 236, 238, 240, 242,
+- 244, 246, 248, 250, 252, 254, 259, 269, 271, 276,
+- 278, 283, 285, 290, 292, 297, 299, 304, 306, 308,
+- 310, 314, 316, 321, 323, 325
++ 0, 125, 125, 127, 132, 134, 145, 147, 149, 154,
++ 156, 158, 160, 162, 167, 169, 171, 173, 178, 180,
++ 185, 187, 189, 194, 196, 198, 200, 202, 204, 206,
++ 208, 210, 212, 214, 216, 218, 220, 222, 224, 226,
++ 228, 230, 232, 234, 236, 238, 240, 242, 244, 246,
++ 248, 250, 252, 254, 256, 258, 263, 273, 275, 280,
++ 282, 287, 289, 294, 296, 301, 303, 308, 310, 312,
++ 314, 318, 320, 325, 327, 329
+ };
+ #endif
+
+@@ -818,22 +825,22 @@ static const yytype_uint8 yyr2[] =
+
+ #define YYRECOVERING() (!!yyerrstatus)
+
+-#define YYBACKUP(Token, Value) \
+-do \
+- if (yychar == YYEMPTY) \
+- { \
+- yychar = (Token); \
+- yylval = (Value); \
+- YYPOPSTACK (yylen); \
+- yystate = *yyssp; \
+- goto yybackup; \
+- } \
+- else \
+- { \
+- yyerror (YY_("syntax error: cannot back up")); \
+- YYERROR; \
+- } \
+-while (0)
++#define YYBACKUP(Token, Value) \
++ do \
++ if (yychar == YYEMPTY) \
++ { \
++ yychar = (Token); \
++ yylval = (Value); \
++ YYPOPSTACK (yylen); \
++ yystate = *yyssp; \
++ goto yybackup; \
++ } \
++ else \
++ { \
++ yyerror (YY_("syntax error: cannot back up")); \
++ YYERROR; \
++ } \
++ while (0)
+
+ /* Error token number */
+ #define YYTERROR 1
+@@ -948,7 +955,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr,
+ yystos[yyssp[yyi + 1 - yynrhs]],
+- &(yyvsp[(yyi + 1) - (yynrhs)])
++ &yyvsp[(yyi + 1) - (yynrhs)]
+ );
+ YYFPRINTF (stderr, "\n");
+ }
+@@ -1052,7 +1059,10 @@ yytnamerr (char *yyres, const char *yystr)
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+- /* Fall through. */
++ else
++ goto append;
++
++ append:
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+@@ -1148,10 +1158,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yyarg[yycount++] = yytname[yyx];
+ {
+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+- if (! (yysize <= yysize1
+- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
++ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
++ yysize = yysize1;
++ else
+ return 2;
+- yysize = yysize1;
+ }
+ }
+ }
+@@ -1175,9 +1185,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+
+ {
+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
++ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
++ yysize = yysize1;
++ else
+ return 2;
+- yysize = yysize1;
+ }
+
+ if (*yymsg_alloc < yysize)
+@@ -1303,23 +1314,33 @@ yyparse (void)
+ yychar = YYEMPTY; /* Cause a token to be read. */
+ goto yysetstate;
+
++
+ /*------------------------------------------------------------.
+-| yynewstate -- Push a new state, which is found in yystate. |
++| yynewstate -- push a new state, which is found in yystate. |
+ `------------------------------------------------------------*/
+- yynewstate:
++yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+- yysetstate:
++
++/*--------------------------------------------------------------------.
++| yynewstate -- set current state (the top of the stack) to yystate. |
++`--------------------------------------------------------------------*/
++yysetstate:
++ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
++ YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+ *yyssp = (yytype_int16) yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
++#if !defined yyoverflow && !defined YYSTACK_RELOCATE
++ goto yyexhaustedlab;
++#else
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
+
+-#ifdef yyoverflow
++# if defined yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+@@ -1338,10 +1359,7 @@ yyparse (void)
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+-#else /* no yyoverflow */
+-# ifndef YYSTACK_RELOCATE
+- goto yyexhaustedlab;
+-# else
++# else /* defined YYSTACK_RELOCATE */
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+@@ -1357,12 +1375,11 @@ yyparse (void)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+-# undef YYSTACK_RELOCATE
++# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+ # endif
+-#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+@@ -1373,19 +1390,18 @@ yyparse (void)
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+-
+- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
++#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
++
+ /*-----------.
+ | yybackup. |
+ `-----------*/
+ yybackup:
+-
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+@@ -1443,7 +1459,6 @@ yybackup:
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ *++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+-
+ goto yynewstate;
+
+
+@@ -1458,7 +1473,7 @@ yydefault:
+
+
+ /*-----------------------------.
+-| yyreduce -- Do a reduction. |
++| yyreduce -- do a reduction. |
+ `-----------------------------*/
+ yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+@@ -1478,20 +1493,20 @@ yyreduce:
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+- case 3:
+-#line 124 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++ case 3:
++#line 128 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].b)->top_level(); non_empty_flag = 1; }
+-#line 1485 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1500 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 4:
+-#line 129 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 133 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = (yyvsp[0].b); }
+-#line 1491 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1506 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 5:
+-#line 131 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 135 "src/preproc/eqn/eqn.ypp"
+ {
+ list_box *lb = (yyvsp[-1].b)->to_list_box();
+ if (!lb)
+@@ -1499,436 +1514,437 @@ yyreduce:
+ lb->append((yyvsp[0].b));
+ (yyval.b) = lb;
+ }
+-#line 1503 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1518 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 6:
+-#line 142 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 146 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = (yyvsp[0].b); }
+-#line 1509 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1524 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 7:
+-#line 144 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 148 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_mark_box((yyvsp[0].b)); }
+-#line 1515 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1530 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 8:
+-#line 146 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 150 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_lineup_box((yyvsp[0].b)); }
+-#line 1521 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1536 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 9:
+-#line 151 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 155 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = (yyvsp[0].b); }
+-#line 1527 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1542 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 10:
+-#line 153 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 157 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_limit_box((yyvsp[-2].b), 0, (yyvsp[0].b)); }
+-#line 1533 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1548 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 11:
+-#line 155 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 159 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_limit_box((yyvsp[-2].b), (yyvsp[0].b), 0); }
+-#line 1539 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1554 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 12:
+-#line 157 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 161 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_limit_box((yyvsp[-4].b), (yyvsp[-2].b), (yyvsp[0].b)); }
+-#line 1545 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1560 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 13:
+-#line 159 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 163 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_limit_box((yyvsp[-4].b), make_limit_box((yyvsp[-2].b), (yyvsp[0].b), 0), 0); }
+-#line 1551 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1566 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 14:
+-#line 164 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 168 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = (yyvsp[0].b); }
+-#line 1557 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1572 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 15:
+-#line 166 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 170 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_sqrt_box((yyvsp[0].b)); }
+-#line 1563 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1578 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 16:
+-#line 168 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 172 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_over_box((yyvsp[-2].b), (yyvsp[0].b)); }
+-#line 1569 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1584 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 17:
+-#line 170 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 174 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_small_over_box((yyvsp[-2].b), (yyvsp[0].b)); }
+-#line 1575 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1590 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 18:
+-#line 175 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 179 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = (yyvsp[0].b); }
+-#line 1581 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1596 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 19:
+-#line 177 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 181 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_script_box((yyvsp[-2].b), 0, (yyvsp[0].b)); }
+-#line 1587 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1602 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 20:
+-#line 182 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 186 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = (yyvsp[0].b); }
+-#line 1593 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1608 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 21:
+-#line 184 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 188 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_script_box((yyvsp[-2].b), (yyvsp[0].b), 0); }
+-#line 1599 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1614 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 22:
+-#line 186 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 190 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_script_box((yyvsp[-4].b), (yyvsp[-2].b), (yyvsp[0].b)); }
+-#line 1605 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1620 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 23:
+-#line 191 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 195 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = split_text((yyvsp[0].str)); }
+-#line 1611 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1626 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 24:
+-#line 193 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 197 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new quoted_text_box((yyvsp[0].str)); }
+-#line 1617 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1632 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 25:
+-#line 195 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 199 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = split_text((yyvsp[0].str)); }
+-#line 1623 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1638 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 26:
+-#line 197 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 201 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new quoted_text_box((yyvsp[0].str)); }
+-#line 1629 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1644 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 27:
+-#line 199 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 203 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new half_space_box; }
+-#line 1635 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1650 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 28:
+-#line 201 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 205 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new space_box; }
+-#line 1641 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1656 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 29:
+-#line 203 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 207 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new tab_box; }
+-#line 1647 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1662 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 30:
+-#line 205 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 209 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = (yyvsp[-1].b); }
+-#line 1653 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1668 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 31:
+-#line 207 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 211 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].pb)->set_alignment(CENTER_ALIGN); (yyval.b) = (yyvsp[0].pb); }
+-#line 1659 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1674 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 32:
+-#line 209 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 213 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].pb)->set_alignment(LEFT_ALIGN); (yyval.b) = (yyvsp[0].pb); }
+-#line 1665 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1680 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 33:
+-#line 211 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 215 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].pb)->set_alignment(RIGHT_ALIGN); (yyval.b) = (yyvsp[0].pb); }
+-#line 1671 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1686 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 34:
+-#line 213 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 217 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].pb)->set_alignment(CENTER_ALIGN); (yyval.b) = (yyvsp[0].pb); }
+-#line 1677 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1692 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 35:
+-#line 215 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 219 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = (yyvsp[-1].mb); }
+-#line 1683 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1698 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 36:
+-#line 217 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 221 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_delim_box((yyvsp[-3].str), (yyvsp[-2].b), (yyvsp[0].str)); }
+-#line 1689 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1704 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 37:
+-#line 219 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 223 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_delim_box((yyvsp[-1].str), (yyvsp[0].b), 0); }
+-#line 1695 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1710 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 38:
+-#line 221 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 225 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_overline_box((yyvsp[-1].b)); }
+-#line 1701 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1716 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 39:
+-#line 223 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 227 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_underline_box((yyvsp[-1].b)); }
+-#line 1707 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1722 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 40:
+-#line 225 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 229 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_prime_box((yyvsp[-1].b)); }
+-#line 1713 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1728 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 41:
+-#line 227 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 231 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_accent_box((yyvsp[-2].b), (yyvsp[0].b)); }
+-#line 1719 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1734 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 42:
+-#line 229 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 233 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_uaccent_box((yyvsp[-2].b), (yyvsp[0].b)); }
+-#line 1725 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1740 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 43:
+-#line 231 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 235 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new font_box(strsave(get_grfont()), (yyvsp[0].b)); }
+-#line 1731 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1746 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 44:
+-#line 233 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 237 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new font_box(strsave(get_gbfont()), (yyvsp[0].b)); }
+-#line 1737 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1752 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 45:
+-#line 235 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 239 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new font_box(strsave(get_gfont()), (yyvsp[0].b)); }
+-#line 1743 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1758 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 46:
+-#line 237 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 241 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new fat_box((yyvsp[0].b)); }
+-#line 1749 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1764 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 47:
+-#line 239 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 243 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new font_box((yyvsp[-1].str), (yyvsp[0].b)); }
+-#line 1755 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1770 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 48:
+-#line 241 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 245 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new size_box((yyvsp[-1].str), (yyvsp[0].b)); }
+-#line 1761 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1776 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 49:
+-#line 243 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 247 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new hmotion_box((yyvsp[-1].n), (yyvsp[0].b)); }
+-#line 1767 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1782 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 50:
+-#line 245 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 249 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new hmotion_box(-(yyvsp[-1].n), (yyvsp[0].b)); }
+-#line 1773 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1788 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 51:
+-#line 247 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 251 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new vmotion_box((yyvsp[-1].n), (yyvsp[0].b)); }
+-#line 1779 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1794 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 52:
+-#line 249 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 253 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new vmotion_box(-(yyvsp[-1].n), (yyvsp[0].b)); }
+-#line 1785 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1800 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 53:
+-#line 251 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 255 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].b)->set_spacing_type((yyvsp[-1].str)); (yyval.b) = (yyvsp[0].b); }
+-#line 1791 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1806 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 54:
+-#line 253 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 257 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = new vcenter_box((yyvsp[0].b)); }
+-#line 1797 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1812 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 55:
+-#line 255 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 259 "src/preproc/eqn/eqn.ypp"
+ { (yyval.b) = make_special_box((yyvsp[-1].str), (yyvsp[0].b)); }
+-#line 1803 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1818 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 56:
+-#line 260 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 264 "src/preproc/eqn/eqn.ypp"
+ {
+ int n;
+ if (sscanf((yyvsp[0].str), "%d", &n) == 1)
+ (yyval.n) = n;
+ a_delete (yyvsp[0].str);
+ }
+-#line 1814 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1829 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 57:
+-#line 270 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 274 "src/preproc/eqn/eqn.ypp"
+ { (yyval.pb) = new pile_box((yyvsp[0].b)); }
+-#line 1820 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1835 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 58:
+-#line 272 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 276 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[-2].pb)->append((yyvsp[0].b)); (yyval.pb) = (yyvsp[-2].pb); }
+-#line 1826 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1841 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 59:
+-#line 277 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 281 "src/preproc/eqn/eqn.ypp"
+ { (yyval.pb) = (yyvsp[-1].pb); }
+-#line 1832 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1847 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 60:
+-#line 279 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 283 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[-1].pb)->set_space((yyvsp[-3].n)); (yyval.pb) = (yyvsp[-1].pb); }
+-#line 1838 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1853 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 61:
+-#line 284 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 288 "src/preproc/eqn/eqn.ypp"
+ { (yyval.mb) = new matrix_box((yyvsp[0].col)); }
+-#line 1844 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1859 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 62:
+-#line 286 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 290 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[-1].mb)->append((yyvsp[0].col)); (yyval.mb) = (yyvsp[-1].mb); }
+-#line 1850 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1865 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 63:
+-#line 291 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 295 "src/preproc/eqn/eqn.ypp"
+ { (yyval.col) = new column((yyvsp[0].b)); }
+-#line 1856 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1871 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 64:
+-#line 293 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 297 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[-2].col)->append((yyvsp[0].b)); (yyval.col) = (yyvsp[-2].col); }
+-#line 1862 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1877 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 65:
+-#line 298 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 302 "src/preproc/eqn/eqn.ypp"
+ { (yyval.col) = (yyvsp[-1].col); }
+-#line 1868 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1883 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 66:
+-#line 300 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 304 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[-1].col)->set_space((yyvsp[-3].n)); (yyval.col) = (yyvsp[-1].col); }
+-#line 1874 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1889 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 67:
+-#line 305 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 309 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].col)->set_alignment(CENTER_ALIGN); (yyval.col) = (yyvsp[0].col); }
+-#line 1880 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1895 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 68:
+-#line 307 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 311 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].col)->set_alignment(LEFT_ALIGN); (yyval.col) = (yyvsp[0].col); }
+-#line 1886 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1901 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 69:
+-#line 309 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 313 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].col)->set_alignment(RIGHT_ALIGN); (yyval.col) = (yyvsp[0].col); }
+-#line 1892 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1907 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 70:
+-#line 311 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 315 "src/preproc/eqn/eqn.ypp"
+ { (yyvsp[0].col)->set_alignment(CENTER_ALIGN); (yyval.col) = (yyvsp[0].col); }
+-#line 1898 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1913 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 71:
+-#line 315 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 319 "src/preproc/eqn/eqn.ypp"
+ { (yyval.str) = (yyvsp[0].str); }
+-#line 1904 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1919 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 72:
+-#line 317 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 321 "src/preproc/eqn/eqn.ypp"
+ { (yyval.str) = (yyvsp[0].str); }
+-#line 1910 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1925 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 73:
+-#line 322 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 326 "src/preproc/eqn/eqn.ypp"
+ { (yyval.str) = (yyvsp[0].str); }
+-#line 1916 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1931 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 74:
+-#line 324 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 328 "src/preproc/eqn/eqn.ypp"
+ { (yyval.str) = strsave("{"); }
+-#line 1922 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1937 "src/preproc/eqn/eqn.cpp"
+ break;
+
+ case 75:
+-#line 326 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
++#line 330 "src/preproc/eqn/eqn.ypp"
+ { (yyval.str) = strsave("}"); }
+-#line 1928 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1943 "src/preproc/eqn/eqn.cpp"
+ break;
+
+
+-#line 1932 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
++#line 1947 "src/preproc/eqn/eqn.cpp"
++
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+@@ -2042,12 +2058,10 @@ yyerrlab:
+ | yyerrorlab -- error raised explicitly by YYERROR. |
+ `---------------------------------------------------*/
+ yyerrorlab:
+-
+- /* Pacify compilers like GCC when the user code never invokes
+- YYERROR and the label yyerrorlab therefore never appears in user
+- code. */
+- if (/*CONSTCOND*/ 0)
+- goto yyerrorlab;
++ /* Pacify compilers when the user code never invokes YYERROR and the
++ label yyerrorlab therefore never appears in user code. */
++ if (0)
++ YYERROR;
+
+ /* Do not reclaim the symbols of the rule whose action triggered
+ this YYERROR. */
+@@ -2109,6 +2123,7 @@ yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
++
+ /*-----------------------------------.
+ | yyabortlab -- YYABORT comes here. |
+ `-----------------------------------*/
+@@ -2116,6 +2131,7 @@ yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
++
+ #if !defined yyoverflow || YYERROR_VERBOSE
+ /*-------------------------------------------------.
+ | yyexhaustedlab -- memory exhaustion comes here. |
+@@ -2126,6 +2142,10 @@ yyexhaustedlab:
+ /* Fall through. */
+ #endif
+
++
++/*-----------------------------------------------------.
++| yyreturn -- parsing is finished, return the result. |
++`-----------------------------------------------------*/
+ yyreturn:
+ if (yychar != YYEMPTY)
+ {
+@@ -2155,5 +2175,5 @@ yyreturn:
+ #endif
+ return yyresult;
+ }
+-#line 329 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1903 */
++#line 333 "src/preproc/eqn/eqn.ypp"
+
+diff --git a/src/preproc/eqn/eqn.hpp b/src/preproc/eqn/eqn.hpp
+index 32a32a5..9a092c1 100644
+--- a/src/preproc/eqn/eqn.hpp
++++ b/src/preproc/eqn/eqn.hpp
+@@ -1,8 +1,9 @@
+-/* A Bison parser, made by GNU Bison 3.2. */
++/* A Bison parser, made by GNU Bison 3.4.1. */
+
+ /* Bison interface for Yacc-like parsers in C
+
+- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
++ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
++ Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -170,10 +171,9 @@ extern int yydebug;
+
+ /* Value type. */
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+-
+ union YYSTYPE
+ {
+-#line 30 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1906 */
++#line 34 "src/preproc/eqn/eqn.ypp"
+
+ char *str;
+ box *b;
+@@ -182,9 +182,9 @@ union YYSTYPE
+ int n;
+ column *col;
+
+-#line 186 "src/preproc/eqn/eqn.hpp" /* yacc.c:1906 */
+-};
++#line 186 "src/preproc/eqn/eqn.hpp"
+
++};
+ typedef union YYSTYPE YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
+ # define YYSTYPE_IS_DECLARED 1
+diff --git a/src/preproc/eqn/eqn.ypp b/src/preproc/eqn/eqn.ypp
+index fb318c3..b7b647e 100644
+--- a/src/preproc/eqn/eqn.ypp
++++ b/src/preproc/eqn/eqn.ypp
+@@ -16,6 +16,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ %{
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
+diff --git a/src/preproc/eqn/other.cpp b/src/preproc/eqn/other.cpp
+index 8db993f..38db396 100644
+--- a/src/preproc/eqn/other.cpp
++++ b/src/preproc/eqn/other.cpp
+@@ -17,6 +17,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <stdlib.h>
+
+ #include "eqn.h"
+diff --git a/src/preproc/eqn/text.cpp b/src/preproc/eqn/text.cpp
+index f3d06f9..3b244d5 100644
+--- a/src/preproc/eqn/text.cpp
++++ b/src/preproc/eqn/text.cpp
+@@ -17,6 +17,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <ctype.h>
+ #include <stdlib.h>
+ #include "eqn.h"
+diff --git a/src/preproc/pic/object.cpp b/src/preproc/pic/object.cpp
+index d8ba610..f26a831 100644
+--- a/src/preproc/pic/object.cpp
++++ b/src/preproc/pic/object.cpp
+@@ -17,6 +17,10 @@ for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#if HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <stdlib.h>
+
+ #include "pic.h"
+--
+2.22.0
+
diff --git a/meta/recipes-extended/groff/groff_1.22.4.bb b/meta/recipes-extended/groff/groff_1.22.4.bb
index a190230b313..082597f6939 100644
--- a/meta/recipes-extended/groff/groff_1.22.4.bb
+++ b/meta/recipes-extended/groff/groff_1.22.4.bb
@@ -11,6 +11,7 @@ SRC_URI = "${GNU_MIRROR}/groff/groff-${PV}.tar.gz \
file://0001-replace-perl-w-with-use-warnings.patch \
file://groff-not-search-fonts-on-build-host.patch \
file://0001-support-musl.patch \
+ file://0001-Include-config.h.patch \
"
SRC_URI[md5sum] = "08fb04335e2f5e73f23ea4c3adbf0c5f"