summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2024-03-10 19:59:51 +0100
committerFabian Groffen <grobian@gentoo.org>2024-03-10 19:59:51 +0100
commitbf8c6e96498309932dbdc975462ef93eb0c1c347 (patch)
treecdbd0d7e4bfad9b8f1e548e37a4a02571343d029
parentsys-devel/gcc-14.0.1: dekeyword, better not to use it (yet) (diff)
downloadprefix-bf8c6e96498309932dbdc975462ef93eb0c1c347.tar.gz
prefix-bf8c6e96498309932dbdc975462ef93eb0c1c347.tar.bz2
prefix-bf8c6e96498309932dbdc975462ef93eb0c1c347.zip
sys-devel/gcc-13.2.0: fix bootstrap using CLT 15.3 on macOS
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
-rw-r--r--sys-devel/gcc/files/gcc-13-darwin14-bootstrap.patch40
-rw-r--r--sys-devel/gcc/gcc-13.2.0.ebuild4
2 files changed, 44 insertions, 0 deletions
diff --git a/sys-devel/gcc/files/gcc-13-darwin14-bootstrap.patch b/sys-devel/gcc/files/gcc-13-darwin14-bootstrap.patch
new file mode 100644
index 0000000000..98a92c103e
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-13-darwin14-bootstrap.patch
@@ -0,0 +1,40 @@
+disable some code-sanity checks/hacks because while bootstapping we use
+a compiler and its c++ library that does not necessarily comply
+
+This is an issue since macOS Sonoma 14.4 and/or CLT 15.3.
+
+--- a/include/safe-ctype.h
++++ b/include/safe-ctype.h
+@@ -120,6 +120,7 @@
+ So we include ctype.h here and then immediately redefine its macros. */
+
+ #include <ctype.h>
++#if 0
+ #undef isalpha
+ #define isalpha(c) do_not_use_isalpha_with_safe_ctype
+ #undef isalnum
+@@ -146,5 +147,6 @@
+ #define toupper(c) do_not_use_toupper_with_safe_ctype
+ #undef tolower
+ #define tolower(c) do_not_use_tolower_with_safe_ctype
++#endif
+
+ #endif /* SAFE_CTYPE_H */
+--- a/gcc/system.h
++++ b/gcc/system.h
+@@ -917,6 +917,7 @@
+
+ #if (GCC_VERSION >= 3000)
+
++#if 0
+ /* Note autoconf checks for prototype declarations and includes
+ system.h while doing so. Only poison these tokens if actually
+ compiling gcc, so that the autoconf declaration tests for malloc
+@@ -933,6 +934,7 @@
+ #undef realloc
+ #pragma GCC poison malloc realloc
+ #endif
++#endif
+
+ /* The %m format should be used when GCC's main diagnostic functions
+ supporting %m are available, and xstrerror from libiberty
diff --git a/sys-devel/gcc/gcc-13.2.0.ebuild b/sys-devel/gcc/gcc-13.2.0.ebuild
index 65b51e7dcc..41160a6ef9 100644
--- a/sys-devel/gcc/gcc-13.2.0.ebuild
+++ b/sys-devel/gcc/gcc-13.2.0.ebuild
@@ -21,6 +21,8 @@ IANSGCCVER="gcc-13.2-darwin-r0"
SRC_URI+=" elibc_Darwin? (
https://github.com/iains/gcc-13-branch/archive/refs/tags/${IANSGCCVER}.tar.gz )"
+IUSE+="bootstrap"
+
# Technically only if USE=hardened *too* right now, but no point in complicating it further.
# If GCC is enabling CET by default, we need glibc to be built with support for it.
# bug #830454
@@ -76,6 +78,8 @@ src_prepare() {
fi
if [[ ${CHOST} == *-darwin* ]] ; then
+ use bootstrap && eapply "${FILESDIR}"/${PN}-13-darwin14-bootstrap.patch
+
# our ld64 is a slight bit different, so tweak expression to not
# get confused and break the build
sed -i -e 's/grep ld64/grep :ld64/' gcc/configure || die