summaryrefslogtreecommitdiff
path: root/gnu/packages/gcc.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/gcc.scm')
-rw-r--r--gnu/packages/gcc.scm176
1 files changed, 79 insertions, 97 deletions
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 2fe30b1321..79994cc191 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
@@ -47,6 +47,7 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
+ #:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 regex))
@@ -80,6 +81,11 @@ where the OS part is overloaded to denote a specific ABI---into GCC
;; Cilk has been removed from GCC 8 anyway.
'("--disable-libcilkrts"))
+ ;; glibc needs the 128-bit long double type on these architectures.
+ ((or (string-prefix? "powerpc64le-" target)
+ (string-prefix? "powerpc-" target))
+ '("--with-long-double-128"))
+
(else
;; TODO: Add `arm.*-gnueabi', etc.
'())))
@@ -275,13 +281,10 @@ where the OS part is overloaded to denote a specific ABI---into GCC
~a"
libc line))))
- ;; TODO: Make this unconditional in core-updates.
- ,@(if (target-powerpc?)
- `((when (file-exists? "gcc/config/rs6000")
- ;; Force powerpc libdir to be /lib and not /lib64
- (substitute* (find-files "gcc/config/rs6000")
- (("/lib64") "/lib"))))
- `())
+ (when (file-exists? "gcc/config/rs6000")
+ ;; Force powerpc libdir to be /lib and not /lib64
+ (substitute* (find-files "gcc/config/rs6000")
+ (("/lib64") "/lib")))
;; Don't retain a dependency on the build-time sed.
(substitute* "fixincludes/fixincl.x"
@@ -330,8 +333,7 @@ where the OS part is overloaded to denote a specific ABI---into GCC
;; but there's nothing useful to look for here.)
(substitute* "gcc/config.in"
(("PREFIX_INCLUDE_DIR")
- "PREFIX_INCLUDE_DIR_isnt_necessary_here"))
- #t)))
+ "PREFIX_INCLUDE_DIR_isnt_necessary_here")))))
(add-after 'configure 'post-configure
(lambda _
@@ -339,8 +341,7 @@ where the OS part is overloaded to denote a specific ABI---into GCC
;; build-time dependencies---e.g., `--with-ppl=/gnu/store/xxx'.
(substitute* "Makefile"
(("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
- "TOPLEVEL_CONFIGURE_ARGUMENTS=\n"))
- #t)))))
+ "TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))))))
(native-search-paths
;; Use the language-specific variables rather than 'CPATH' because they
@@ -388,15 +389,13 @@ Go. It also includes runtime support libraries for these languages.")
;; This is required for building with glibc-2.26.
;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712
(snippet
- '(begin
- (for-each
- (lambda (dir)
- (substitute* (string-append "libgcc/config/"
- dir "/linux-unwind.h")
- (("struct ucontext") "ucontext_t")))
- '("aarch64" "alpha" "bfin" "i386" "m68k"
- "pa" "sh" "tilepro" "xtensa"))
- #t))))
+ '(for-each
+ (lambda (dir)
+ (substitute* (string-append "libgcc/config/"
+ dir "/linux-unwind.h")
+ (("struct ucontext") "ucontext_t")))
+ '("aarch64" "alpha" "bfin" "i386" "m68k"
+ "pa" "sh" "tilepro" "xtensa")))))
(supported-systems %supported-systems)
(inputs
`(("isl" ,isl-0.11)
@@ -424,15 +423,13 @@ Go. It also includes runtime support libraries for these languages.")
;; This is required for building with glibc-2.26.
;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712
(snippet
- '(begin
- (for-each
- (lambda (dir)
- (substitute* (string-append "libgcc/config/"
- dir "/linux-unwind.h")
- (("struct ucontext") "ucontext_t")))
- '("aarch64" "alpha" "bfin" "i386" "m68k" "nios2"
- "pa" "sh" "tilepro" "xtensa"))
- #t))))
+ '(for-each
+ (lambda (dir)
+ (substitute* (string-append "libgcc/config/"
+ dir "/linux-unwind.h")
+ (("struct ucontext") "ucontext_t")))
+ '("aarch64" "alpha" "bfin" "i386" "m68k" "nios2"
+ "pa" "sh" "tilepro" "xtensa")))))
;; Override inherited texinfo-5 with latest version.
(native-inputs `(("perl" ,perl) ;for manpages
("texinfo" ,texinfo)))
@@ -460,8 +457,18 @@ Go. It also includes runtime support libraries for these languages.")
":"))
(format #t
"environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
- (getenv "CPLUS_INCLUDE_PATH"))
- #t))))))))))
+ (getenv "CPLUS_INCLUDE_PATH"))))))))))))
+
+(define gcc-canadian-cross-objdump-snippet
+ ;; Fix 'libcc1/configure' error when cross-compiling GCC. Without that,
+ ;; 'libcc1/configure' wrongfully determines that '-rdynamic' support is
+ ;; missing because $gcc_cv_objdump is empty:
+ ;;
+ ;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67590
+ ;; http://cgit.openembedded.org/openembedded-core/commit/?id=f6e47aa9b12f9ab61530c40e0343f451699d9077
+ #~(substitute* "libcc1/configure"
+ (("\\$gcc_cv_objdump -T")
+ "$OBJDUMP_FOR_TARGET -T")))
(define-public gcc-5
;; Note: GCC >= 5 ships with .info files but 'make install' fails to install
@@ -485,19 +492,7 @@ Go. It also includes runtime support libraries for these languages.")
"gcc-fix-texi2pod.patch"
"gcc-5-hurd.patch"))
(modules '((guix build utils)))
- (snippet
- ;; Fix 'libcc1/configure' error when cross-compiling GCC.
- ;; Without that, 'libcc1/configure' wrongfully determines that
- ;; '-rdynamic' support is missing because $gcc_cv_objdump is
- ;; empty:
- ;;
- ;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67590
- ;; http://cgit.openembedded.org/openembedded-core/commit/?id=f6e47aa9b12f9ab61530c40e0343f451699d9077
- '(begin
- (substitute* "libcc1/configure"
- (("\\$gcc_cv_objdump -T")
- "$OBJDUMP_FOR_TARGET -T"))
- #t))))
+ (snippet gcc-canadian-cross-objdump-snippet)))
(inputs
`(;; GCC5 needs <isl/band.h> which is removed in later versions.
("isl" ,isl-0.18)
@@ -565,7 +560,9 @@ It also includes runtime support libraries for these languages.")))
"0l7d4m9jx124xsk6xardchgy2k5j5l2b15q322k31f0va4d8826k"))
(patches (search-patches "gcc-8-strmov-store-file-names.patch"
"gcc-5.0-libvtv-runpath.patch"
- "gcc-8-sort-libtool-find-output.patch"))))))
+ "gcc-8-sort-libtool-find-output.patch"))
+ (modules '((guix build utils)))
+ (snippet gcc-canadian-cross-objdump-snippet)))))
(define-public gcc-9
(package
@@ -580,7 +577,9 @@ It also includes runtime support libraries for these languages.")))
"13l3p6g2krilaawbapmn9zmmrh3zdwc36mfr3msxfy038hps6pf9"))
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
"gcc-9-asan-fix-limits-include.patch"
- "gcc-5.0-libvtv-runpath.patch"))))))
+ "gcc-5.0-libvtv-runpath.patch"))
+ (modules '((guix build utils)))
+ (snippet gcc-canadian-cross-objdump-snippet)))))
(define-public gcc-10
(package
@@ -594,7 +593,9 @@ It also includes runtime support libraries for these languages.")))
(base32
"0i6378ig6h397zkhd7m4ccwjx5alvzrf2hm27p1pzwjhlv0h9x34"))
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
- "gcc-5.0-libvtv-runpath.patch"))))))
+ "gcc-5.0-libvtv-runpath.patch"))
+ (modules '((guix build utils)))
+ (snippet gcc-canadian-cross-objdump-snippet)))))
(define-public gcc-11
(package
@@ -608,11 +609,13 @@ It also includes runtime support libraries for these languages.")))
(base32
"1pwxrjhsymv90xzh0x42cxfnmhjinf2lnrrf3hj5jq1rm2w6yjjc"))
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
- "gcc-5.0-libvtv-runpath.patch"))))))
+ "gcc-5.0-libvtv-runpath.patch"))
+ (modules '((guix build utils)))
+ (snippet gcc-canadian-cross-objdump-snippet)))))
;; Note: When changing the default gcc version, update
;; the gcc-toolchain-* definitions.
-(define-public gcc gcc-7)
+(define-public gcc gcc-10)
(define-public (make-libstdc++ gcc)
"Return a libstdc++ package based on GCC. The primary use case is when
@@ -623,25 +626,16 @@ using compilers other than GCC."
(arguments
`(#:out-of-source? #t
#:phases
- ;; TODO: Use the target-powerpc arm for everyone.
- ,(if (target-powerpc?)
- `(modify-phases %standard-phases
- ;; Force rs6000 (i.e., powerpc) libdir to be /lib and not /lib64.
- (add-before 'chdir 'fix-rs6000-libdir
- (lambda _
- (when (file-exists? "gcc/config/rs6000")
- (substitute* (find-files "gcc/config/rs6000")
- (("/lib64") "/lib")))
- #t))
- (add-before 'configure 'chdir
- (lambda _
- (chdir "libstdc++-v3")
- #t)))
- `(alist-cons-before 'configure 'chdir
- (lambda _
- (chdir "libstdc++-v3")
- #t)
- %standard-phases))
+ (modify-phases %standard-phases
+ ;; Force rs6000 (i.e., powerpc) libdir to be /lib and not /lib64.
+ (add-before 'chdir 'fix-rs6000-libdir
+ (lambda _
+ (when (file-exists? "gcc/config/rs6000")
+ (substitute* (find-files "gcc/config/rs6000")
+ (("/lib64") "/lib")))))
+ (add-before 'configure 'chdir
+ (lambda _
+ (chdir "libstdc++-v3"))))
#:configure-flags `("--disable-libstdcxx-pch"
,(string-append "--with-gxx-include-dir="
@@ -692,16 +686,14 @@ using compilers other than GCC."
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
- (chdir "libiberty")
- #t))
+ (chdir "libiberty")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib/"))
(include (string-append out "/include/")))
(install-file "libiberty.a" lib)
- (install-file "../include/libiberty.h" include))
- #t)))))
+ (install-file "../include/libiberty.h" include)))))))
(inputs '())
(outputs '("out"))
(native-inputs '())
@@ -741,10 +733,10 @@ as the 'native-search-paths' field."
`(modify-phases ,phases
(add-after 'install 'remove-broken-or-conflicting-files
(lambda* (#:key outputs #:allow-other-keys)
- (for-each delete-file
- (find-files (string-append (assoc-ref outputs "out") "/bin")
- ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))
- #t))))))))
+ (for-each
+ delete-file
+ (find-files (string-append (assoc-ref outputs "out") "/bin")
+ ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
(define* (custom-gcc-gccgo gcc name languages
#:optional
@@ -796,12 +788,7 @@ as the 'native-search-paths' field."
(define-public gfortran
(hidden-package
- (custom-gcc (package
- (inherit gcc)
- ;; XXX: Remove LIBSTDC++-HEADERS from the inputs just to
- ;; avoid a rebuild of all the GFORTRAN dependents.
- ;; TODO: Remove this hack on the next rebuild cycle.
- (inputs (alist-delete "libstdc++" (package-inputs gcc))))
+ (custom-gcc gcc
"gfortran" '("fortran")
%generic-search-paths)))
@@ -839,8 +826,7 @@ as the 'native-search-paths' field."
(lambda* (#:key outputs #:allow-other-keys)
(for-each delete-file
(find-files (string-append (assoc-ref outputs "out") "/bin")
- ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))
- #t))))))
+ ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
(synopsis "GCC library generating machine code on-the-fly at runtime")
(description
"This package is part of the GNU Compiler Collection and provides an
@@ -946,7 +932,7 @@ provides the GNU compiler for the Go programming language."))
(custom-gcc gcc-10 "gcc-objc" '("objc")
%objc-search-paths))
-(define-public gcc-objc gcc-objc-7)
+(define-public gcc-objc gcc-objc-10)
(define %objc++-search-paths
(list (search-path-specification
@@ -988,7 +974,7 @@ provides the GNU compiler for the Go programming language."))
(custom-gcc gcc-10 "gcc-objc++" '("obj-c++")
%objc++-search-paths))
-(define-public gcc-objc++ gcc-objc++-7)
+(define-public gcc-objc++ gcc-objc++-10)
(define (make-libstdc++-doc gcc)
"Return a package with the libstdc++ documentation for GCC."
@@ -1013,8 +999,7 @@ provides the GNU compiler for the Go programming language."))
#:phases (modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
- (chdir "libstdc++-v3")
- #t))
+ (chdir "libstdc++-v3")))
(add-before 'configure 'set-xsl-directory
(lambda* (#:key inputs #:allow-other-keys)
(let ((docbook (assoc-ref inputs "docbook-xsl")))
@@ -1023,8 +1008,7 @@ provides the GNU compiler for the Go programming language."))
(("@XSL_STYLE_DIR@")
(string-append
docbook "/xml/xsl/"
- (strip-store-file-name docbook))))
- #t)))
+ (strip-store-file-name docbook)))))))
(replace 'build
(lambda _
;; XXX: There's also a 'doc-info' target, but it
@@ -1051,7 +1035,7 @@ provides the GNU compiler for the Go programming language."))
(define-public isl
(package
(name "isl")
- (version "0.22.1")
+ (version "0.23")
(source (origin
(method url-fetch)
(uri (list (string-append
@@ -1062,7 +1046,7 @@ provides the GNU compiler for the Go programming language."))
name "-" version ".tar.bz2")))
(sha256
(base32
- "1kf54jib0nind1pvakblnfhimmwzm0y1llz8470ag0di5vwqwrhs"))))
+ "0k91zck10zxs9sk3yrbb92y1j3w981w3fbwkfwd7kl779b0j52f5"))))
(build-system gnu-build-system)
(outputs '("out" "static"))
(arguments
@@ -1081,8 +1065,7 @@ provides the GNU compiler for the Go programming language."))
;; libtool looks for it in the usual locations.
(substitute* (string-append out "/lib/libisl.la")
(("^old_library=.*")
- "old_library=''\n"))
- #t))))))
+ "old_library=''\n"))))))))
(inputs `(("gmp" ,gmp)))
(home-page "http://isl.gforge.inria.fr/")
(synopsis
@@ -1208,8 +1191,7 @@ effective code.")
(copy-file file
(string-append html "/"
file)))
- (find-files "." "\\.html$"))
- #t))))))
+ (find-files "." "\\.html$"))))))))
(synopsis "Reference manual for the C programming language")
(description
"This is a reference manual for the C programming language, as