aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Wunsch <joerg@FreeBSD.org>2023-09-23 20:43:27 +0000
committerJoerg Wunsch <joerg@FreeBSD.org>2023-09-23 20:46:17 +0000
commit6275155b90de11398a1d105b053732313e7c1e7a (patch)
tree2f2160f3990d3dda173e68d53c040dea4f0477c7
parent5c7c91ffbfc73c9945cd67334be202711ec47441 (diff)
downloadports-6275155b90de11398a1d105b053732313e7c1e7a.tar.gz
ports-6275155b90de11398a1d105b053732313e7c1e7a.zip
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
-rw-r--r--devel/avr-gcc/Makefile2
-rw-r--r--devel/avr-gcc/files/patch-gcc_system.h42
2 files changed, 43 insertions, 1 deletions
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