summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* toolchain.eclass: restore graphite for USE=jit minimal buildSam James2023-11-091-1/+4
| | | | | | | | | | | | | | graphite (isl) might be used for the just-built GCC. It's easier to just respect USE=graphite for the USE=jit minimal build in case the user passes some graphite flags rather than try strip them out. (The build would fail otherwise as the just-built GCC, even with --disable-bootstrap for the JIT build, would be invoked as ./xgcc ... -fgraphite-identity ... and error out in configure.) Reported by ano on IRC. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: filter -Walloc-size for < GCC 14Sam James2023-11-081-0/+3
| | | | | | New in GCC 14. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: only pass -fno-harden-control-flow-redundancy for new ↵Sam James2023-10-271-3/+3
| | | | | | | | enough GCC too Even if it's OK for the stage1 compiler, it may not be later. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: add -fno-harden-control-flow-redundancy to old-compiler ↵Sam James2023-10-271-3/+3
| | | | | | filter too Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: pass -fno-control-flow-redundancy, filter flags for older ↵Sam James2023-10-261-0/+12
| | | | | | | | | | | | | compilers too If we're *building* an older GCC, then these flags won't be supported later on during the boostrap process, so filter them out. Also, pass -fno-control-flow-redundancy given it makes the compiler unbearably slow (on a 3950x, it went from 2.5hours for pgo+lto+checking to 6+ hours) and it doesn't really benefit us there anyway. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: handle ABIs with no multilib flagsSam James2023-09-301-1/+3
| | | | Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: tidy up USE=jit buildSam James2023-09-301-16/+36
| | | | | | | | | | | | | | * Pass --disable-fixincludes for newer GCCs for USE=jit (still need to try disable it in general when we can, but we had to turn it on for a bit because of newer glibc) as it's pointless there. * Disable a bunch of other options for the JIT build, imported from my local script for bisecting GCC. * While at it, use an array for the configure args for the JIT build and just use emake -C. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: support bootstrap-O3Sam James2023-09-301-7/+15
| | | | | | | Upstream are fine with bootstrapping with -O3, so don't strip it out if the user set it, even with USE=-custom-cflags. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: rework bootstrapping logicSam James2023-09-301-17/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Build stage1 compiler with user's CFLAGS. This consistently ends up saving at least 15 minutes for me on a fast amd64 machine and should save more on slower machines and architectures. There's only any risk here if the host compiler is ancient/very buggy and even then, you get a failed bootstrap later on. The GCC developers, per the linked bug, end up using STAGE1_CFLAGS="-O2" anyway to speed up the process so it's not like this is untested at all. mattst88 actually brought this up.. 10 years ago (bug #477548). Let's try make that right now. * Respect LDFLAGS for target libraries for native builds. Not touching this for cross builds, at least for now, as it's a bit more delicate. (Unfortunately, we have to put a hack in here for now until we can fix multilib.eclass - see bug #914881). Bug: https://gcc.gnu.org/PR111619 Bug: https://bugs.gentoo.org/914881 Closes: https://bugs.gentoo.org/477548 Closes: https://bugs.gentoo.org/831423 Closes: https://bugs.gentoo.org/840392 Apologies-to: Matt Turner <mattst88@gentoo.org> Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: fix should_we_gcc_config for major-version slottingSam James2023-09-251-1/+3
| | | | | | | | | | | | | | | | | | | | | | | Reported by the-horo on IRC. For example, with slot as major version: ``` $ gcc-config -c x86_64-pc-linux-gnu x86_64-pc-linux-gnu-13 $ gcc-config -S x86_64-pc-linux-gnu-13 x86_64-pc-linux-gnu 13 ``` so we're indeed comparing 13 with 13.2 and hence we decide to run gcc-config unnecessarily because we think it's a major version change. Fix that by taking into account tc_use_major_version_only and comparing based on GCCMAJOR for that case. Bug: https://bugs.gentoo.org/865835 Bug: https://bugs.gentoo.org/873505 Reported-by: the-horo Closes: https://github.com/gentoo/gentoo/pull/33042 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: downgrade znver4 to znver3 for <12.3Sam James2023-08-181-0/+1
| | | | | Closes: https://bugs.gentoo.org/912292 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: pass --disable-dependency-tracking, --disable-silent-rulesSam James2023-08-041-0/+11
| | | | | | | | | | | We already do this for gdb and binutils, do the same for gcc. Portage/econf only greps the top-level configure which has neither of these, but the subconfigure dirs do. There's been problems in the past upstream here, see e.g. https://gcc.gnu.org/PR55930, but seems fine now. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: cleanup more obsolete cruftSam James2023-08-031-19/+9
| | | | | | Followup to a606b978be638005c9b832a733d087dbc97ae6d0. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: sanity-check against bootstrapping for crossSam James2023-07-311-2/+2
| | | | | | | | | | | Had a report on IRC where bootstrap-cet was being used for a cross-compiler which seems wrong even if it's a bit odd that --disable-bootstrap doesn't win with it. Add a guard as we don't need any of the bootstrap-* targets for cross. Thanks to Ionen for spotting. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: 'endusers' -> 'end users'Sam James2023-07-291-1/+1
| | | | | | It's (surprisingly to me) not a compound word. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: add note re texinfo QA warningSam James2023-07-201-0/+1
| | | | Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: disable gcov for crossSam James2023-07-201-1/+7
| | | | | | | | I don't see an immediate way to only disable this for crossdev stage1, so just disable it entirely for cross for now. Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100289 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: namespace hardened functionSam James2023-06-241-10/+10
| | | | Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: wire up --enable-host-bind-now for GCC 14Sam James2023-06-241-0/+8
| | | | | | See also b26f3f99faabc3574cd3510bc1f57b90bdf585e9. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: simplify TOOLCHAIN_SET_S logicSam James2023-06-231-7/+3
| | | | | | I've got no idea why I added that indirection before. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: fix USE=doc buildSam James2023-06-171-2/+2
| | | | | | | | Thanks to Dirk Sondermann for pointing out the precise issue. Closes: https://bugs.gentoo.org/908550 Fixes: a606b978be638005c9b832a733d087dbc97ae6d0 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: Don't inherit eutilsUlrich Müller2023-06-161-3/+0
| | | | | | | None of the ebuilds inheriting toolchain in EAPI 7 needs any of the remaining eutils features. Signed-off-by: Ulrich Müller <ulm@gentoo.org>
* toolchain.eclass: support --enable-host-pie for GCC 14Sam James2023-06-161-0/+4
| | | | | | See also https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=f9de5c24b9a6172d48786289035eed8f947c04c1. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: cleanup < GCC 8 debrisSam James2023-06-101-551/+89
| | | | | | | | If you need this, please use toolchain-legacy.eclass from the ::toolchain repository. Closes: https://github.com/gentoo/gentoo/pull/31362 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: cleanup TOOLCHAIN_SET_SSam James2023-06-031-9/+11
| | | | | | No need for a subshell. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: drop legacy cygwin cruftSam James2023-06-031-33/+0
| | | | | | Cygwin supported already dropped from Prefix and the rest of the tree. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: add links/info about USE=rust for gcc-13Sam James2023-05-191-0/+3
| | | | Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: return to using -j1 for make installSam James2023-05-191-2/+12
| | | | | | | | | | | | | | | | Unfortunately, we have to use -j1 for make install. Upstream don't really test it and there's not much appetite for fixing bugs with it. Several reported bugs exist where the resulting image was wrong, rather than a simple compile/install failure: This reverts commit db0387530cf744068f480b68a192d4fc10a81286. Closes: https://bugs.gentoo.org/906155 Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42980 Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51814 Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103656 Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109898 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: filter-lto too (please use USE=lto instead)Sam James2023-05-091-0/+3
| | | | | | | Followup to e6dd349ea37663f3e3a6ce1df3fd9f7cf18e20cd. Closes: https://bugs.gentoo.org/906007 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: cleanup obsolete texinfo hacksSam James2023-05-081-30/+6
| | | | | | | | | | | | | | | | | These don't seem to be necessary at all now: - we don't sed info pages anymore because GCC has support for setting the bug URL + distributor now - there's info pages in other directories than gcc/ (e.g. libgccjit) With 12.3.0, I had without this: ``` * CMP: =sys-devel/gcc-12.2.1_p20230505 with sys-devel/gcc-12.3.0/image * FILES:-usr/share/gcc-data/x86_64-pc-linux-gnu/12/info/gfortran.info * FILES:-usr/share/gcc-data/x86_64-pc-linux-gnu/12/info/libgccjit.info * ------> FILES(-2) ABI(TIMEOUT) ``` Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: conditionalize old awk sed fixupSam James2023-05-081-1/+4
| | | | | | Bug: https://bugs.gentoo.org/215828 Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35855 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: record EGIT_VERSION correctly in gcc --version for live ↵Sam James2023-04-271-0/+5
| | | | | | | | | | | | ebuilds Without this, gcc --version ends up only showing the commit resulting from applying our patches on top. With this fixed, gcc --version shows both the upstream commit & the commit hash after applying patches. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: don't enable openmp by default for >= 13Sam James2023-04-261-1/+8
| | | | | | | This should be set in profiles going forward, not in toolchain.eclass. Bug: https://bugs.gentoo.org/890999 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: wire up modula-2 frontend support for GCC 13; disable Rust ↵Sam James2023-04-181-1/+8
| | | | | | | | | | | | for 13 - Wire up modula-2 frontend support for GCC 13 as USE=modula2 - Drop Rust for GCC 13, upstream are going to make it fatal for configure for 13.1, but may revisit for 13.2 (not sure how likely that is, though, it depends on how much ends up backported). Rust will be available for GCC 14 though. We will revisit if changes occur, of course. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: pass improved checking for USE=debug for pre-releases tooSam James2023-04-131-8/+14
| | | | | | Followup to 85db50a7c626a1844c8eb2d03051c8c5d320c205. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: enhance USE=debug for more checkingSam James2023-04-131-1/+4
| | | | | | | | | | | We now do --enable-checking=yes,extra,rtl after discussion in #gcc for USE=debug. If rtl is too slow, we can do just yes,etra. We've actually found yet another bug with our general change for snapshots to start using checking, too: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109506. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: use upstream default checking for pre/non-released compilersSam James2023-04-101-3/+6
| | | | | | | | | | | | | | Note that this only affects actually-non-released compilers like GCC 13 at this point in time and *not* snapshots from the stable branches. Upstream default to more checking (asserts/runtime integrity checks) when 'gcc/DEV-PHASE' contains 'experimental'. Copy that and defer to the configure.ac default when it does. The practical upshot of this is that we go from --enable-checking=release for GCC 13 to --enable-checking=yes,extra. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: fix spellingSam James2023-03-261-5/+5
| | | | | | | Thanks to codespell. Signed-off-by: Sam James <sam@gentoo.org> Signed-off-by: Ulrich Müller <ulm@gentoo.org>
* toolchain.eclass: Quote argument of ":" commandUlrich Müller2023-03-261-8/+8
| | | | | | This avoids globbing, see: https://www.shellcheck.net/wiki/SC2223 Signed-off-by: Ulrich Müller <ulm@gentoo.org>
* toolchain.eclass: use mirror://gcc first, then fallback to mirror://gnuSam James2023-03-251-3/+9
| | | | | | | | | mirror://gnu doesn't always have snapshots, but mirror://gcc do. See https://gcc.gnu.org/mirrors.html. Needed because of the ongoing gnu.org DNS and availability issues. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: swap LTO order to allow overrideSam James2023-03-211-8/+8
| | | | | | | Otherwise we can't disable it for some targets. Followup to 970f09a488afafe27152255d4343ff59acc94415. Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: disable LTO for nvptx-none targetSam James2023-03-211-0/+4
| | | | | | It doesn't support LTO and fails in stage1 crossdev. Signed-off-by: Sam James <sam@gentoo.org>
* eclass: standardize prologue/epilogueDavid Seifert2023-03-171-6/+5
| | | | | Closes: https://github.com/gentoo/gentoo/pull/30061 Signed-off-by: David Seifert <soap@gentoo.org>
* toolchain.eclass: Register the D tc_featureArsen Arsenović2023-02-091-2/+2
| | | | | | | This behavior is relied on elsewhere, for setting BDEPENDs correctly. Fixes: a39d1669ca0f4 ("toolchain.eclass: adjust D dep for non-gcc") Signed-off-by: Arsen Arsenović <arsen@gentoo.org>
* toolchain.eclass: Move remaining gcc prefix tweaks from profileJames Le Cuirot2023-01-281-0/+13
| | | | Signed-off-by: James Le Cuirot <chewi@gentoo.org>
* toolchain.eclass: Fix cross-compiling gcc for standalone prefixJames Le Cuirot2023-01-281-0/+15
| | | | | | | | | | | | | | | | Standalone prefix has always configured gcc with a sysroot, but the location of this sysroot is different at build time when cross-compiling. gcc has a separate configure option for that. prefix-guest systems do not have a sysroot applied, as they use the host's libc. Move this code from the prefix profile into the eclass so that it's less of a special case. We can avoid relying on the `BOOTSTRAP_RAP_STAGE2` variable by checking for the `prefix-guest` USE flag instead, as a prefix-guest profile is now used for RAP stage 2. Signed-off-by: James Le Cuirot <chewi@gentoo.org>
* toolchain.eclass: prepare for USE=hardened => FORTIFY_SOURCE=3, assertionsSam James2022-12-311-0/+4
| | | | | | | | | | | | USE=hardened will now imply: - default -D_FORTIFY_SOURCE=3 (instead of 2 for normal profiles) - default -D_GLIBCXX_ASSERTIONS Bug: https://bugs.gentoo.org/876895 Bug: https://bugs.gentoo.org/884417 Bug: https://bugs.gentoo.org/847148 Bug: https://bugs.gentoo.org/876893 Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: add USE=rust for GCC 13.0.9999Sam James2022-12-131-2/+8
| | | | Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: fix default-* addition for new GCC 12 snapshotSam James2022-12-051-2/+2
| | | | | Fixes: adf44514cf590a860b3140efae31187854cf8cea Signed-off-by: Sam James <sam@gentoo.org>
* toolchain.eclass: allow default-znow, default-stack-clash-protection for ↵Sam James2022-12-051-2/+2
| | | | | | | | 12.2.1_p20221203 Bug: https://bugs.gentoo.org/675050 Bug: https://bugs.gentoo.org/876923 Signed-off-by: Sam James <sam@gentoo.org>