summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2024-03-08 22:10:55 +0100
committerFabian Groffen <grobian@gentoo.org>2024-03-08 22:13:19 +0100
commit2f452f48ef4c4c94d6999d3c4555399816f9f5fa (patch)
tree08607d99cea1607d6bb0dc7ac09034744f437fb0
parentsys-devel/binutils-config: revbump for CLT 15.3 ld fix (diff)
downloadprefix-2f452f48ef4c4c94d6999d3c4555399816f9f5fa.tar.gz
prefix-2f452f48ef4c4c94d6999d3c4555399816f9f5fa.tar.bz2
prefix-2f452f48ef4c4c94d6999d3c4555399816f9f5fa.zip
sys-devel/gcc-14.0.1: add pre-release for macOS
Seems like CLT15.3 broke something on GCC-13 wrt the headers which are not understood. GCC-14 might fix this (at least it compiles using GCC-12/13). Signed-off-by: Fabian Groffen <grobian@gentoo.org>
-rw-r--r--sys-devel/gcc/Manifest4
-rw-r--r--sys-devel/gcc/gcc-14.0.1_pre20240225.ebuild148
2 files changed, 152 insertions, 0 deletions
diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest
index 6173450b30..889fc273b5 100644
--- a/sys-devel/gcc/Manifest
+++ b/sys-devel/gcc/Manifest
@@ -10,3 +10,7 @@ DIST gcc-13.2-darwin-r0.tar.gz 137958605 BLAKE2B b6777b76baf2dc007c4080c0b7a6d44
DIST gcc-13.2.0-musl-patches-2.tar.xz 5292 BLAKE2B c057d6574d03c05854edaa9f3fd40e9149662b04f3ac7a7db3eb078d73a7b535726d1bf52e5b12736dedb2f9898ad731f2e48a6421fcfbf7b90f929dee072fcb SHA512 a691da0c87c443a5e9d23731f4005f27871c5b12bc9102873ffa24d374aa7b9fbd187c4f5635d23fa9ffb17e351e76173c2d3fdf40646e355c4cb314b538de69
DIST gcc-13.2.0-patches-7.tar.xz 37064 BLAKE2B 4a8700a8d44bfaa84926f8bfd0da4c5b0c0377f47fc0679456e909f7c9029b9cf1b72c0ba0bc505d9035d5c38e27f7e5b029727eaf2bc7aca417a6be966b2f43 SHA512 f440c97e6782ecb8581d41608e31a648ac426e2d870bc1d171da7794cdeff2fd0546cae0c7214e72fd3a00ead8a5c66f3f633b670b74553a2f3a40378b51f20c
DIST gcc-13.2.0.tar.xz 87858592 BLAKE2B 0034b29d3d6cc05821f0c4253ce077805943aff7b370729dd203bda57d89c107edd657eeddc2fb1e69ea15c7b0323b961f46516c7f4af89a3ccf7fea84701be2 SHA512 d99e4826a70db04504467e349e9fbaedaa5870766cda7c5cab50cdebedc4be755ebca5b789e1232a34a20be1a0b60097de9280efe47bdb71c73251e30b0862a2
+DIST gcc-14-20240225.tar.xz 87651536 BLAKE2B 01283581b8684e0dce73b2d9a586e473f3c87753435d905e193816911edc06f9bd2a8d542a95d69f47f1c884124349520f410925b13b7bb51b913e603000d32f SHA512 f424b0935d8fdcf9ff55067467eac20a518a11c2cb14928a47e1a218cde1f4238091f25861daf417d1125c5d5d5465d32fc1b3cb04504b3ca99fe27a7a7d5792
+DIST gcc-14.0.0-musl-patches-1.tar.xz 3576 BLAKE2B 692baee8a7709905d53aeb150d73a3721c4ba47ee5f397cfb1b5be905cf003ca02b60c94ee294d90ac39645cd5cdf186c7a3aa950c47d8cf680c128ed705b807 SHA512 0592ab98a7142e404623a6511c67dff61e9ade32c3fb2c0e75b456306e0af3799ad13252b50b3d2fdd31e5815d7f0b16b0ad63ab8386fe4d78729fc9c182d617
+DIST gcc-14.0.0-patches-24.tar.xz 14280 BLAKE2B f5594e07f91a7871fc4470d84ecbf6576f53620c92f60821d2fdcf140869827d27a323d535af11b74f4b671ee7308e501f24841ceb0607ca3ebc032bd97d85b4 SHA512 d887b53a0849246bc79ee2510d7deffabc58fe7598e9e147e4a97fc3714341017627df3dae9a39ae5d3185946cb6e11d01a28aa1287958c401e641fa4312f48b
+DIST gcc-darwin-arm64-14.0.1_pre20240225.tar.gz 143722125 BLAKE2B 23bc15e1243d10e897c6bd78cc0459c4163e767867d29a354aa51335703d3cee669b550816f2dad3becbade5a604a269bb52c8518e0f58338a61433d378d0a3c SHA512 a83c9764a7525a0768c871ef75915ad8dd5169873b29dc7c7b2413f2e7ab03c8c64888df4dbd74d0e82163cc760c01cec750e729b6df4ead03f23d6065b114d6
diff --git a/sys-devel/gcc/gcc-14.0.1_pre20240225.ebuild b/sys-devel/gcc/gcc-14.0.1_pre20240225.ebuild
new file mode 100644
index 0000000000..65946e6d92
--- /dev/null
+++ b/sys-devel/gcc/gcc-14.0.1_pre20240225.ebuild
@@ -0,0 +1,148 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+TOOLCHAIN_PATCH_DEV="sam"
+PATCH_GCC_VER="14.0.0"
+PATCH_VER="24"
+MUSL_VER="1"
+MUSL_GCC_VER="14.0.0"
+
+inherit toolchain
+
+# Don't keyword live ebuilds
+if ! tc_is_live && [[ -z ${TOOLCHAIN_USE_GIT_PATCHES} ]] ; then
+ KEYWORDS="~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+fi
+
+# use alternate source for Apple M1 (also works for x86_64)
+IANSGCCVER="9bc66f9b11baf1c291b2afac429cb12bf8461f91"
+SRC_URI+=" elibc_Darwin? ( https://github.com/iains/gcc-darwin-arm64/archive/${IANSGCCVER}.tar.gz -> gcc-darwin-arm64-${PV}.tar.gz )"
+
+# 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
+RDEPEND="!prefix-guest? ( elibc_glibc? ( sys-libs/glibc[cet(-)?] ) )"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ kernel_linux? ( >=${CATEGORY}/binutils-2.30[cet(-)?] )
+ kernel_Darwin? (
+ || ( ${CATEGORY}/binutils-apple ${CATEGORY}/native-cctools )
+ )"
+
+src_unpack() {
+ if use elibc_Darwin ; then
+ # just use Ian's source, not the main one
+ S="${WORKDIR}/gcc-darwin-arm64-${IANSGCCVER}"
+ fi
+ default
+}
+
+src_prepare() {
+ # make sure 64-bits native targets don't screw up the linker paths
+ eapply "${FILESDIR}"/gcc-12-no-libs-for-startfile.patch
+
+ # doesn't apply on official and Darwin sources
+ rm "${WORKDIR}"/patch/31_all_gm2_make_P_var.patch
+
+ toolchain_src_prepare
+
+ eapply_user
+
+ eapply "${FILESDIR}"/${PN}-13-fix-cross-fixincludes.patch
+
+ # make it have correct install_names on Darwin
+ eapply -p1 "${FILESDIR}"/4.3.3/darwin-libgcc_s-installname.patch
+
+ if [[ ${CHOST} == powerpc*-darwin* ]] ; then
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44107
+ sed -i -e 's|^ifeq (/usr/lib,|ifneq (/usr/lib,|' \
+ libgcc/config/t-slibgcc-darwin || die
+ fi
+
+ if [[ ${CHOST} == *-solaris* ]] ; then
+ # madvise is not available in the compatibility mode GCC uses,
+ # posix_madvise however, is
+ sed -i -e 's/madvise/posix_madvise/' gcc/cp/module.cc || die
+ fi
+
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ # 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
+
+ # rip out specific macos version min
+ sed -i -e 's/-mmacosx-version-min=11.0//' \
+ libgcc/config/aarch64/t-darwin \
+ libgcc/config/aarch64/t-heap-trampoline \
+ || die
+
+ # weird, because we call --disable-host-bind-now but the check
+ # interprets that as as using -Wl,-z,now
+ sed -i -e 's/-Wl,-z,now//' c++tools/configure{.ac,} || die
+ fi
+}
+
+src_configure() {
+ local myconf=()
+ case ${CTARGET}:" ${USE} " in
+ powerpc*-darwin*)
+ # bug #381179
+ filter-flags "-mcpu=*" "-mtune=*"
+ # bug #657522
+ # A bug in configure checks whether -no-pie works, but the
+ # compiler doesn't pass -no-pie onto the linker if -fno-PIE
+ # isn't passed, so the configure check always finds -no-pie
+ # is accepted. (Likewise, when -fno-PIE is passed, the
+ # compiler passes -no_pie onto the linker.)
+ # Since our linker doesn't grok this, avoid above checks to
+ # be run
+ # NOTE: later ld64 does grok -no_pie, not -no-pie (as checked)
+ export gcc_cv_c_no_fpie=no
+ export gcc_cv_no_pie=no
+ ;;
+ *-darwin20)
+ # use sysroot with the linker, #756160
+ export gcc_cv_ld_sysroot=yes
+ ;;
+ *-solaris*)
+ # todo: some magic for native vs. GNU linking?
+ myconf+=( --with-gnu-ld --with-gnu-as --enable-largefile )
+ # Solaris 11 defines this in its headers, but that causes a
+ # mismatch whilst compiling, bug #657514
+ #export ac_cv_func_aligned_alloc=no
+ #export ac_cv_func_memalign=no
+ #export ac_cv_func_posix_memalign=no
+ ;;
+ i[34567]86-*-linux*:*" prefix "*)
+ # to allow the linux-x86-on-amd64.patch become useful, we need
+ # to enable multilib, even if there is just one multilib option.
+ myconf+=( --enable-multilib )
+ if [[ ${CBUILD:-${CHOST}} == "${CHOST}" ]]; then
+ # we might be on x86_64-linux, but don't do cross-compile, so
+ # tell the host-compiler to really create 32bits (for stage1)
+ # (real x86-linux-gcc also accept -m32).
+ append-flags -m32
+ fi
+ ;;
+ esac
+
+ if [[ ${CHOST} == *-darwin ]] ; then
+ # GCC' Darwin fork enables support for "-stdlib=libc++"
+ # unconditionally, and its default include path is invalid,
+ # causing package build failures due to missing header.
+ # But more importantly, it breaks the assumption of many build
+ # scripts and changes their CFLAGS and linking behaviors. The
+ # situation is tricky and needs careful considerations.
+ # For now, just disable support for "-stdlib=libc++".
+ myconf+=( --with-gxx-libcxx-include-dir=no )
+ fi
+
+ # Since GCC 4.1.2 some non-posix (?) /bin/sh compatible code is used, at
+ # least on Solaris, and AIX /bin/sh is way too slow,
+ # so force it to use $BASH (that portage uses) - it can't be EPREFIX
+ # in case that doesn't exist yet
+ export CONFIG_SHELL="${CONFIG_SHELL:-${BASH}}"
+ toolchain_src_configure "${myconf[@]}"
+}