[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[automake-commit] branch master updated: tests: avoid some SunOS declara
From: |
Karl Berry |
Subject: |
[automake-commit] branch master updated: tests: avoid some SunOS declaration conflicts. |
Date: |
Sun, 09 Jul 2023 12:57:26 -0400 |
This is an automated email from the git hooks/post-receive script.
karl pushed a commit to branch master
in repository automake.
View the commit online:
https://git.savannah.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=65ad31d87bcde7ffee0c0fa02cb293665c63b85f
The following commit(s) were added to refs/heads/master by this push:
new 65ad31d87 tests: avoid some SunOS declaration conflicts.
65ad31d87 is described below
commit 65ad31d87bcde7ffee0c0fa02cb293665c63b85f
Author: Bogdan <bogdro_rep@gmx.us>
AuthorDate: Sun Jul 9 09:57:15 2023 -0700
tests: avoid some SunOS declaration conflicts.
This change: finishes fixing https://bugs.gnu.org/34151
and https://bugs.gnu.org/30612 and https://bugs.gnu.org/42393;
fixes https://bugs.gnu.org/44795 and https://bugs.gnu.org/49755;
partially fixes https://bugs.gnu.org/45205
and https://bugs.gnu.org/55073.
Still open: https://bugs.gnu.org/15256;
* t/lex-clean-cxx.sh: test __cplusplus, __sun, and __EXTERN_C__
before using extern "C" for the yylex decl, as explained at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45205#13.
* t/lex-depend-cxx.sh: likewise.
* t/yacc-cxx.sh: "using" std::exit, std::free, std::malloc.
* t/yacc-d-cxx.sh: likewise.
* t/yacc-mix-c-cxx.sh: likewise.
* NEWS: mention this.
---
NEWS | 2 ++
t/lex-clean-cxx.sh | 12 ++++++++++--
t/lex-depend-cxx.sh | 7 ++++++-
t/yacc-cxx.sh | 3 +++
t/yacc-d-cxx.sh | 3 +++
t/yacc-mix-c-cxx.sh | 3 +++
6 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/NEWS b/NEWS
index 61d631ba0..23b2cc50a 100644
--- a/NEWS
+++ b/NEWS
@@ -46,6 +46,8 @@ New in 1.17:
- distcleancheck ignores "silly rename" files (.nfs* .smb* .__afs*)
that can show up on network file systems.
+ - tests: avoid some declaration conflicts for lex et al. on SunOS.
+
* Obsolescent features:
- py-compile no longer supports Python 0.x or 1.x versions. Python 2.0,
diff --git a/t/lex-clean-cxx.sh b/t/lex-clean-cxx.sh
index 3632d5c87..8a086304f 100644
--- a/t/lex-clean-cxx.sh
+++ b/t/lex-clean-cxx.sh
@@ -51,10 +51,15 @@ CLEANFILES = parsebaz.l++ parsequx.lpp
LDADD = $(LEXLIB)
END
+# For the explanation of the conditionals on using extern "C",
+# see https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45205#13.
cat > parsefoo.lxx << 'END'
%{
#define YY_DECL int yylex (void)
-extern "C" YY_DECL;
+#if (defined __cplusplus) && ((!defined __sun) || (defined __EXTERN_C__))
+extern "C"
+#endif
+YY_DECL;
#define YY_NO_UNISTD_H 1
int isatty (int fd) { return 0; }
%}
@@ -71,7 +76,10 @@ cp parsefoo.lxx parsebar.ll
cat > mainfoo.cc << 'END'
// This file should contain valid C++ but invalid C.
-extern "C" int yylex (void);
+#if (defined __cplusplus) && ((!defined __sun) || (defined __EXTERN_C__))
+extern "C"
+#endif
+int yylex (void);
using namespace std;
int main (int argc, char **argv)
{
diff --git a/t/lex-depend-cxx.sh b/t/lex-depend-cxx.sh
index 60615a54e..682b2ccc5 100644
--- a/t/lex-depend-cxx.sh
+++ b/t/lex-depend-cxx.sh
@@ -44,10 +44,15 @@ test-obj-updated: joe.$(OBJEXT) moe.$(OBJEXT)
is_newest moe.$(OBJEXT) my-hdr.hxx
END
+# For the explanation of the conditionals on using extern "C",
+# see https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45205#13.
cat > joe.ll << 'END'
%{
#define YY_DECL int yylex (void)
-extern "C" YY_DECL;
+#if (defined __cplusplus) && ((!defined __sun) || (defined __EXTERN_C__))
+extern "C"
+#endif
+YY_DECL;
#define YY_NO_UNISTD_H 1
int isatty (int fd) { return 0; }
%}
diff --git a/t/yacc-cxx.sh b/t/yacc-cxx.sh
index 1bf75a975..5b385870c 100644
--- a/t/yacc-cxx.sh
+++ b/t/yacc-cxx.sh
@@ -49,6 +49,9 @@ cat > parse1.yy << 'END'
// Valid C++, but deliberately invalid C.
#include <cstdio>
#include <cstdlib>
+using std::exit;
+using std::free;
+using std::malloc;
// "std::" qualification required by Sun C++ 5.9.
int yylex (void) { return std::getchar (); }
void yyerror (const char *s) {}
diff --git a/t/yacc-d-cxx.sh b/t/yacc-d-cxx.sh
index 56f43c940..576e8e2aa 100644
--- a/t/yacc-d-cxx.sh
+++ b/t/yacc-d-cxx.sh
@@ -31,6 +31,9 @@ write_parse ()
#include <stdlib.h>
// Valid C++, but deliberately invalid C.
#include <cstdlib>
+ using std::exit;
+ using std::free;
+ using std::malloc;
#include "$header"
int yylex (void) { return 0; }
void yyerror (const char *s) {}
diff --git a/t/yacc-mix-c-cxx.sh b/t/yacc-mix-c-cxx.sh
index a73935c39..7c44e0926 100644
--- a/t/yacc-mix-c-cxx.sh
+++ b/t/yacc-mix-c-cxx.sh
@@ -86,6 +86,9 @@ cat > parse.yy <<'END'
// https://bugs.gnu.org/20031
#include <stdlib.h>
// Valid C++, but deliberately invalid C.
+using std::exit;
+using std::free;
+using std::malloc;
#include <cstdlib>
#include "parse.hh"
int yylex (void) { return 0; }
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [automake-commit] branch master updated: tests: avoid some SunOS declaration conflicts.,
Karl Berry <=