plotutils: fix build with clang 16

Clang defaults to C++, which disallows the register storage class
specifier. This causes the build to fail. Remove the specifier to allow
clang 16 to build plotutils.
This commit is contained in:
Randy Eckenrode 2023-09-07 23:16:49 -04:00
parent dba6d77ad2
commit 92d99c521b
No known key found for this signature in database
GPG Key ID: 64C1CD4EC2A600D9
2 changed files with 48 additions and 1 deletions

View File

@ -0,0 +1,44 @@
diff -ur a/pic2plot/gram.cc b/pic2plot/gram.cc
--- a/pic2plot/gram.cc 2000-06-28 00:23:21.000000000 -0400
+++ b/pic2plot/gram.cc 2023-09-07 22:59:47.004460065 -0400
@@ -1229,9 +1229,9 @@
char *from;
unsigned int count;
{
- register char *f = from;
- register char *t = to;
- register int i = count;
+ char *f = from;
+ char *t = to;
+ int i = count;
while (i-- > 0)
*t++ = *f++;
@@ -1244,9 +1244,9 @@
static void
__yy_memcpy (char *to, char *from, unsigned int count)
{
- register char *t = to;
- register char *f = from;
- register int i = count;
+ char *t = to;
+ char *f = from;
+ int i = count;
while (i-- > 0)
*t++ = *f++;
@@ -1289,10 +1289,10 @@
yyparse(YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
{
- register int yystate;
- register int yyn;
- register short *yyssp;
- register YYSTYPE *yyvsp;
+ int yystate;
+ int yyn;
+ short *yyssp;
+ YYSTYPE *yyvsp;
int yyerrstatus; /* number of tokens to shift before error messages enabled */
int yychar1 = 0; /* lookahead token as an internal (translated) token number */

View File

@ -16,7 +16,10 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ autoreconfHook ];
buildInputs = [ libpng ];
patches = map fetchurl (import ./debian-patches.nix);
patches = map fetchurl (import ./debian-patches.nix)
# `pic2plot/gram.cc` uses the register storage class specifier, which is not supported in C++17.
# This prevents clang 16 from building plotutils because it defaults to C++17.
++ [ ./c++17-register-usage-fix.patch ];
preBuild = ''
# Fix parallel building.