gnu/packages/gcc.scm (make-gccgo)[arguments]: Set tool paths
(GOROOT and GCCGOTOOLDIR) even if they are already set to "".
Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
GCC 5 has a misaligned access to a vector pointer which causes a build failure
when using GCC 8 and later. Backport upstream fix that was applied on the GCC
6 branch.
* gnu/packages/gcc.scm (gcc-5)[source]: Apply
gcc-5-fix-powerpc64le-build.patch.
* gnu/packages/patches/gcc-5-fix-powerpc64le-build.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This fixes cross-compilation of GCC, as in:
guix build --target=aarch64-linux-gnu -e '(@ (gnu packages gcc) gcc-10)'
* gnu/packages/gcc.scm (gcc-canadian-cross-objdump-snippet): New variable.
(gcc-5)[source]: Use it instead of inline 'snippet'.
(gcc-8)[source]: Add 'modules' and 'snippet'.
(gcc-9)[source]: Likewise.
(gcc-10)[source]: Likewise.
(gcc-11)[source]: Likewise.
Do not match "gccgo". Match "gcov-dump" and "gcov-tool", as well as
"lto-dump" (which was introduced in GCC 10).
* gnu/packages/gcc.scm (custom-gcc)[arguments]: Update regex used for
matching broken or conflicting executables.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Generate gccgo with MAKE-GCCGO to factorize phases, and to fix the
cyclic dependency between out and lib (caused by libgo embedding the
gotools path) that was worked around in
<https://issues.guix.gnu.org/18101>.
* gnu/packages/gcc.scm (custom-gcc-gccgo): New procedure.
(make-gccgo): New procedure.
(gccgo-10): New variable.
Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
Fixes <https://bugs.gnu.org/48825>.
In short, this change adds the hard-coded "--with-long-double-128" configure
option in one place and removes it from two other places. This changes and
simplifies the use of this option for various architectures that start with
the string "powerpc".
* gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): Add a clause for
targets starting with "powerpc64le-" or "powerpc-" which adds the
"--with-long-double-128" option. This causes any package using this procedure
to be built using this new option on these architectures. In particular, this
affects the gcc package and the gcc-final package, in addition to all the
other versions of GCC defined in (gnu packages gcc).
* gnu/packages/commencement.scm (gcc-boot0)[#:configure-flags]: Remove the
code that adds the "--with-long-double-128" configure option for all
architectures starting with "powerpc", since it is now redundant on the
architectures where it is needed. The gcc-boot0 package uses (and adds to) the
gcc package's configure options. This means that the above change in gcc.scm
is sufficient to ensure that the gcc-boot0 package's configure options will
include "--with-long-double-128" on powerpc64le and powerpc architectures.
Additionally, since the option is apparently not required on the big-endian
powerpc64 architecture, this change also has the nice effect of omitting the
option in that case.
* gnu/packages/cross-base.scm (cross-gcc-arguments)[#:configure-flags]: Remove
the code that adds the "--with-long-double-128" configure option for
powerpc64le, since it is now redundant. The cross-gcc-arguments procedure uses
(and adds to) the configure options of its xgcc argument (a package). This
means that regardless of which gcc from gcc.scm is used as the xgcc, the above
change in gcc.scm is sufficient to ensure that the cross-gcc-arguments
procedure's configure options will include "--with-long-double-128" on the
powerpc64le and powerpc architectures.
Note: this merge actually changes the 'curl' and 'python-attrs' derivations,
as part of solving caf4a7a277 and
12964df69a respectively.
4604d43c0e (gnu: gnutls@3.6.16: Fix cross-compilation.) was ignored because it
cannot currently be tested.
Conflicts:
gnu/local.mk
gnu/packages/aidc.scm
gnu/packages/boost.scm
gnu/packages/curl.scm
gnu/packages/nettle.scm
gnu/packages/networking.scm
gnu/packages/python-xyz.scm
gnu/packages/tls.scm
This fixes the nonreproducibility in gcc documented here:
https://reproducible-builds.org/docs/archives/#gnu-libtool
* gnu/packages/patches/gcc-8-sort-libtool-find-output.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/gcc.scm (gcc-8)[source]: Apply it.
* gnu/packages/patches/gcc-cross-gxx-include-dir.patch: New file.
* gnu/packages/patches/gcc-10-cross-environment-variables.patch: New file.
* gnu/packages/gcc.scm (gcc): Point to GCC-10.
(gcc-objc): Point to GCC-OBJC-10.
(gcc-objc++): Point to GCC-OBJC++-10.
* gnu/packages/cross-base.scm (cross-gcc)[source](patches): Apply the new
patches.
Fixes: <https://bugs.gnu.org/46253>.
* gnu/packages/gcc.scm (gcc-4.7)[#:phases][pre-configure]: When the
gcc/config/rs6000 directory exists, replace "/lib64" with "/lib" in all files
within it. Note that this fix will be picked up by any package that re-uses
the pre-configure phase from gcc-4.7 (e.g., all the usual gcc packages).
(make-libstdc++)[#:phases][fix-rs6000-libdir]: New phase, which does the same
as above. It was necessary to duplicate the fix here because make-libstdc++
does not re-use the pre-configure phase from gcc-4.7.
Fixes <https://bugs.gnu.org/42392>.
Reported by Maxim Cournoyer and Erik Garrison.
Until now, the generated <bits/c++config.h> would be incorrect (many
_GLIBCXX_HAVE macros would be undefined), which in turn would lead to
build failures for most C++ programs.
* gnu/packages/gcc.scm (gcc-6)[inputs]: Add LIBSTDC++-HEADERS.
(libstdc++, libstdc++-headers): New variables.
* gnu/packages/gcc.scm (gfortran): Change first argument to 'custom-gcc'
to remove dependency on LIBSTDC++-HEADERS.
The gfortran packages cannot be used without being wrapped with
gfortran-toolchain. However, as the comment in (gnu packages
commencement) explains, there cannot be more than one gfortran-toolchain
package because of ABI issues. Thus, versions of gfortran other than the
main one are useless.
* gnu/packages/gcc.scm (gfortran-4.8, gfortran-4.9, gfortran-5,
gfortran-6, gfortran-7, gfortran-8, gfortran-9): Remove variables.
(gfortran): Define the gfortran package based on the gcc variable.
This is no longer required since the update to 8.4.0 in 60ce496ad8.
* gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/gcc.scm (gcc-8)[source](patches): Remove it.
* gnu/packages/make-bootstrap.scm (gcc-static): Use gcc-5. This fixes
building libstdc++-boot0 with a newly built %bootstrap-gcc.
(%gcc-stripped): Likewise.
(gcc-for-bootstrap): Likewise.
* gnu/packages/patches/gcc-5-hurd.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/gcc.scm (gcc-5): Use it.