git: 6275155b90de - main - devel/avr-gcc: Fix build with libc++ 17
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 23 Sep 2023 20:46:22 UTC
The branch main has been updated by joerg:
URL: https://cgit.FreeBSD.org/ports/commit/?id=6275155b90de11398a1d105b053732313e7c1e7a
commit 6275155b90de11398a1d105b053732313e7c1e7a
Author: Joerg Wunsch <joerg@FreeBSD.org>
AuthorDate: 2023-09-23 20:43:27 +0000
Commit: Joerg Wunsch <joerg@FreeBSD.org>
CommitDate: 2023-09-23 20:46:17 +0000
devel/avr-gcc: Fix build with libc++ 17
gcc/system.h includes safe-ctype.h which redefines ctype macros such
as toupper, tolower, etc to "poison" them.
However, it should only include the safe-ctype.h header *after* any
C++ headers, such as <list>, <map>, <string>, etc, otherwise these
might transitively include internal ctype headers (such as with libc++
17), causing compilation errors.
PR: 274038
Reported by: dim
---
devel/avr-gcc/Makefile | 2 +-
devel/avr-gcc/files/patch-gcc_system.h | 42 ++++++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/devel/avr-gcc/Makefile b/devel/avr-gcc/Makefile
index 61fe35a14226..bb11c44a37bd 100644
--- a/devel/avr-gcc/Makefile
+++ b/devel/avr-gcc/Makefile
@@ -1,6 +1,6 @@
PORTNAME= gcc
PORTVERSION= 11.2.0
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= devel
MASTER_SITES= GCC
PKGNAMEPREFIX= avr-
diff --git a/devel/avr-gcc/files/patch-gcc_system.h b/devel/avr-gcc/files/patch-gcc_system.h
new file mode 100644
index 000000000000..4cb52e33f571
--- /dev/null
+++ b/devel/avr-gcc/files/patch-gcc_system.h
@@ -0,0 +1,42 @@
+--- gcc/system.h.orig 2021-07-28 06:55:07 UTC
++++ gcc/system.h
+@@ -203,19 +203,6 @@ extern int fprintf_unlocked (FILE *, const char *, ...
+ #endif
+ #endif
+
+-/* There are an extraordinary number of issues with <ctype.h>.
+- The last straw is that it varies with the locale. Use libiberty's
+- replacement instead. */
+-#include "safe-ctype.h"
+-
+-#include <sys/types.h>
+-
+-#include <errno.h>
+-
+-#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
+-extern int errno;
+-#endif
+-
+ #ifdef __cplusplus
+ #if defined (INCLUDE_ALGORITHM) || !defined (HAVE_SWAP_IN_UTILITY)
+ # include <algorithm>
+@@ -242,6 +229,19 @@ extern int errno;
+ # include <new>
+ # include <utility>
+ # include <type_traits>
++#endif
++
++/* There are an extraordinary number of issues with <ctype.h>.
++ The last straw is that it varies with the locale. Use libiberty's
++ replacement instead. */
++#include "safe-ctype.h"
++
++#include <sys/types.h>
++
++#include <errno.h>
++
++#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO
++extern int errno;
+ #endif
+
+ /* Some of glibc's string inlines cause warnings. Plus we'd rather