automake-commit
[Top][All Lists]
Advanced

[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; }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]