2013-03-27 14:13:25 +00:00
|
|
|
|
;;; GNU Guix --- Functional package management for GNU
|
2022-02-12 21:28:52 +00:00
|
|
|
|
;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org>
|
2018-01-25 19:09:32 +00:00
|
|
|
|
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
|
2021-12-08 22:39:00 +00:00
|
|
|
|
;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
|
2015-03-06 21:45:47 +00:00
|
|
|
|
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
|
2022-02-08 16:15:08 +00:00
|
|
|
|
;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
|
2017-01-04 22:47:24 +00:00
|
|
|
|
;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com>
|
2018-02-19 21:51:08 +00:00
|
|
|
|
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
2020-02-06 18:41:36 +00:00
|
|
|
|
;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com>
|
2020-03-12 02:48:59 +00:00
|
|
|
|
;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz>
|
2020-03-18 07:54:57 +00:00
|
|
|
|
;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
|
2020-09-11 16:07:58 +00:00
|
|
|
|
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
|
2021-02-07 00:29:40 +00:00
|
|
|
|
;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
|
2021-06-14 15:48:24 +00:00
|
|
|
|
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
|
2022-05-06 14:04:43 +00:00
|
|
|
|
;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
|
2013-03-27 14:13:25 +00:00
|
|
|
|
;;;
|
|
|
|
|
;;; This file is part of GNU Guix.
|
|
|
|
|
;;;
|
|
|
|
|
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
|
|
|
|
;;; under the terms of the GNU General Public License as published by
|
|
|
|
|
;;; the Free Software Foundation; either version 3 of the License, or (at
|
|
|
|
|
;;; your option) any later version.
|
|
|
|
|
;;;
|
|
|
|
|
;;; GNU Guix is distributed in the hope that it will be useful, but
|
|
|
|
|
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
;;; GNU General Public License for more details.
|
|
|
|
|
;;;
|
|
|
|
|
;;; You should have received a copy of the GNU General Public License
|
|
|
|
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
(define-module (gnu packages gcc)
|
2013-04-20 15:47:59 +00:00
|
|
|
|
#:use-module ((guix licenses)
|
2015-07-19 20:27:37 +00:00
|
|
|
|
#:select (gpl3+ gpl2+ lgpl2.1+ lgpl2.0+ fdl1.3+))
|
2013-03-27 14:13:25 +00:00
|
|
|
|
#:use-module (gnu packages)
|
|
|
|
|
#:use-module (gnu packages bootstrap)
|
|
|
|
|
#:use-module (gnu packages compression)
|
|
|
|
|
#:use-module (gnu packages multiprecision)
|
2013-07-06 16:08:29 +00:00
|
|
|
|
#:use-module (gnu packages texinfo)
|
2015-10-22 11:02:37 +00:00
|
|
|
|
#:use-module (gnu packages dejagnu)
|
gnu: Update module imports for asciidoc and doxygen.
This is a followup to commit 0573a923def01e54bf104e0015ade44ab42f694f.
* gnu/packages/algebra.scm, gnu/packages/bioinformatics.scm,
gnu/packages/fcitx.scm, gnu/packages/fish.scm,
gnu/packages/freedesktop.scm, gnu/packages/game-development.scm,
gnu/packages/gcc.scm, gnu/packages/graphics.scm, gnu/packages/image.scm,
gnu/packages/kodi.scm, gnu/packages/libreoffice.scm,
gnu/packages/linux.scm, gnu/packages/messaging.scm,
gnu/packages/mpd.scm, gnu/packages/music.scm, gnu/packages/rdf.scm,
gnu/packages/serialization.scm, gnu/packages/version-control.scm,
gnu/packages/web.scm, gnu/packages/wm.scm, gnu/packages/xdisorg.scm,
gnu/packages/xiph.scm: Change imports of (gnu packages asciidoc) or
(gnu packages doxygen) to (gnu packages documentation).
2016-05-13 00:18:15 +00:00
|
|
|
|
#:use-module (gnu packages documentation)
|
2015-07-12 21:09:44 +00:00
|
|
|
|
#:use-module (gnu packages xml)
|
|
|
|
|
#:use-module (gnu packages docbook)
|
|
|
|
|
#:use-module (gnu packages graphviz)
|
2013-12-15 22:27:56 +00:00
|
|
|
|
#:use-module (gnu packages elf)
|
2015-04-20 13:50:59 +00:00
|
|
|
|
#:use-module (gnu packages perl)
|
2013-03-27 14:13:25 +00:00
|
|
|
|
#:use-module (guix packages)
|
|
|
|
|
#:use-module (guix download)
|
2013-06-26 21:02:49 +00:00
|
|
|
|
#:use-module (guix build-system gnu)
|
2014-12-23 11:31:50 +00:00
|
|
|
|
#:use-module (guix build-system trivial)
|
2021-07-06 06:50:31 +00:00
|
|
|
|
#:use-module (guix gexp)
|
2013-11-01 20:34:24 +00:00
|
|
|
|
#:use-module (guix utils)
|
2016-10-07 20:06:24 +00:00
|
|
|
|
#:use-module (srfi srfi-1)
|
2022-02-15 08:21:47 +00:00
|
|
|
|
#:use-module (ice-9 match)
|
2013-06-26 21:02:49 +00:00
|
|
|
|
#:use-module (ice-9 regex))
|
2013-03-27 14:13:25 +00:00
|
|
|
|
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(define %gcc-infrastructure
|
|
|
|
|
;; Base URL for GCC's infrastructure.
|
2016-11-19 17:42:12 +00:00
|
|
|
|
"mirror://gcc/infrastructure/")
|
2013-03-27 14:37:27 +00:00
|
|
|
|
|
2015-01-07 15:00:44 +00:00
|
|
|
|
(define (gcc-configure-flags-for-triplet target)
|
2013-06-26 21:02:49 +00:00
|
|
|
|
"Return a list of additional GCC `configure' flags for TARGET, a GNU triplet.
|
|
|
|
|
|
|
|
|
|
The purpose of this procedure is to translate extended GNU triplets---e.g.,
|
|
|
|
|
where the OS part is overloaded to denote a specific ABI---into GCC
|
|
|
|
|
`configure' options. We take extended GNU triplets that glibc recognizes."
|
|
|
|
|
(cond ((string-match "^mips64el.*gnuabin?64$" target)
|
|
|
|
|
;; Triplets recognized by glibc as denoting the N64 ABI; see
|
|
|
|
|
;; ports/sysdeps/mips/preconfigure.
|
|
|
|
|
'("--with-abi=64"))
|
2015-01-07 20:55:23 +00:00
|
|
|
|
|
|
|
|
|
((string-match "^arm.*-gnueabihf$" target)
|
|
|
|
|
'("--with-arch=armv7-a"
|
|
|
|
|
"--with-float=hard"
|
|
|
|
|
"--with-mode=thumb"
|
2015-07-10 18:51:04 +00:00
|
|
|
|
"--with-fpu=neon"))
|
2015-01-07 20:55:23 +00:00
|
|
|
|
|
2017-12-31 00:18:34 +00:00
|
|
|
|
((and (string-suffix? "-gnu" target)
|
|
|
|
|
(not (string-contains target "-linux")))
|
|
|
|
|
;; Cross-compilation of libcilkrts in GCC 5.5.0 to GNU/Hurd fails
|
|
|
|
|
;; with:
|
|
|
|
|
;; libcilkrts/runtime/os-unix.c:388:2: error: #error "Unknown architecture"
|
|
|
|
|
;; Cilk has been removed from GCC 8 anyway.
|
|
|
|
|
'("--disable-libcilkrts"))
|
|
|
|
|
|
2021-06-18 18:26:31 +00:00
|
|
|
|
;; glibc needs the 128-bit long double type on these architectures.
|
|
|
|
|
((or (string-prefix? "powerpc64le-" target)
|
|
|
|
|
(string-prefix? "powerpc-" target))
|
|
|
|
|
'("--with-long-double-128"))
|
|
|
|
|
|
2013-06-26 21:02:49 +00:00
|
|
|
|
(else
|
2015-01-07 20:55:23 +00:00
|
|
|
|
;; TODO: Add `arm.*-gnueabi', etc.
|
2013-06-26 21:02:49 +00:00
|
|
|
|
'())))
|
|
|
|
|
|
2013-03-27 14:13:25 +00:00
|
|
|
|
(define-public gcc-4.7
|
2015-06-09 19:51:18 +00:00
|
|
|
|
(let* ((stripped? #t) ;whether to strip the compiler, not the libraries
|
2013-06-26 14:51:39 +00:00
|
|
|
|
(maybe-target-tools
|
|
|
|
|
(lambda ()
|
|
|
|
|
;; Return the `_FOR_TARGET' variables that are needed when
|
|
|
|
|
;; cross-compiling GCC.
|
|
|
|
|
(let ((target (%current-target-system)))
|
|
|
|
|
(if target
|
|
|
|
|
(map (lambda (var tool)
|
|
|
|
|
(string-append (string-append var "_FOR_TARGET")
|
|
|
|
|
"=" target "-" tool))
|
2017-12-20 21:21:16 +00:00
|
|
|
|
'("CC" "CXX" "LD" "AR" "NM" "OBJDUMP" "RANLIB" "STRIP")
|
|
|
|
|
'("gcc" "g++" "ld" "ar" "nm" "objdump" "ranlib" "strip"))
|
2013-06-26 14:51:39 +00:00
|
|
|
|
'()))))
|
2015-04-02 08:26:15 +00:00
|
|
|
|
(libdir
|
|
|
|
|
(let ((base '(or (assoc-ref outputs "lib")
|
|
|
|
|
(assoc-ref outputs "out"))))
|
|
|
|
|
(lambda ()
|
|
|
|
|
;; Return the directory that contains lib/libgcc_s.so et al.
|
|
|
|
|
(if (%current-target-system)
|
|
|
|
|
`(string-append ,base "/" ,(%current-target-system))
|
|
|
|
|
base))))
|
2013-06-26 14:51:39 +00:00
|
|
|
|
(configure-flags
|
|
|
|
|
(lambda ()
|
|
|
|
|
;; This is terrible. Since we have two levels of quasiquotation,
|
|
|
|
|
;; we have to do this convoluted thing just so we can insert the
|
|
|
|
|
;; contents of (maybe-target-tools).
|
|
|
|
|
(list 'quasiquote
|
|
|
|
|
(append
|
|
|
|
|
'("--enable-plugin"
|
|
|
|
|
"--enable-languages=c,c++"
|
|
|
|
|
"--disable-multilib"
|
2015-12-11 22:45:29 +00:00
|
|
|
|
"--with-system-zlib"
|
2013-06-26 14:51:39 +00:00
|
|
|
|
|
2013-11-14 23:10:10 +00:00
|
|
|
|
;; No pre-compiled libstdc++ headers, to save space.
|
|
|
|
|
"--disable-libstdcxx-pch"
|
|
|
|
|
|
2013-06-26 14:51:39 +00:00
|
|
|
|
"--with-local-prefix=/no-gcc-local-prefix"
|
|
|
|
|
|
2014-06-09 09:58:43 +00:00
|
|
|
|
;; With a separate "lib" output, the build system
|
|
|
|
|
;; incorrectly guesses GPLUSPLUS_INCLUDE_DIR, so force
|
|
|
|
|
;; it. (Don't use a versioned sub-directory, that's
|
|
|
|
|
;; unnecessary.)
|
|
|
|
|
,(string-append "--with-gxx-include-dir="
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/include/c++")
|
|
|
|
|
|
2013-06-26 14:51:39 +00:00
|
|
|
|
,(let ((libc (assoc-ref %build-inputs "libc")))
|
|
|
|
|
(if libc
|
|
|
|
|
(string-append "--with-native-system-header-dir=" libc
|
|
|
|
|
"/include")
|
|
|
|
|
"--without-headers")))
|
|
|
|
|
|
2015-01-07 15:00:44 +00:00
|
|
|
|
;; Pass the right options for the target triplet.
|
|
|
|
|
(let ((triplet
|
|
|
|
|
(or (%current-target-system)
|
|
|
|
|
(nix-system->gnu-triplet (%current-system)))))
|
|
|
|
|
(gcc-configure-flags-for-triplet triplet))
|
2013-06-26 21:02:49 +00:00
|
|
|
|
|
2013-06-26 14:51:39 +00:00
|
|
|
|
(maybe-target-tools))))))
|
2019-02-12 22:21:48 +00:00
|
|
|
|
(hidden-package
|
|
|
|
|
(package
|
|
|
|
|
(name "gcc")
|
|
|
|
|
(version "4.7.4")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
|
|
|
|
version "/gcc-" version ".tar.bz2"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"10k2k71kxgay283ylbbhhs51cl55zn2q38vj5pk4k950qdnirrlj"))
|
|
|
|
|
(patches (search-patches "gcc-4-compile-with-gcc-5.patch"
|
|
|
|
|
"gcc-fix-texi2pod.patch"))))
|
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
|
|
|
|
|
;; Separate out the run-time support libraries because all the
|
|
|
|
|
;; dynamic-linked objects depend on it.
|
|
|
|
|
(outputs '("out" ;commands, etc. (60+ MiB)
|
|
|
|
|
"lib" ;libgcc_s, libgomp, etc. (15+ MiB)
|
|
|
|
|
"debug")) ;debug symbols of run-time libraries
|
|
|
|
|
|
2021-12-13 16:18:24 +00:00
|
|
|
|
(inputs (list gmp mpfr mpc libelf zlib))
|
2019-02-12 22:21:48 +00:00
|
|
|
|
|
|
|
|
|
;; GCC < 5 is one of the few packages that doesn't ship .info files.
|
|
|
|
|
;; Newer texinfos fail to build the manual, so we use an older one.
|
2021-12-13 16:18:24 +00:00
|
|
|
|
(native-inputs (list perl ;for manpages
|
|
|
|
|
texinfo-5))
|
2019-02-12 22:21:48 +00:00
|
|
|
|
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:out-of-source? #t
|
|
|
|
|
#:configure-flags ,(configure-flags)
|
|
|
|
|
#:make-flags
|
|
|
|
|
;; None of the flags below are needed when doing a Canadian cross.
|
|
|
|
|
;; TODO: Simplify this.
|
|
|
|
|
,(if (%current-target-system)
|
|
|
|
|
(if stripped?
|
|
|
|
|
''("CFLAGS=-g0 -O2")
|
|
|
|
|
''())
|
|
|
|
|
`(let* ((libc (assoc-ref %build-inputs "libc"))
|
|
|
|
|
(libc-native (or (assoc-ref %build-inputs "libc-native")
|
|
|
|
|
libc)))
|
|
|
|
|
`(,@(if libc
|
|
|
|
|
(list (string-append "LDFLAGS_FOR_TARGET="
|
|
|
|
|
"-B" libc "/lib "
|
|
|
|
|
"-Wl,-dynamic-linker "
|
|
|
|
|
"-Wl," libc
|
|
|
|
|
,(glibc-dynamic-linker)))
|
|
|
|
|
'())
|
|
|
|
|
|
|
|
|
|
;; Native programs like 'genhooks' also need that right.
|
|
|
|
|
,(string-append "LDFLAGS="
|
|
|
|
|
"-Wl,-rpath=" libc-native "/lib "
|
|
|
|
|
"-Wl,-dynamic-linker "
|
|
|
|
|
"-Wl," libc-native ,(glibc-dynamic-linker))
|
|
|
|
|
,(string-append "BOOT_CFLAGS=-O2 "
|
|
|
|
|
,(if stripped? "-g0" "-g")))))
|
|
|
|
|
|
|
|
|
|
#:tests? #f
|
|
|
|
|
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-before 'configure 'pre-configure
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(let ((libdir ,(libdir))
|
|
|
|
|
(libc (assoc-ref inputs "libc")))
|
|
|
|
|
(when libc
|
|
|
|
|
;; The following is not performed for `--without-headers'
|
|
|
|
|
;; cross-compiler builds.
|
|
|
|
|
|
|
|
|
|
;; Join multi-line definitions of GLIBC_DYNAMIC_LINKER* into a
|
|
|
|
|
;; single line, to allow the next step to work properly.
|
|
|
|
|
(for-each
|
|
|
|
|
(lambda (x)
|
2018-02-19 21:51:08 +00:00
|
|
|
|
(substitute* (find-files "gcc/config"
|
|
|
|
|
"^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
|
2019-02-12 22:21:48 +00:00
|
|
|
|
(("(#define (GLIBC|GNU_USER)_DYNAMIC_LINKER.*)\\\\\n$" _ line)
|
|
|
|
|
line)))
|
|
|
|
|
'(1 2 3))
|
|
|
|
|
|
|
|
|
|
;; Fix the dynamic linker's file name.
|
|
|
|
|
(substitute* (find-files "gcc/config"
|
|
|
|
|
"^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
|
|
|
|
|
(("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^ \t]*).*$"
|
|
|
|
|
_ gnu-user suffix)
|
|
|
|
|
(format #f "#define ~a_DYNAMIC_LINKER~a \"~a\"~%"
|
|
|
|
|
gnu-user suffix
|
|
|
|
|
(string-append libc ,(glibc-dynamic-linker)))))
|
|
|
|
|
|
|
|
|
|
;; Tell where to find libstdc++, libc, and `?crt*.o', except
|
|
|
|
|
;; `crt{begin,end}.o', which come with GCC.
|
|
|
|
|
(substitute* (find-files "gcc/config"
|
|
|
|
|
"^gnu-user.*\\.h$")
|
|
|
|
|
(("#define GNU_USER_TARGET_LIB_SPEC (.*)$" _ suffix)
|
|
|
|
|
;; Help libgcc_s.so be found (see also below.) Always use
|
|
|
|
|
;; '-lgcc_s' so that libgcc_s.so is always found by those
|
|
|
|
|
;; programs that use 'pthread_cancel' (glibc dlopens
|
|
|
|
|
;; libgcc_s.so when pthread_cancel support is needed, but
|
|
|
|
|
;; having it in the application's RUNPATH isn't enough; see
|
|
|
|
|
;; <http://sourceware.org/ml/libc-help/2013-11/msg00023.html>.)
|
|
|
|
|
;;
|
|
|
|
|
;; NOTE: The '-lgcc_s' added below needs to be removed in a
|
|
|
|
|
;; later phase of %gcc-static. If you change the string
|
|
|
|
|
;; below, make sure to update the relevant code in
|
|
|
|
|
;; %gcc-static package as needed.
|
|
|
|
|
(format #f "#define GNU_USER_TARGET_LIB_SPEC \
|
2015-06-09 19:39:10 +00:00
|
|
|
|
\"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
|
2019-02-12 22:21:48 +00:00
|
|
|
|
libc libc libdir suffix))
|
|
|
|
|
(("#define GNU_USER_TARGET_STARTFILE_SPEC.*$" line)
|
|
|
|
|
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
|
2013-03-27 14:13:25 +00:00
|
|
|
|
#define STANDARD_STARTFILE_PREFIX_2 \"\"
|
2013-11-14 23:10:10 +00:00
|
|
|
|
~a"
|
2019-02-12 22:21:48 +00:00
|
|
|
|
libc line)))
|
|
|
|
|
|
|
|
|
|
;; The rs6000 (a.k.a. powerpc) config in GCC does not use
|
|
|
|
|
;; GNU_USER_* defines. Do the above for this case.
|
|
|
|
|
(substitute*
|
|
|
|
|
"gcc/config/rs6000/sysv4.h"
|
|
|
|
|
(("#define LIB_LINUX_SPEC (.*)$" _ suffix)
|
|
|
|
|
(format #f "#define LIB_LINUX_SPEC \
|
2017-01-04 22:47:24 +00:00
|
|
|
|
\"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
|
2019-02-12 22:21:48 +00:00
|
|
|
|
libc libc libdir suffix))
|
|
|
|
|
(("#define STARTFILE_LINUX_SPEC.*$" line)
|
|
|
|
|
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
|
2017-01-04 22:47:24 +00:00
|
|
|
|
#define STANDARD_STARTFILE_PREFIX_2 \"\"
|
|
|
|
|
~a"
|
2019-02-12 22:21:48 +00:00
|
|
|
|
libc line))))
|
|
|
|
|
|
2021-03-24 13:42:16 +00:00
|
|
|
|
(when (file-exists? "gcc/config/rs6000")
|
|
|
|
|
;; Force powerpc libdir to be /lib and not /lib64
|
|
|
|
|
(substitute* (find-files "gcc/config/rs6000")
|
|
|
|
|
(("/lib64") "/lib")))
|
2021-02-07 00:29:40 +00:00
|
|
|
|
|
2019-02-12 22:21:48 +00:00
|
|
|
|
;; Don't retain a dependency on the build-time sed.
|
|
|
|
|
(substitute* "fixincludes/fixincl.x"
|
|
|
|
|
(("static char const sed_cmd_z\\[\\] =.*;")
|
|
|
|
|
"static char const sed_cmd_z[] = \"sed\";"))
|
|
|
|
|
|
|
|
|
|
;; Aarch64 support didn't land in GCC until the 4.8 series.
|
|
|
|
|
(when (file-exists? "gcc/config/aarch64")
|
|
|
|
|
;; Force Aarch64 libdir to be /lib and not /lib64
|
|
|
|
|
(substitute* "gcc/config/aarch64/t-aarch64-linux"
|
|
|
|
|
(("lib64") "lib")))
|
|
|
|
|
|
2022-03-16 10:09:42 +00:00
|
|
|
|
;; TODO: Make this unconditional in core-updates.
|
|
|
|
|
;; The STARTFILE_PREFIX_SPEC prevents gcc from finding the
|
|
|
|
|
;; gcc:lib output, which causes ld to not find -lgcc_s.
|
|
|
|
|
,@(if (target-riscv64?)
|
|
|
|
|
`((when (file-exists? "gcc/config/riscv")
|
|
|
|
|
(substitute* "gcc/config/riscv/linux.h"
|
|
|
|
|
(("define STARTFILE_PREFIX_SPEC")
|
|
|
|
|
"define __STARTFILE_PREFIX_SPEC"))))
|
|
|
|
|
'())
|
|
|
|
|
|
2019-02-12 22:21:48 +00:00
|
|
|
|
(when (file-exists? "libbacktrace")
|
|
|
|
|
;; GCC 4.8+ comes with libbacktrace. By default it builds
|
|
|
|
|
;; with -Werror, which fails with a -Wcast-qual error in glibc
|
|
|
|
|
;; 2.21's stdlib-bsearch.h. Remove -Werror.
|
|
|
|
|
(substitute* "libbacktrace/configure"
|
|
|
|
|
(("WARN_FLAGS=(.*)-Werror" _ flags)
|
|
|
|
|
(string-append "WARN_FLAGS=" flags)))
|
|
|
|
|
|
|
|
|
|
(when (file-exists? "libsanitizer/libbacktrace")
|
|
|
|
|
;; Same in libsanitizer's bundled copy (!) found in 4.9+.
|
|
|
|
|
(substitute* "libsanitizer/libbacktrace/Makefile.in"
|
|
|
|
|
(("-Werror")
|
|
|
|
|
""))))
|
|
|
|
|
|
|
|
|
|
;; Add a RUNPATH to libstdc++.so so that it finds libgcc_s.
|
|
|
|
|
;; See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32354>
|
|
|
|
|
;; and <http://bugs.gnu.org/20358>.
|
|
|
|
|
(substitute* "libstdc++-v3/src/Makefile.in"
|
|
|
|
|
(("^OPT_LDFLAGS = ")
|
|
|
|
|
"OPT_LDFLAGS = -Wl,-rpath=$(libdir) "))
|
|
|
|
|
|
|
|
|
|
;; Move libstdc++*-gdb.py to the "lib" output to avoid a
|
|
|
|
|
;; circularity between "out" and "lib". (Note:
|
|
|
|
|
;; --with-python-dir is useless because it imposes $(prefix) as
|
|
|
|
|
;; the parent directory.)
|
|
|
|
|
(substitute* "libstdc++-v3/python/Makefile.in"
|
|
|
|
|
(("pythondir = .*$")
|
|
|
|
|
(string-append "pythondir = " libdir "/share"
|
|
|
|
|
"/gcc-$(gcc_version)/python\n")))
|
|
|
|
|
|
|
|
|
|
;; Avoid another circularity between the outputs: this #define
|
|
|
|
|
;; ends up in auto-host.h in the "lib" output, referring to
|
|
|
|
|
;; "out". (This variable is used to augment cpp's search path,
|
|
|
|
|
;; but there's nothing useful to look for here.)
|
|
|
|
|
(substitute* "gcc/config.in"
|
|
|
|
|
(("PREFIX_INCLUDE_DIR")
|
2020-11-24 23:05:55 +00:00
|
|
|
|
"PREFIX_INCLUDE_DIR_isnt_necessary_here")))))
|
2019-02-12 22:21:48 +00:00
|
|
|
|
|
|
|
|
|
(add-after 'configure 'post-configure
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Don't store configure flags, to avoid retaining references to
|
|
|
|
|
;; build-time dependencies---e.g., `--with-ppl=/gnu/store/xxx'.
|
|
|
|
|
(substitute* "Makefile"
|
|
|
|
|
(("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
|
2020-11-24 23:05:55 +00:00
|
|
|
|
"TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))))))
|
2019-02-12 22:21:48 +00:00
|
|
|
|
|
|
|
|
|
(native-search-paths
|
|
|
|
|
;; Use the language-specific variables rather than 'CPATH' because they
|
|
|
|
|
;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
|
|
|
|
|
;; The intent is to allow headers that are in the search path to be
|
|
|
|
|
;; treated as "system headers" (headers exempt from warnings) just like
|
|
|
|
|
;; the typical /usr/include headers on an FHS system.
|
|
|
|
|
(list (search-path-specification
|
|
|
|
|
(variable "C_INCLUDE_PATH")
|
|
|
|
|
(files '("include")))
|
|
|
|
|
(search-path-specification
|
|
|
|
|
(variable "CPLUS_INCLUDE_PATH")
|
2020-02-06 14:32:00 +00:00
|
|
|
|
;; Add 'include/c++' here so that <cstdlib>'s "#include_next
|
|
|
|
|
;; <stdlib.h>" finds GCC's <stdlib.h>, not libc's.
|
|
|
|
|
(files '("include/c++" "include")))
|
2019-02-12 22:21:48 +00:00
|
|
|
|
(search-path-specification
|
|
|
|
|
(variable "LIBRARY_PATH")
|
|
|
|
|
(files '("lib" "lib64")))))
|
|
|
|
|
|
|
|
|
|
(properties `((gcc-libc . ,(assoc-ref inputs "libc"))))
|
|
|
|
|
(synopsis "GNU Compiler Collection")
|
|
|
|
|
(description
|
|
|
|
|
"GCC is the GNU Compiler Collection. It provides compiler front-ends
|
Synchronize package descriptions with the Womb.
* gnu/packages/algebra.scm,
gnu/packages/aspell.scm,
gnu/packages/autotools.scm,
gnu/packages/base.scm,
gnu/packages/bash.scm,
gnu/packages/bison.scm,
gnu/packages/cdrom.scm,
gnu/packages/cflow.scm,
gnu/packages/compression.scm,
gnu/packages/cpio.scm,
gnu/packages/cppi.scm,
gnu/packages/ddrescue.scm,
gnu/packages/dejagnu.scm,
gnu/packages/ed.scm,
gnu/packages/emacs.scm,
gnu/packages/fdisk.scm,
gnu/packages/freeipmi.scm,
gnu/packages/gawk.scm,
gnu/packages/gcal.scm,
gnu/packages/gcc.scm,
gnu/packages/gdb.scm,
gnu/packages/gdbm.scm,
gnu/packages/gettext.scm,
gnu/packages/ghostscript.scm,
gnu/packages/global.scm,
gnu/packages/gnunet.scm,
gnu/packages/gnupg.scm,
gnu/packages/gnutls.scm,
gnu/packages/gperf.scm,
gnu/packages/gprolog.scm,
gnu/packages/groff.scm,
gnu/packages/grub.scm,
gnu/packages/gsasl.scm,
gnu/packages/guile.scm,
gnu/packages/gv.scm,
gnu/packages/help2man.scm,
gnu/packages/idutils.scm,
gnu/packages/indent.scm,
gnu/packages/less.scm,
gnu/packages/libidn.scm,
gnu/packages/libsigsegv.scm,
gnu/packages/libunistring.scm,
gnu/packages/lightning.scm,
gnu/packages/linux.scm,
gnu/packages/lsh.scm,
gnu/packages/m4.scm,
gnu/packages/mail.scm,
gnu/packages/maths.scm,
gnu/packages/multiprecision.scm,
gnu/packages/nano.scm,
gnu/packages/ncurses.scm,
gnu/packages/nettle.scm,
gnu/packages/ocrad.scm,
gnu/packages/oggvorbis.scm,
gnu/packages/parted.scm,
gnu/packages/plotutils.scm,
gnu/packages/pth.scm,
gnu/packages/readline.scm,
gnu/packages/recutils.scm,
gnu/packages/rush.scm,
gnu/packages/scheme.scm,
gnu/packages/screen.scm,
gnu/packages/shishi.scm,
gnu/packages/smalltalk.scm,
gnu/packages/system.scm,
gnu/packages/texinfo.scm,
gnu/packages/time.scm,
gnu/packages/unrtf.scm,
gnu/packages/version-control.scm,
gnu/packages/wdiff.scm,
gnu/packages/wget.scm,
gnu/packages/which.scm,
gnu/packages/xnee.scm,
gnu/packages/zile.scm: Change value of the 'description' field to that
of the Womb.
2013-10-09 14:14:23 +00:00
|
|
|
|
for several languages, including C, C++, Objective-C, Fortran, Java, Ada, and
|
2013-12-01 21:33:23 +00:00
|
|
|
|
Go. It also includes runtime support libraries for these languages.")
|
2019-02-12 22:21:48 +00:00
|
|
|
|
(license gpl3+)
|
|
|
|
|
(supported-systems (delete "aarch64-linux" %supported-systems))
|
|
|
|
|
(home-page "https://gcc.gnu.org/")))))
|
2013-03-27 14:37:27 +00:00
|
|
|
|
|
2013-04-26 20:51:07 +00:00
|
|
|
|
(define-public gcc-4.8
|
|
|
|
|
(package (inherit gcc-4.7)
|
2015-06-29 08:37:24 +00:00
|
|
|
|
(version "4.8.5")
|
2013-04-26 20:51:07 +00:00
|
|
|
|
(source (origin
|
2015-04-30 11:31:59 +00:00
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
|
|
|
|
version "/gcc-" version ".tar.bz2"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2015-06-29 08:37:24 +00:00
|
|
|
|
"08yggr18v373a1ihj0rg2vd6psnic42b518xcgp3r9k81xz1xyr2"))
|
2017-10-01 13:27:31 +00:00
|
|
|
|
(patches (search-patches "gcc-arm-link-spec-fix.patch"
|
2018-08-19 16:20:05 +00:00
|
|
|
|
"gcc-4.8-libsanitizer-fix.patch"
|
2017-06-07 22:26:10 +00:00
|
|
|
|
"gcc-asan-missing-include.patch"
|
2018-01-02 08:33:02 +00:00
|
|
|
|
"gcc-fix-texi2pod.patch"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
;; This is required for building with glibc-2.26.
|
|
|
|
|
;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712
|
|
|
|
|
(snippet
|
2020-11-24 23:01:09 +00:00
|
|
|
|
'(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")))))
|
2017-09-12 17:57:20 +00:00
|
|
|
|
(supported-systems %supported-systems)
|
|
|
|
|
(inputs
|
2021-12-13 16:18:24 +00:00
|
|
|
|
(modify-inputs (package-inputs gcc-4.7)
|
|
|
|
|
(prepend isl-0.11 cloog)))))
|
2013-04-26 20:51:07 +00:00
|
|
|
|
|
2014-04-22 15:44:45 +00:00
|
|
|
|
(define-public gcc-4.9
|
2017-09-12 17:55:54 +00:00
|
|
|
|
(package (inherit gcc-4.8)
|
2016-08-14 07:14:14 +00:00
|
|
|
|
(version "4.9.4")
|
2014-04-22 15:44:45 +00:00
|
|
|
|
(source (origin
|
2015-04-30 11:31:59 +00:00
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
|
|
|
|
version "/gcc-" version ".tar.bz2"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2016-08-14 07:14:14 +00:00
|
|
|
|
"14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"))
|
2018-02-17 22:34:47 +00:00
|
|
|
|
(patches (search-patches "gcc-4.9-libsanitizer-fix.patch"
|
2018-08-31 15:40:40 +00:00
|
|
|
|
"gcc-4.9-libsanitizer-ustat.patch"
|
gnu: glibc: Update to 2.31.
* gnu/packages/patches/glibc-supported-locales.patch: Adjust for upstream
changes.
* gnu/packages/patches/glibc-2.29-supported-locales.patch: New file, with
previous contents.
* gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch: New files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/gcc.scm (gcc-4.9, gcc-5, gcc-6, gcc-7, gcc-8,
gcc-9)[source](patches): Add the respective patch files.
* gnu/packages/base.scm (glibc): Update to 2.31.
[source](patches): Remove obsolete.
(glibc-2.30): New public variable.
(glibc-2.29)[source](patches): Adjust for renamed patch file.
2020-02-01 15:29:02 +00:00
|
|
|
|
"gcc-4.9-libsanitizer-mode-size.patch"
|
2018-02-17 22:34:47 +00:00
|
|
|
|
"gcc-arm-bug-71399.patch"
|
2018-01-02 21:47:12 +00:00
|
|
|
|
"gcc-asan-missing-include.patch"
|
2017-10-01 13:27:31 +00:00
|
|
|
|
"gcc-libvtv-runpath.patch"
|
2018-01-17 20:08:01 +00:00
|
|
|
|
"gcc-fix-texi2pod.patch"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
;; This is required for building with glibc-2.26.
|
|
|
|
|
;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712
|
|
|
|
|
(snippet
|
2020-11-24 23:01:09 +00:00
|
|
|
|
'(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")))))
|
2017-10-01 13:27:31 +00:00
|
|
|
|
;; Override inherited texinfo-5 with latest version.
|
2021-12-13 16:18:24 +00:00
|
|
|
|
(native-inputs (list perl ;for manpages
|
|
|
|
|
texinfo))
|
2020-03-15 15:03:16 +00:00
|
|
|
|
(arguments
|
|
|
|
|
(if (%current-target-system)
|
|
|
|
|
(package-arguments gcc-4.8)
|
|
|
|
|
;; For native builds of GCC 4.9 and GCC 5, the C++ include path needs
|
|
|
|
|
;; to be adjusted so it does not interfere with GCC's own build processes.
|
|
|
|
|
(substitute-keyword-arguments (package-arguments gcc-4.8)
|
|
|
|
|
((#:modules modules %gnu-build-system-modules)
|
|
|
|
|
`((srfi srfi-1)
|
|
|
|
|
,@modules))
|
|
|
|
|
((#:phases phases)
|
|
|
|
|
`(modify-phases ,phases
|
|
|
|
|
(add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
(let ((libc (assoc-ref inputs "libc"))
|
|
|
|
|
(gcc (assoc-ref inputs "gcc")))
|
|
|
|
|
(setenv "CPLUS_INCLUDE_PATH"
|
|
|
|
|
(string-join (fold delete
|
|
|
|
|
(string-split (getenv "CPLUS_INCLUDE_PATH")
|
|
|
|
|
#\:)
|
|
|
|
|
(list (string-append libc "/include")
|
|
|
|
|
(string-append gcc "/include/c++")))
|
|
|
|
|
":"))
|
|
|
|
|
(format #t
|
|
|
|
|
"environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
|
2020-11-24 23:05:55 +00:00
|
|
|
|
(getenv "CPLUS_INCLUDE_PATH"))))))))))))
|
2014-04-22 15:44:45 +00:00
|
|
|
|
|
2021-07-06 06:50:31 +00:00
|
|
|
|
(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")))
|
|
|
|
|
|
2015-07-20 01:11:56 +00:00
|
|
|
|
(define-public gcc-5
|
2016-08-04 16:54:47 +00:00
|
|
|
|
;; Note: GCC >= 5 ships with .info files but 'make install' fails to install
|
|
|
|
|
;; them in a VPATH build.
|
2015-04-30 11:31:59 +00:00
|
|
|
|
(package (inherit gcc-4.9)
|
2017-10-12 19:36:25 +00:00
|
|
|
|
(version "5.5.0")
|
2015-04-23 05:05:36 +00:00
|
|
|
|
(source (origin
|
2015-04-30 11:31:59 +00:00
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
2017-10-12 19:36:25 +00:00
|
|
|
|
version "/gcc-" version ".tar.xz"))
|
2015-04-30 11:31:59 +00:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2017-10-12 19:36:25 +00:00
|
|
|
|
"11zd1hgzkli3b2v70qsm2hyqppngd4616qc96lmm9zl2kl9yl32k"))
|
2016-12-12 00:01:13 +00:00
|
|
|
|
(patches (search-patches "gcc-arm-bug-71399.patch"
|
2018-08-01 21:19:28 +00:00
|
|
|
|
"gcc-libsanitizer-ustat.patch"
|
2016-12-12 00:01:13 +00:00
|
|
|
|
"gcc-strmov-store-file-names.patch"
|
2017-01-21 11:31:49 +00:00
|
|
|
|
"gcc-5.0-libvtv-runpath.patch"
|
|
|
|
|
"gcc-5-source-date-epoch-1.patch"
|
2017-10-01 13:27:31 +00:00
|
|
|
|
"gcc-5-source-date-epoch-2.patch"
|
gnu: glibc: Update to 2.31.
* gnu/packages/patches/glibc-supported-locales.patch: Adjust for upstream
changes.
* gnu/packages/patches/glibc-2.29-supported-locales.patch: New file, with
previous contents.
* gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch: New files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/gcc.scm (gcc-4.9, gcc-5, gcc-6, gcc-7, gcc-8,
gcc-9)[source](patches): Add the respective patch files.
* gnu/packages/base.scm (glibc): Update to 2.31.
[source](patches): Remove obsolete.
(glibc-2.30): New public variable.
(glibc-2.29)[source](patches): Adjust for renamed patch file.
2020-02-01 15:29:02 +00:00
|
|
|
|
"gcc-6-libsanitizer-mode-size.patch"
|
2020-03-12 09:58:44 +00:00
|
|
|
|
"gcc-fix-texi2pod.patch"
|
2021-08-05 16:19:43 +00:00
|
|
|
|
"gcc-5-hurd.patch"
|
|
|
|
|
;; See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86162
|
|
|
|
|
"gcc-5-fix-powerpc64le-build.patch"))
|
2017-12-20 21:21:16 +00:00
|
|
|
|
(modules '((guix build utils)))
|
2021-07-06 06:50:31 +00:00
|
|
|
|
(snippet gcc-canadian-cross-objdump-snippet)))
|
2017-10-02 09:37:29 +00:00
|
|
|
|
(inputs
|
2021-12-13 16:18:24 +00:00
|
|
|
|
(modify-inputs (package-inputs gcc-4.7)
|
|
|
|
|
(prepend ;; GCC5 needs <isl/band.h> which is removed in later versions.
|
|
|
|
|
isl-0.18)))))
|
2015-04-23 05:05:36 +00:00
|
|
|
|
|
2016-05-03 15:34:54 +00:00
|
|
|
|
(define-public gcc-6
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc-5)
|
2018-12-07 23:43:36 +00:00
|
|
|
|
(version "6.5.0")
|
2016-05-03 15:34:54 +00:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
2017-07-05 05:30:37 +00:00
|
|
|
|
version "/gcc-" version ".tar.xz"))
|
2016-05-03 15:34:54 +00:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2018-12-07 23:43:36 +00:00
|
|
|
|
"0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby"))
|
|
|
|
|
(patches (search-patches "gcc-strmov-store-file-names.patch"
|
gnu: glibc: Update to 2.31.
* gnu/packages/patches/glibc-supported-locales.patch: Adjust for upstream
changes.
* gnu/packages/patches/glibc-2.29-supported-locales.patch: New file, with
previous contents.
* gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch: New files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/gcc.scm (gcc-4.9, gcc-5, gcc-6, gcc-7, gcc-8,
gcc-9)[source](patches): Add the respective patch files.
* gnu/packages/base.scm (glibc): Update to 2.31.
[source](patches): Remove obsolete.
(glibc-2.30): New public variable.
(glibc-2.29)[source](patches): Adjust for renamed patch file.
2020-02-01 15:29:02 +00:00
|
|
|
|
"gcc-6-libsanitizer-mode-size.patch"
|
2017-08-31 16:13:08 +00:00
|
|
|
|
"gcc-6-source-date-epoch-1.patch"
|
|
|
|
|
"gcc-6-source-date-epoch-2.patch"
|
2018-12-07 23:43:36 +00:00
|
|
|
|
"gcc-5.0-libvtv-runpath.patch"))))
|
2020-03-15 15:03:16 +00:00
|
|
|
|
|
|
|
|
|
;; GCC 4.9 and 5 has a workaround that is not needed for GCC 6 and later.
|
|
|
|
|
(arguments (package-arguments gcc-4.8))
|
|
|
|
|
|
2017-09-12 17:57:20 +00:00
|
|
|
|
(inputs
|
|
|
|
|
`(("isl" ,isl)
|
2020-07-24 07:56:25 +00:00
|
|
|
|
|
|
|
|
|
;; XXX: This gross hack allows us to have libstdc++'s <bits/c++config.h>
|
|
|
|
|
;; in the search path, thereby avoiding misconfiguration of libstdc++:
|
|
|
|
|
;; <https://bugs.gnu.org/42392>.
|
|
|
|
|
("libstdc++" ,libstdc++-headers)
|
|
|
|
|
|
2020-02-06 14:32:00 +00:00
|
|
|
|
,@(package-inputs gcc-4.7)))))
|
2017-09-12 17:57:20 +00:00
|
|
|
|
|
2022-02-08 16:15:08 +00:00
|
|
|
|
(define %gcc-7.5-aarch64-micro-architectures
|
|
|
|
|
;; Suitable '-march' values for GCC 7.5.
|
|
|
|
|
;; TODO: Allow dynamically adding feature flags.
|
|
|
|
|
'("armv8-a" "armv8.1-a" "armv8.2-a" "armv8.3-a"))
|
|
|
|
|
|
2022-02-08 16:52:31 +00:00
|
|
|
|
(define %gcc-7.5-armhf-micro-architectures
|
|
|
|
|
;; Suitable '-march' values for GCC 7.5.
|
|
|
|
|
;; TODO: Allow dynamically adding feature flags.
|
|
|
|
|
'("armv7" "armv7-a" "armv7-m" "armv7-r" "armv7e-m" "armv7ve"
|
|
|
|
|
"armv8-a" "armv8-a+crc" "armv8.1-a" "armv8.1-a+crc"
|
|
|
|
|
"armv8-m.base" "armv8-m.main" "armv8-m.main+dsp"
|
|
|
|
|
"iwmmxt" "iwmmxt2"))
|
|
|
|
|
|
2021-12-16 15:49:34 +00:00
|
|
|
|
(define %gcc-7.5-x86_64-micro-architectures
|
|
|
|
|
;; Suitable '-march' values for GCC 7.5 (info "(gcc) x86 Options").
|
|
|
|
|
'("core2" "nehalem" "westmere" "sandybridge" "ivybridge"
|
|
|
|
|
"haswell" "broadwell" "skylake" "bonnell" "silvermont"
|
|
|
|
|
"knl" "skylake-avx512"
|
|
|
|
|
|
|
|
|
|
"k8" "k8-sse3" "barcelona"
|
|
|
|
|
"bdver1" "bdver2" "bdver3" "bdver4"
|
|
|
|
|
"znver1"
|
|
|
|
|
"btver1" "btver2" "geode"))
|
|
|
|
|
|
2022-02-08 16:15:08 +00:00
|
|
|
|
(define %gcc-10-aarch64-micro-architectures
|
|
|
|
|
;; Suitable '-march' values for GCC 10.
|
|
|
|
|
;; TODO: Allow dynamically adding feature flags.
|
|
|
|
|
(append %gcc-7.5-aarch64-micro-architectures
|
|
|
|
|
'("armv8.4-a" "armv8.5-a" "armv8.6-a")))
|
|
|
|
|
|
2022-02-08 16:52:31 +00:00
|
|
|
|
(define %gcc-10-armhf-micro-architectures
|
|
|
|
|
;; Suitable '-march' values for GCC 10.
|
|
|
|
|
;; TODO: Allow dynamically adding feature flags.
|
|
|
|
|
(append %gcc-7.5-armhf-micro-architectures
|
|
|
|
|
'("armv8.2-a" "armv8.3-a" "armv8.4-a" "armv8.5-a" "armv8.6-a"
|
|
|
|
|
"armv8-r" "armv8.1-m.main")))
|
|
|
|
|
|
2021-12-16 15:49:34 +00:00
|
|
|
|
(define %gcc-10-x86_64-micro-architectures
|
|
|
|
|
;; Suitable '-march' values for GCC 10.
|
|
|
|
|
(append %gcc-7.5-x86_64-micro-architectures
|
|
|
|
|
'("goldmont" "goldmont-plus" "tremont"
|
|
|
|
|
"knm" "cannonlake" "icelake-client" "icelake-server"
|
|
|
|
|
"cascadelake" "cooperlake" "tigerlake"
|
|
|
|
|
|
|
|
|
|
"znver2" "znver3")))
|
|
|
|
|
|
2022-05-24 12:16:12 +00:00
|
|
|
|
(define %gcc-11-aarch64-micro-architectures
|
|
|
|
|
;; Suitable '-march' values for GCC 11.
|
|
|
|
|
%gcc-10-aarch64-micro-architectures) ;unchanged
|
|
|
|
|
|
|
|
|
|
(define %gcc-11-armhf-micro-architectures
|
|
|
|
|
%gcc-10-armhf-micro-architectures)
|
|
|
|
|
|
|
|
|
|
(define %gcc-11-x86_64-micro-architectures
|
|
|
|
|
;; Suitable '-march' values for GCC 11.
|
|
|
|
|
(append %gcc-10-x86_64-micro-architectures
|
|
|
|
|
'("sapphirerapids" "alterlake" "rocketlake" ;Intel
|
|
|
|
|
|
|
|
|
|
"btver1" "btver2"))) ;AMD
|
|
|
|
|
|
2017-05-03 13:35:37 +00:00
|
|
|
|
(define-public gcc-7
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc-6)
|
2019-11-27 17:58:52 +00:00
|
|
|
|
(version "7.5.0")
|
2017-05-03 13:35:37 +00:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
2017-08-14 19:29:47 +00:00
|
|
|
|
version "/gcc-" version ".tar.xz"))
|
2017-05-03 13:35:37 +00:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2019-11-27 17:58:52 +00:00
|
|
|
|
"0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq"))
|
2017-05-03 13:35:37 +00:00
|
|
|
|
(patches (search-patches "gcc-strmov-store-file-names.patch"
|
gnu: glibc: Update to 2.31.
* gnu/packages/patches/glibc-supported-locales.patch: Adjust for upstream
changes.
* gnu/packages/patches/glibc-2.29-supported-locales.patch: New file, with
previous contents.
* gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch: New files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/gcc.scm (gcc-4.9, gcc-5, gcc-6, gcc-7, gcc-8,
gcc-9)[source](patches): Add the respective patch files.
* gnu/packages/base.scm (glibc): Update to 2.31.
[source](patches): Remove obsolete.
(glibc-2.30): New public variable.
(glibc-2.29)[source](patches): Adjust for renamed patch file.
2020-02-01 15:29:02 +00:00
|
|
|
|
"gcc-7-libsanitizer-mode-size.patch"
|
2017-09-12 18:13:39 +00:00
|
|
|
|
"gcc-5.0-libvtv-runpath.patch"))))
|
|
|
|
|
(description
|
|
|
|
|
"GCC is the GNU Compiler Collection. It provides compiler front-ends
|
|
|
|
|
for several languages, including C, C++, Objective-C, Fortran, Ada, and Go.
|
2021-12-16 15:49:34 +00:00
|
|
|
|
It also includes runtime support libraries for these languages.")
|
|
|
|
|
(properties
|
|
|
|
|
`((compiler-cpu-architectures
|
2022-02-08 16:15:08 +00:00
|
|
|
|
("aarch64" ,@%gcc-7.5-aarch64-micro-architectures)
|
2022-02-08 16:52:31 +00:00
|
|
|
|
("armhf" ,@%gcc-7.5-armhf-micro-architectures)
|
2021-12-16 15:49:34 +00:00
|
|
|
|
("x86_64" ,@%gcc-7.5-x86_64-micro-architectures))))))
|
2016-05-03 15:34:54 +00:00
|
|
|
|
|
2018-06-25 23:52:18 +00:00
|
|
|
|
(define-public gcc-8
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc-7)
|
2021-05-15 19:42:16 +00:00
|
|
|
|
(version "8.5.0")
|
2018-06-25 23:52:18 +00:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
|
|
|
|
version "/gcc-" version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2021-05-15 19:42:16 +00:00
|
|
|
|
"0l7d4m9jx124xsk6xardchgy2k5j5l2b15q322k31f0va4d8826k"))
|
2018-06-25 23:52:18 +00:00
|
|
|
|
(patches (search-patches "gcc-8-strmov-store-file-names.patch"
|
2021-05-28 20:23:01 +00:00
|
|
|
|
"gcc-5.0-libvtv-runpath.patch"
|
2021-07-06 06:50:31 +00:00
|
|
|
|
"gcc-8-sort-libtool-find-output.patch"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet gcc-canadian-cross-objdump-snippet)))))
|
2018-06-25 23:52:18 +00:00
|
|
|
|
|
2019-05-05 14:32:57 +00:00
|
|
|
|
(define-public gcc-9
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc-8)
|
2022-05-30 12:28:04 +00:00
|
|
|
|
(version "9.5.0")
|
2019-05-05 14:32:57 +00:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
|
|
|
|
version "/gcc-" version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-05-30 12:28:04 +00:00
|
|
|
|
"13ygjmd938m0wmy946pxdhz9i1wq7z4w10l6pvidak0xxxj9yxi7"))
|
2019-05-05 14:32:57 +00:00
|
|
|
|
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
|
2019-05-05 14:35:13 +00:00
|
|
|
|
"gcc-9-asan-fix-limits-include.patch"
|
2021-07-06 06:50:31 +00:00
|
|
|
|
"gcc-5.0-libvtv-runpath.patch"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet gcc-canadian-cross-objdump-snippet)))))
|
2019-05-05 14:32:57 +00:00
|
|
|
|
|
2020-05-08 13:42:08 +00:00
|
|
|
|
(define-public gcc-10
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc-8)
|
2021-04-09 12:06:35 +00:00
|
|
|
|
(version "10.3.0")
|
2020-05-08 13:42:08 +00:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
|
|
|
|
version "/gcc-" version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2021-04-09 12:06:35 +00:00
|
|
|
|
"0i6378ig6h397zkhd7m4ccwjx5alvzrf2hm27p1pzwjhlv0h9x34"))
|
2020-05-08 13:42:08 +00:00
|
|
|
|
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
|
2021-07-06 06:50:31 +00:00
|
|
|
|
"gcc-5.0-libvtv-runpath.patch"))
|
|
|
|
|
(modules '((guix build utils)))
|
2021-12-16 15:49:34 +00:00
|
|
|
|
(snippet gcc-canadian-cross-objdump-snippet)))
|
|
|
|
|
(properties
|
|
|
|
|
`((compiler-cpu-architectures
|
2022-02-08 16:15:08 +00:00
|
|
|
|
("aarch64" ,@%gcc-10-aarch64-micro-architectures)
|
2022-02-08 16:52:31 +00:00
|
|
|
|
("armhf" ,@%gcc-10-armhf-micro-architectures)
|
2021-12-16 15:49:34 +00:00
|
|
|
|
("x86_64" ,@%gcc-10-x86_64-micro-architectures))))))
|
2020-05-08 13:42:08 +00:00
|
|
|
|
|
2021-04-27 14:08:21 +00:00
|
|
|
|
(define-public gcc-11
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc-8)
|
2022-05-06 14:04:43 +00:00
|
|
|
|
(version "11.3.0")
|
2021-04-27 14:08:21 +00:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
|
|
|
|
version "/gcc-" version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-05-06 14:04:43 +00:00
|
|
|
|
"0fdclcwf728wbq52vphfcjywzhpsjp3kifzj3pib3xcihs0z4z5l"))
|
2021-04-27 14:08:21 +00:00
|
|
|
|
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
|
2021-07-06 06:50:31 +00:00
|
|
|
|
"gcc-5.0-libvtv-runpath.patch"))
|
|
|
|
|
(modules '((guix build utils)))
|
2022-03-14 08:37:11 +00:00
|
|
|
|
(snippet gcc-canadian-cross-objdump-snippet)))
|
|
|
|
|
|
2022-05-24 12:16:12 +00:00
|
|
|
|
(properties
|
|
|
|
|
`((compiler-cpu-architectures
|
|
|
|
|
("aarch64" ,@%gcc-11-aarch64-micro-architectures)
|
|
|
|
|
("armhf" ,@%gcc-11-armhf-micro-architectures)
|
|
|
|
|
("x86_64" ,@%gcc-11-x86_64-micro-architectures))))))
|
2021-04-27 14:08:21 +00:00
|
|
|
|
|
2022-05-24 12:54:30 +00:00
|
|
|
|
(define-public gcc-12
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc-11)
|
|
|
|
|
;; Note: 'compiler-cpu-architectures' is unchanged compared to GCC 11.
|
|
|
|
|
(version "12.1.0")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-"
|
|
|
|
|
version "/gcc-" version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"0ywws66myjxcwsmla721g35d2ymlckq6ii7j9av0477ki5467zb2"))
|
|
|
|
|
(patches (search-patches "gcc-12-strmov-store-file-names.patch"
|
|
|
|
|
"gcc-5.0-libvtv-runpath.patch"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet gcc-canadian-cross-objdump-snippet)))))
|
|
|
|
|
|
|
|
|
|
|
2016-03-16 22:02:49 +00:00
|
|
|
|
;; Note: When changing the default gcc version, update
|
2021-03-12 05:33:26 +00:00
|
|
|
|
;; the gcc-toolchain-* definitions.
|
2021-05-01 20:42:27 +00:00
|
|
|
|
(define-public gcc gcc-10)
|
2015-06-25 15:52:10 +00:00
|
|
|
|
|
2022-02-12 21:28:52 +00:00
|
|
|
|
|
|
|
|
|
;;;
|
|
|
|
|
;;; Historical version.
|
|
|
|
|
;;;
|
|
|
|
|
|
|
|
|
|
(define-public gcc-2.95
|
|
|
|
|
;; Note: 'gcc-core-mesboot0' in commencement.scm provides 2.95 as well, but
|
|
|
|
|
;; with additional tricks to support compilation with TinyCC and Mes-libc.
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc)
|
|
|
|
|
(version "2.95.3")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gcc/gcc-2.95.3/gcc-core-"
|
|
|
|
|
version ".tar.gz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an"))
|
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet
|
|
|
|
|
'(begin
|
|
|
|
|
;; Do not build the bundled Texinfo.
|
|
|
|
|
(delete-file-recursively "texinfo")
|
|
|
|
|
(substitute* "configure"
|
|
|
|
|
(("host_tools=(.*)texinfo" _ before)
|
|
|
|
|
(string-append "host_tools=" before)))))))
|
2022-02-15 08:21:47 +00:00
|
|
|
|
(supported-systems (fold delete %supported-systems
|
|
|
|
|
'("powerpc64le-linux" "riscv64-linux")))
|
2022-02-12 21:28:52 +00:00
|
|
|
|
(native-inputs (list texinfo dejagnu))
|
|
|
|
|
(inputs '())
|
|
|
|
|
(propagated-inputs '())
|
|
|
|
|
(outputs '("out"))
|
|
|
|
|
(arguments
|
2022-02-15 08:21:47 +00:00
|
|
|
|
(let ((matching-system
|
|
|
|
|
(match (%current-system)
|
|
|
|
|
;; This package predates our 64-bit architectures.
|
|
|
|
|
;; Force a 32-bit build targeting a similar architecture.
|
|
|
|
|
("aarch64-linux"
|
|
|
|
|
"armhf-linux")
|
|
|
|
|
("x86_64-linux"
|
|
|
|
|
"i686-linux")
|
|
|
|
|
(_
|
|
|
|
|
(%current-system)))))
|
|
|
|
|
(list #:system matching-system
|
|
|
|
|
#:configure-flags #~'("--disable-werror")
|
|
|
|
|
|
|
|
|
|
#:phases
|
|
|
|
|
#~(modify-phases %standard-phases
|
|
|
|
|
(add-before 'configure 'set-dynamic-linker-file-name
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
;; Tell GCC what the real loader file name is.
|
|
|
|
|
(substitute* '("gcc/config/alpha/linux-elf.h"
|
|
|
|
|
"gcc/config/m68k/linux.h"
|
|
|
|
|
"gcc/config/mips/linux.h"
|
|
|
|
|
"gcc/config/rs6000/linux.h")
|
|
|
|
|
(("/lib/ld\\.so\\.1")
|
|
|
|
|
(search-input-file
|
|
|
|
|
inputs #$(glibc-dynamic-linker matching-system))))
|
|
|
|
|
(substitute* '("gcc/config/alpha/linux-elf.h"
|
|
|
|
|
"gcc/config/arm/linux-elf.h"
|
|
|
|
|
"gcc/config/i386/linux.h"
|
|
|
|
|
"gcc/config/m68k/linux.h"
|
|
|
|
|
"gcc/config/sparc/linux.h"
|
|
|
|
|
"gcc/config/sparc/linux64.h")
|
|
|
|
|
(("/lib(64)?/ld-linux\\.so\\.[12]")
|
|
|
|
|
(search-input-file
|
|
|
|
|
inputs #$(glibc-dynamic-linker matching-system))))))
|
|
|
|
|
(replace 'configure
|
|
|
|
|
(lambda* (#:key outputs build configure-flags
|
|
|
|
|
#:allow-other-keys)
|
|
|
|
|
;; It's an old 'configure' script so it needs some help.
|
|
|
|
|
(setenv "CONFIG_SHELL" (which "sh"))
|
|
|
|
|
(apply invoke "./configure"
|
|
|
|
|
(string-append "--prefix=" #$output)
|
|
|
|
|
(string-append "--build=" build)
|
|
|
|
|
(string-append "--host=" build)
|
|
|
|
|
configure-flags)))
|
|
|
|
|
(add-before 'configure 'remove-bundled-texinfo
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Go ahead despite the many warnings.
|
|
|
|
|
(substitute* '("Makefile.in" "gcc/Makefile.in")
|
|
|
|
|
(("^MAKEINFOFLAGS =.*")
|
|
|
|
|
"MAKEINFOFLAGS = --force\n"))))))))
|
2022-02-12 21:28:52 +00:00
|
|
|
|
(native-search-paths
|
|
|
|
|
;; This package supports nothing but the C language.
|
|
|
|
|
(list (search-path-specification
|
|
|
|
|
(variable "C_INCLUDE_PATH")
|
|
|
|
|
(files '("include")))
|
|
|
|
|
(search-path-specification
|
|
|
|
|
(variable "LIBRARY_PATH")
|
|
|
|
|
(files '("lib")))))))
|
|
|
|
|
|
|
|
|
|
|
2015-06-19 09:34:16 +00:00
|
|
|
|
(define-public (make-libstdc++ gcc)
|
|
|
|
|
"Return a libstdc++ package based on GCC. The primary use case is when
|
|
|
|
|
using compilers other than GCC."
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc)
|
|
|
|
|
(name "libstdc++")
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:out-of-source? #t
|
2021-02-07 00:29:40 +00:00
|
|
|
|
#:phases
|
2021-03-24 13:44:24 +00:00
|
|
|
|
(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"))))
|
2021-02-07 00:29:40 +00:00
|
|
|
|
|
2015-06-19 09:34:16 +00:00
|
|
|
|
#:configure-flags `("--disable-libstdcxx-pch"
|
|
|
|
|
,(string-append "--with-gxx-include-dir="
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/include"))))
|
|
|
|
|
(outputs '("out" "debug"))
|
|
|
|
|
(inputs '())
|
|
|
|
|
(native-inputs '())
|
|
|
|
|
(propagated-inputs '())
|
|
|
|
|
(synopsis "GNU C++ standard library")))
|
|
|
|
|
|
2020-07-24 07:56:25 +00:00
|
|
|
|
(define libstdc++
|
|
|
|
|
;; Libstdc++ matching the default GCC.
|
|
|
|
|
(make-libstdc++ gcc))
|
|
|
|
|
|
|
|
|
|
(define libstdc++-headers
|
|
|
|
|
;; XXX: This package is for internal use to work around
|
|
|
|
|
;; <https://bugs.gnu.org/42392> (see above). The main difference compared
|
|
|
|
|
;; to the libstdc++ headers that come with 'gcc' is that <bits/c++config.h>
|
|
|
|
|
;; is right under include/c++ and not under
|
|
|
|
|
;; include/c++/x86_64-unknown-linux-gnu (aka. GPLUSPLUS_TOOL_INCLUDE_DIR).
|
|
|
|
|
(package
|
|
|
|
|
(inherit libstdc++)
|
|
|
|
|
(name "libstdc++-headers")
|
|
|
|
|
(outputs '("out"))
|
|
|
|
|
(build-system trivial-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:builder (let* ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(libstdc++ (assoc-ref %build-inputs "libstdc++")))
|
|
|
|
|
(mkdir out)
|
|
|
|
|
(mkdir (string-append out "/include"))
|
|
|
|
|
(symlink (string-append libstdc++ "/include")
|
|
|
|
|
(string-append out "/include/c++")))))
|
|
|
|
|
(inputs `(("libstdc++" ,libstdc++)))
|
|
|
|
|
(synopsis "Headers of GNU libstdc++")))
|
|
|
|
|
|
2015-06-19 09:34:16 +00:00
|
|
|
|
(define-public libstdc++-4.9
|
|
|
|
|
(make-libstdc++ gcc-4.9))
|
|
|
|
|
|
2015-06-27 09:47:04 +00:00
|
|
|
|
(define (make-libiberty gcc)
|
|
|
|
|
"Return a libiberty package based on GCC."
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc)
|
|
|
|
|
(name "libiberty")
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:out-of-source? #t
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-before 'configure 'chdir
|
2020-03-18 07:54:57 +00:00
|
|
|
|
(lambda _
|
2020-11-24 23:05:55 +00:00
|
|
|
|
(chdir "libiberty")))
|
2020-03-18 07:54:57 +00:00
|
|
|
|
(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)
|
2020-11-24 23:05:55 +00:00
|
|
|
|
(install-file "../include/libiberty.h" include)))))))
|
2015-06-27 09:47:04 +00:00
|
|
|
|
(inputs '())
|
|
|
|
|
(outputs '("out"))
|
|
|
|
|
(native-inputs '())
|
|
|
|
|
(propagated-inputs '())
|
2020-03-20 17:45:42 +00:00
|
|
|
|
(properties '())
|
2015-06-27 09:47:04 +00:00
|
|
|
|
(synopsis "Collection of subroutines used by various GNU programs")))
|
|
|
|
|
|
|
|
|
|
(define-public libiberty
|
|
|
|
|
(make-libiberty gcc))
|
|
|
|
|
|
2015-12-18 20:38:49 +00:00
|
|
|
|
(define* (custom-gcc gcc name languages
|
|
|
|
|
#:optional
|
|
|
|
|
(search-paths (package-native-search-paths gcc))
|
|
|
|
|
#:key (separate-lib-output? #t))
|
|
|
|
|
"Return a custom version of GCC that supports LANGUAGES. Use SEARCH-PATHS
|
|
|
|
|
as the 'native-search-paths' field."
|
2013-11-01 20:34:24 +00:00
|
|
|
|
(package (inherit gcc)
|
|
|
|
|
(name name)
|
2014-07-31 22:19:22 +00:00
|
|
|
|
(outputs (if separate-lib-output?
|
|
|
|
|
(package-outputs gcc)
|
|
|
|
|
(delete "lib" (package-outputs gcc))))
|
2015-12-18 20:38:49 +00:00
|
|
|
|
(native-search-paths search-paths)
|
2019-05-16 11:42:37 +00:00
|
|
|
|
(properties (alist-delete 'hidden? (package-properties gcc)))
|
2013-11-01 20:34:24 +00:00
|
|
|
|
(arguments
|
2020-04-28 13:03:01 +00:00
|
|
|
|
(substitute-keyword-arguments (package-arguments gcc)
|
|
|
|
|
((#:modules modules %gnu-build-system-modules)
|
|
|
|
|
`(,@modules
|
|
|
|
|
(srfi srfi-1)
|
|
|
|
|
(srfi srfi-26)
|
|
|
|
|
(ice-9 regex)))
|
2013-11-01 20:34:24 +00:00
|
|
|
|
((#:configure-flags flags)
|
|
|
|
|
`(cons (string-append "--enable-languages="
|
|
|
|
|
,(string-join languages ","))
|
|
|
|
|
(remove (cut string-match "--enable-languages.*" <>)
|
2016-03-10 06:05:08 +00:00
|
|
|
|
,flags)))
|
|
|
|
|
((#:phases phases)
|
|
|
|
|
`(modify-phases ,phases
|
|
|
|
|
(add-after 'install 'remove-broken-or-conflicting-files
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
2021-06-13 21:01:25 +00:00
|
|
|
|
(for-each
|
|
|
|
|
delete-file
|
|
|
|
|
(find-files (string-append (assoc-ref outputs "out") "/bin")
|
|
|
|
|
".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
|
2013-11-01 20:34:24 +00:00
|
|
|
|
|
2015-12-18 20:38:49 +00:00
|
|
|
|
(define %generic-search-paths
|
|
|
|
|
;; This is the language-neutral search path for GCC. Entries in $CPATH are
|
|
|
|
|
;; not considered "system headers", which means GCC can raise warnings for
|
|
|
|
|
;; issues in those headers. 'CPATH' is the only one that works for
|
|
|
|
|
;; front-ends not in the C family.
|
|
|
|
|
(list (search-path-specification
|
|
|
|
|
(variable "CPATH")
|
|
|
|
|
(files '("include")))
|
|
|
|
|
(search-path-specification
|
|
|
|
|
(variable "LIBRARY_PATH")
|
|
|
|
|
(files '("lib" "lib64")))))
|
|
|
|
|
|
2020-06-29 20:43:22 +00:00
|
|
|
|
(define-public gfortran
|
2019-12-16 11:18:52 +00:00
|
|
|
|
(hidden-package
|
2021-05-16 08:37:49 +00:00
|
|
|
|
(custom-gcc gcc
|
2020-07-24 07:56:25 +00:00
|
|
|
|
"gfortran" '("fortran")
|
2019-12-16 11:18:52 +00:00
|
|
|
|
%generic-search-paths)))
|
2018-09-02 14:27:56 +00:00
|
|
|
|
|
2021-12-08 22:39:00 +00:00
|
|
|
|
(define-public gfortran-7
|
|
|
|
|
(hidden-package
|
|
|
|
|
(custom-gcc gcc-7
|
|
|
|
|
"gfortran" '("fortran")
|
|
|
|
|
%generic-search-paths)))
|
|
|
|
|
|
2020-07-16 14:33:02 +00:00
|
|
|
|
(define-public gdc-10
|
|
|
|
|
(hidden-package
|
|
|
|
|
(custom-gcc gcc-10 "gdc" '("d")
|
|
|
|
|
%generic-search-paths)))
|
|
|
|
|
|
2021-04-27 14:08:44 +00:00
|
|
|
|
(define-public gdc-11
|
|
|
|
|
(hidden-package
|
|
|
|
|
(custom-gcc gcc-11 "gdc" '("d")
|
|
|
|
|
%generic-search-paths)))
|
|
|
|
|
|
2020-03-12 02:48:59 +00:00
|
|
|
|
(define-public libgccjit
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc-9)
|
|
|
|
|
(name "libgccjit")
|
|
|
|
|
(outputs (delete "lib" (package-outputs gcc)))
|
|
|
|
|
(properties (alist-delete 'hidden? (package-properties gcc)))
|
|
|
|
|
(arguments
|
|
|
|
|
(substitute-keyword-arguments `(#:modules ((guix build gnu-build-system)
|
|
|
|
|
(guix build utils)
|
|
|
|
|
(ice-9 regex)
|
|
|
|
|
(srfi srfi-1)
|
|
|
|
|
(srfi srfi-26))
|
|
|
|
|
,@(package-arguments gcc))
|
|
|
|
|
((#:configure-flags flags)
|
|
|
|
|
`(append `("--enable-host-shared"
|
|
|
|
|
,(string-append "--enable-languages=jit"))
|
|
|
|
|
(remove (cut string-match "--enable-languages.*" <>)
|
|
|
|
|
,flags)))
|
|
|
|
|
((#:phases phases)
|
|
|
|
|
`(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")
|
2020-11-24 23:05:55 +00:00
|
|
|
|
".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
|
2020-09-11 16:07:58 +00:00
|
|
|
|
(synopsis "GCC library generating machine code on-the-fly at runtime")
|
|
|
|
|
(description
|
|
|
|
|
"This package is part of the GNU Compiler Collection and provides an
|
|
|
|
|
embeddable library for generating machine code on-the-fly at runtime. This
|
|
|
|
|
shared library can then be dynamically-linked into bytecode interpreters and
|
|
|
|
|
other such programs that want to generate machine code on-the-fly at run-time.
|
|
|
|
|
It can also be used for ahead-of-time code generation for building standalone
|
|
|
|
|
compilers. The just-in-time (jit) part of the name is now something of a
|
|
|
|
|
misnomer.")))
|
2020-03-12 02:48:59 +00:00
|
|
|
|
|
2021-06-14 15:48:24 +00:00
|
|
|
|
(define (make-gccgo gcc)
|
|
|
|
|
"Return a gccgo package based on GCC."
|
2022-02-22 11:00:59 +00:00
|
|
|
|
(let ((gccgo (custom-gcc gcc "gccgo" '("go") %generic-search-paths)))
|
2021-06-14 15:48:24 +00:00
|
|
|
|
(package
|
|
|
|
|
(inherit gccgo)
|
|
|
|
|
(synopsis "Go frontend to GCC")
|
|
|
|
|
(description
|
|
|
|
|
"This package is part of the GNU Compiler Collection and
|
|
|
|
|
provides the GNU compiler for the Go programming language.")
|
|
|
|
|
(arguments
|
|
|
|
|
(substitute-keyword-arguments (package-arguments gccgo)
|
|
|
|
|
((#:phases phases)
|
|
|
|
|
`(modify-phases ,phases
|
|
|
|
|
(add-after 'install 'wrap-go-with-tool-path
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(exedir (string-append out "/libexec/gcc"))
|
|
|
|
|
(tooldir (dirname (car (find-files exedir "^cgo$")))))
|
|
|
|
|
(wrap-program (string-append out "/bin/go")
|
|
|
|
|
`("GCCGOTOOLDIR" =
|
2021-07-06 07:30:32 +00:00
|
|
|
|
(,(string-append "${GCCGOTOOLDIR:-" tooldir "}")))
|
2021-06-14 15:48:24 +00:00
|
|
|
|
`("GOROOT" =
|
2021-07-06 07:30:32 +00:00
|
|
|
|
(,(string-append "${GOROOT:-" out "}")))))))
|
2021-06-14 15:48:24 +00:00
|
|
|
|
(add-before 'configure 'fix-gotools-runpath
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "gotools/Makefile.in"
|
|
|
|
|
(("AM_LDFLAGS =" all)
|
|
|
|
|
(string-append all " -Wl,-rpath=$(libdir) ")))))
|
|
|
|
|
(add-before 'configure 'remove-tool-reference-from-libgo
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "libgo/Makefile.in"
|
|
|
|
|
(("(GccgoToolDir = \\\")[^\\\"]+" _ start)
|
|
|
|
|
(string-append start "/nonexistent"))
|
|
|
|
|
(("(DefaultGoroot = \\\")[^\\\"]+" _ start)
|
|
|
|
|
(string-append start "/nonexistent"))
|
|
|
|
|
(("(defaultGOROOTValue.*?return `)[^`]+" _ start)
|
|
|
|
|
(string-append start "/nonexistent"))))))))))))
|
2020-03-12 02:48:59 +00:00
|
|
|
|
|
2015-12-28 04:53:01 +00:00
|
|
|
|
(define-public gccgo-4.9
|
2020-09-11 16:07:59 +00:00
|
|
|
|
(custom-gcc (package
|
|
|
|
|
(inherit gcc-4.9)
|
|
|
|
|
(synopsis "Go frontend to GCC")
|
|
|
|
|
(description
|
|
|
|
|
"This package is part of the GNU Compiler Collection and
|
|
|
|
|
provides the GNU compiler for the Go programming language."))
|
|
|
|
|
"gccgo" '("go")
|
2015-12-18 20:38:49 +00:00
|
|
|
|
%generic-search-paths
|
2014-07-31 22:19:22 +00:00
|
|
|
|
;; Suppress the separate "lib" output, because otherwise the
|
|
|
|
|
;; "lib" and "out" outputs would refer to each other, creating
|
|
|
|
|
;; a cyclic dependency. <http://debbugs.gnu.org/18101>
|
|
|
|
|
#:separate-lib-output? #f))
|
2013-11-01 20:34:24 +00:00
|
|
|
|
|
2021-06-14 15:48:24 +00:00
|
|
|
|
(define-public gccgo-10
|
|
|
|
|
(make-gccgo gcc-10))
|
|
|
|
|
|
2022-02-22 10:59:31 +00:00
|
|
|
|
(define-public gccgo-11
|
|
|
|
|
(make-gccgo gcc-11))
|
|
|
|
|
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
(define %objc-search-paths
|
|
|
|
|
(list (search-path-specification
|
|
|
|
|
(variable "OBJC_INCLUDE_PATH")
|
|
|
|
|
(files '("include")))
|
|
|
|
|
(search-path-specification
|
|
|
|
|
(variable "LIBRARY_PATH")
|
|
|
|
|
(files '("lib" "lib64")))))
|
|
|
|
|
|
2013-11-01 20:34:24 +00:00
|
|
|
|
(define-public gcc-objc-4.8
|
2015-12-18 20:38:49 +00:00
|
|
|
|
(custom-gcc gcc-4.8 "gcc-objc" '("objc")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc-search-paths))
|
2013-11-01 20:34:24 +00:00
|
|
|
|
|
2016-05-16 18:10:55 +00:00
|
|
|
|
(define-public gcc-objc-4.9
|
|
|
|
|
(custom-gcc gcc-4.9 "gcc-objc" '("objc")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc-search-paths))
|
2016-05-16 18:10:55 +00:00
|
|
|
|
|
2017-09-14 08:09:05 +00:00
|
|
|
|
(define-public gcc-objc-5
|
|
|
|
|
(custom-gcc gcc-5 "gcc-objc" '("objc")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc-search-paths))
|
2017-09-14 08:09:05 +00:00
|
|
|
|
|
2017-09-14 08:11:27 +00:00
|
|
|
|
(define-public gcc-objc-6
|
|
|
|
|
(custom-gcc gcc-6 "gcc-objc" '("objc")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc-search-paths))
|
2017-09-14 08:13:20 +00:00
|
|
|
|
|
|
|
|
|
(define-public gcc-objc-7
|
|
|
|
|
(custom-gcc gcc-7 "gcc-objc" '("objc")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc-search-paths))
|
2017-09-14 08:11:27 +00:00
|
|
|
|
|
2018-09-02 14:27:56 +00:00
|
|
|
|
(define-public gcc-objc-8
|
|
|
|
|
(custom-gcc gcc-8 "gcc-objc" '("objc")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc-search-paths))
|
|
|
|
|
|
|
|
|
|
(define-public gcc-objc-9
|
|
|
|
|
(custom-gcc gcc-9 "gcc-objc" '("objc")
|
|
|
|
|
%objc-search-paths))
|
|
|
|
|
|
|
|
|
|
(define-public gcc-objc-10
|
|
|
|
|
(custom-gcc gcc-10 "gcc-objc" '("objc")
|
|
|
|
|
%objc-search-paths))
|
2018-09-02 14:27:56 +00:00
|
|
|
|
|
2022-06-26 13:58:03 +00:00
|
|
|
|
(define-public gcc-objc-11
|
|
|
|
|
(custom-gcc gcc-11 "gcc-objc" '("objc")
|
|
|
|
|
%objc-search-paths))
|
|
|
|
|
|
|
|
|
|
(define-public gcc-objc-12
|
|
|
|
|
(custom-gcc gcc-12 "gcc-objc" '("objc")
|
|
|
|
|
%objc-search-paths))
|
|
|
|
|
|
2021-05-01 20:42:27 +00:00
|
|
|
|
(define-public gcc-objc gcc-objc-10)
|
2016-05-16 18:11:19 +00:00
|
|
|
|
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
(define %objc++-search-paths
|
|
|
|
|
(list (search-path-specification
|
|
|
|
|
(variable "OBJCPLUS_INCLUDE_PATH")
|
|
|
|
|
(files '("include")))
|
|
|
|
|
(search-path-specification
|
|
|
|
|
(variable "LIBRARY_PATH")
|
|
|
|
|
(files '("lib" "lib64")))))
|
|
|
|
|
|
2013-11-01 20:34:24 +00:00
|
|
|
|
(define-public gcc-objc++-4.8
|
2015-12-18 20:38:49 +00:00
|
|
|
|
(custom-gcc gcc-4.8 "gcc-objc++" '("obj-c++")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc++-search-paths))
|
2013-11-01 20:34:24 +00:00
|
|
|
|
|
2016-05-16 18:11:42 +00:00
|
|
|
|
(define-public gcc-objc++-4.9
|
|
|
|
|
(custom-gcc gcc-4.9 "gcc-objc++" '("obj-c++")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc++-search-paths))
|
2013-11-01 20:34:24 +00:00
|
|
|
|
|
2017-09-14 08:10:11 +00:00
|
|
|
|
(define-public gcc-objc++-5
|
|
|
|
|
(custom-gcc gcc-5 "gcc-objc++" '("obj-c++")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc++-search-paths))
|
2017-09-14 08:10:11 +00:00
|
|
|
|
|
2017-09-14 08:12:15 +00:00
|
|
|
|
(define-public gcc-objc++-6
|
|
|
|
|
(custom-gcc gcc-6 "gcc-objc++" '("obj-c++")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc++-search-paths))
|
2017-09-14 08:12:15 +00:00
|
|
|
|
|
2017-09-14 08:14:36 +00:00
|
|
|
|
(define-public gcc-objc++-7
|
|
|
|
|
(custom-gcc gcc-7 "gcc-objc++" '("obj-c++")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc++-search-paths))
|
2017-09-14 08:14:36 +00:00
|
|
|
|
|
2018-09-02 14:27:56 +00:00
|
|
|
|
(define-public gcc-objc++-8
|
|
|
|
|
(custom-gcc gcc-8 "gcc-objc++" '("obj-c++")
|
gnu: Add gcc-{objc,objc++}-{9,10}.
* gnu/packages/gcc.scm (%objc-search-paths, %objc++-search-paths): New variables.
(gcc-objc-4.8, gcc-objc-4.9, gcc-objc-5, gcc-objc-6, gcc-objc-7,
gcc-objc-8, gcc-objc++-4.8, gcc-objc++-4.9, gcc-objc++-5, gcc-objc++-6,
gcc-objc++-7, gcc-objc++-8): Don't duplicate the search path list.
(gcc-objc-9, gcc-objc-10, gcc-objc++-9, gcc-objc++-10): New variables.
2020-06-30 11:06:09 +00:00
|
|
|
|
%objc++-search-paths))
|
|
|
|
|
|
|
|
|
|
(define-public gcc-objc++-9
|
|
|
|
|
(custom-gcc gcc-9 "gcc-objc++" '("obj-c++")
|
|
|
|
|
%objc++-search-paths))
|
|
|
|
|
|
|
|
|
|
(define-public gcc-objc++-10
|
|
|
|
|
(custom-gcc gcc-10 "gcc-objc++" '("obj-c++")
|
|
|
|
|
%objc++-search-paths))
|
2018-09-02 14:27:56 +00:00
|
|
|
|
|
2022-06-26 13:58:03 +00:00
|
|
|
|
(define-public gcc-objc++-11
|
|
|
|
|
(custom-gcc gcc-11 "gcc-objc++" '("obj-c++")
|
|
|
|
|
%objc++-search-paths))
|
|
|
|
|
|
|
|
|
|
(define-public gcc-objc++-12
|
|
|
|
|
(custom-gcc gcc-12 "gcc-objc++" '("obj-c++")
|
|
|
|
|
%objc++-search-paths))
|
|
|
|
|
|
2021-05-01 20:42:27 +00:00
|
|
|
|
(define-public gcc-objc++ gcc-objc++-10)
|
2016-05-16 18:12:08 +00:00
|
|
|
|
|
2015-07-12 21:09:44 +00:00
|
|
|
|
(define (make-libstdc++-doc gcc)
|
|
|
|
|
"Return a package with the libstdc++ documentation for GCC."
|
|
|
|
|
(package
|
|
|
|
|
(inherit gcc)
|
|
|
|
|
(name "libstdc++-doc")
|
|
|
|
|
(version (package-version gcc))
|
|
|
|
|
(synopsis "GNU libstdc++ documentation")
|
|
|
|
|
(outputs '("out"))
|
2021-12-13 16:18:24 +00:00
|
|
|
|
(native-inputs (list doxygen
|
|
|
|
|
texinfo
|
|
|
|
|
libxml2
|
|
|
|
|
libxslt
|
|
|
|
|
docbook-xml
|
|
|
|
|
docbook-xsl
|
|
|
|
|
graphviz)) ;for 'dot', invoked by 'doxygen'
|
2015-07-12 21:09:44 +00:00
|
|
|
|
(inputs '())
|
|
|
|
|
(propagated-inputs '())
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:out-of-source? #t
|
|
|
|
|
#:tests? #f ;it's just documentation
|
|
|
|
|
#:phases (modify-phases %standard-phases
|
|
|
|
|
(add-before 'configure 'chdir
|
|
|
|
|
(lambda _
|
2020-11-24 23:05:55 +00:00
|
|
|
|
(chdir "libstdc++-v3")))
|
2015-07-12 21:09:44 +00:00
|
|
|
|
(add-before 'configure 'set-xsl-directory
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
(let ((docbook (assoc-ref inputs "docbook-xsl")))
|
|
|
|
|
(substitute* (find-files "doc"
|
|
|
|
|
"^Makefile\\.in$")
|
|
|
|
|
(("@XSL_STYLE_DIR@")
|
|
|
|
|
(string-append
|
|
|
|
|
docbook "/xml/xsl/"
|
2020-11-24 23:05:55 +00:00
|
|
|
|
(strip-store-file-name docbook)))))))
|
2015-07-12 21:09:44 +00:00
|
|
|
|
(replace 'build
|
|
|
|
|
(lambda _
|
|
|
|
|
;; XXX: There's also a 'doc-info' target, but it
|
|
|
|
|
;; relies on docbook2X, which itself relies on
|
|
|
|
|
;; DocBook 4.1.2, which is not really usable
|
|
|
|
|
;; (lacks a catalog.xml.)
|
2018-03-16 05:48:45 +00:00
|
|
|
|
(invoke "make"
|
|
|
|
|
"doc-html"
|
|
|
|
|
"doc-man")))
|
2015-07-12 21:09:44 +00:00
|
|
|
|
(replace 'install
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let ((out (assoc-ref outputs "out")))
|
2018-03-16 05:48:45 +00:00
|
|
|
|
(invoke "make"
|
|
|
|
|
"doc-install-html"
|
2019-05-21 13:42:54 +00:00
|
|
|
|
"doc-install-man")))))))
|
|
|
|
|
(properties (alist-delete 'hidden? (package-properties gcc)))))
|
2015-07-12 21:09:44 +00:00
|
|
|
|
|
2015-07-20 01:11:56 +00:00
|
|
|
|
(define-public libstdc++-doc-5
|
|
|
|
|
(make-libstdc++-doc gcc-5))
|
2015-07-12 21:09:44 +00:00
|
|
|
|
|
2019-05-21 13:47:48 +00:00
|
|
|
|
(define-public libstdc++-doc-9
|
|
|
|
|
(make-libstdc++-doc gcc-9))
|
|
|
|
|
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(define-public isl
|
|
|
|
|
(package
|
|
|
|
|
(name "isl")
|
2020-12-15 21:42:15 +00:00
|
|
|
|
(version "0.23")
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
2022-03-19 21:40:25 +00:00
|
|
|
|
;; Used to be at isl.gforge.inria.fr.
|
|
|
|
|
(uri (list (string-append "mirror://sourceforge/libisl/isl-"
|
|
|
|
|
version ".tar.bz2")
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(string-append %gcc-infrastructure
|
2022-03-19 21:40:25 +00:00
|
|
|
|
"isl-" version ".tar.bz2")))
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2020-12-15 21:42:15 +00:00
|
|
|
|
"0k91zck10zxs9sk3yrbb92y1j3w981w3fbwkfwd7kl779b0j52f5"))))
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(build-system gnu-build-system)
|
2020-02-06 18:41:36 +00:00
|
|
|
|
(outputs '("out" "static"))
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases (modify-phases %standard-phases
|
|
|
|
|
(add-after 'install 'move-static-library
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(static (assoc-ref outputs "static"))
|
|
|
|
|
(source (string-append out "/lib/libisl.a"))
|
|
|
|
|
(target (string-append static "/lib/libisl.a")))
|
|
|
|
|
(mkdir-p (dirname target))
|
|
|
|
|
(link source target)
|
|
|
|
|
(delete-file source)
|
|
|
|
|
|
|
|
|
|
;; Remove reference to libisl.a from the .la file so
|
|
|
|
|
;; libtool looks for it in the usual locations.
|
|
|
|
|
(substitute* (string-append out "/lib/libisl.la")
|
|
|
|
|
(("^old_library=.*")
|
2020-11-24 23:05:55 +00:00
|
|
|
|
"old_library=''\n"))))))))
|
2021-12-13 16:18:24 +00:00
|
|
|
|
(inputs (list gmp))
|
2022-03-19 21:40:25 +00:00
|
|
|
|
(home-page "https://libisl.sourceforge.io/") ;https://repo.or.cz/w/isl.git
|
2022-03-19 21:44:31 +00:00
|
|
|
|
(properties `((release-monitoring-url . ,home-page)))
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(synopsis
|
2014-09-13 13:50:30 +00:00
|
|
|
|
"Manipulating sets and relations of integer points \
|
|
|
|
|
bounded by linear constraints")
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(description
|
|
|
|
|
"isl is a library for manipulating sets and relations of integer points
|
gnu: Some cleanup based on lint checkers.
* gnu/packages/admin.scm, gnu/packages/aidc.scm, gnu/packages/algebra.scm,
gnu/packages/apr.scm, gnu/packages/avahi.scm, gnu/packages/backup.scm,
gnu/packages/base.scm, gnu/packages/calcurse.scm, gnu/packages/cdrom.scm,
gnu/packages/check.scm, gnu/packages/compression.scm, gnu/packages/cook.scm,
gnu/packages/crypto.scm, gnu/packages/cryptsetup.scm, gnu/packages/curl.scm,
gnu/packages/cyrus-sasl.scm, gnu/packages/databases.scm,
gnu/packages/doxygen.scm, gnu/packages/dwm.scm, gnu/packages/elf.scm,
gnu/packages/emacs.scm, gnu/packages/feh.scm, gnu/packages/file.scm,
gnu/packages/fish.scm, gnu/packages/flex.scm, gnu/packages/fltk.scm,
gnu/packages/fontutils.scm, gnu/packages/games.scm, gnu/packages/gcal.scm,
gnu/packages/gcc.scm, gnu/packages/geeqie.scm, gnu/packages/ghostscript.scm,
gnu/packages/gimp.scm, gnu/packages/gl.scm, gnu/packages/glib.scm,
gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm,
gnu/packages/gperf.scm, gnu/packages/grub.scm, gnu/packages/gsasl.scm,
gnu/packages/gtk.scm, gnu/packages/guile-wm.scm, gnu/packages/guile.scm,
gnu/packages/hurd.scm, gnu/packages/icu4c.scm, gnu/packages/image.scm,
gnu/packages/imagemagick.scm, gnu/packages/irssi.scm, gnu/packages/kde.scm,
gnu/packages/libdaemon.scm, gnu/packages/libevent.scm,
gnu/packages/libidn.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm,
gnu/packages/lout.scm, gnu/packages/lsh.scm, gnu/packages/lsof.scm,
gnu/packages/lua.scm, gnu/packages/maths.scm, gnu/packages/mcrypt.scm,
gnu/packages/mp3.scm, gnu/packages/netpbm.scm, gnu/packages/noweb.scm,
gnu/packages/ocaml.scm, gnu/packages/openssl.scm, gnu/packages/pcre.scm,
gnu/packages/pdf.scm, gnu/packages/pkg-config.scm,
gnu/packages/pretty-print.scm, gnu/packages/python.scm, gnu/packages/qt.scm,
gnu/packages/rsync.scm, gnu/packages/scheme.scm, gnu/packages/scrot.scm,
gnu/packages/sdl.scm, gnu/packages/skribilo.scm, gnu/packages/ssh.scm,
gnu/packages/stalonetray.scm, gnu/packages/tcl.scm, gnu/packages/tcsh.scm,
gnu/packages/telephony.scm, gnu/packages/texlive.scm, gnu/packages/tor.scm,
gnu/packages/valgrind.scm, gnu/packages/version-control.scm,
gnu/packages/vim.scm, gnu/packages/vpn.scm, gnu/packages/w3m.scm,
gnu/packages/web.scm, gnu/packages/wordnet.scm, gnu/packages/xiph.scm,
gnu/packages/xml.scm, gnu/packages/xorg.scm, gnu/packages/zile.scm,
gnu/packages/zip.scm, gnu/packages/zsh.scm [synopsis, description]: Adjust
according to lint checkers.
* gnu/packages/fltk.scm (fltk)[source]: Wrap long line in uri.
* /gnu/packages/xiph.scm (libogg, libtheora, vorbis-tools)[source]: Same.
2014-10-24 04:46:59 +00:00
|
|
|
|
bounded by linear constraints. Supported operations on sets include
|
2013-03-27 14:37:27 +00:00
|
|
|
|
intersection, union, set difference, emptiness check, convex hull, (integer)
|
|
|
|
|
affine hull, integer projection, computing the lexicographic minimum using
|
|
|
|
|
parametric integer programming, coalescing and parametric vertex
|
gnu: Some cleanup based on lint checkers.
* gnu/packages/admin.scm, gnu/packages/aidc.scm, gnu/packages/algebra.scm,
gnu/packages/apr.scm, gnu/packages/avahi.scm, gnu/packages/backup.scm,
gnu/packages/base.scm, gnu/packages/calcurse.scm, gnu/packages/cdrom.scm,
gnu/packages/check.scm, gnu/packages/compression.scm, gnu/packages/cook.scm,
gnu/packages/crypto.scm, gnu/packages/cryptsetup.scm, gnu/packages/curl.scm,
gnu/packages/cyrus-sasl.scm, gnu/packages/databases.scm,
gnu/packages/doxygen.scm, gnu/packages/dwm.scm, gnu/packages/elf.scm,
gnu/packages/emacs.scm, gnu/packages/feh.scm, gnu/packages/file.scm,
gnu/packages/fish.scm, gnu/packages/flex.scm, gnu/packages/fltk.scm,
gnu/packages/fontutils.scm, gnu/packages/games.scm, gnu/packages/gcal.scm,
gnu/packages/gcc.scm, gnu/packages/geeqie.scm, gnu/packages/ghostscript.scm,
gnu/packages/gimp.scm, gnu/packages/gl.scm, gnu/packages/glib.scm,
gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm,
gnu/packages/gperf.scm, gnu/packages/grub.scm, gnu/packages/gsasl.scm,
gnu/packages/gtk.scm, gnu/packages/guile-wm.scm, gnu/packages/guile.scm,
gnu/packages/hurd.scm, gnu/packages/icu4c.scm, gnu/packages/image.scm,
gnu/packages/imagemagick.scm, gnu/packages/irssi.scm, gnu/packages/kde.scm,
gnu/packages/libdaemon.scm, gnu/packages/libevent.scm,
gnu/packages/libidn.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm,
gnu/packages/lout.scm, gnu/packages/lsh.scm, gnu/packages/lsof.scm,
gnu/packages/lua.scm, gnu/packages/maths.scm, gnu/packages/mcrypt.scm,
gnu/packages/mp3.scm, gnu/packages/netpbm.scm, gnu/packages/noweb.scm,
gnu/packages/ocaml.scm, gnu/packages/openssl.scm, gnu/packages/pcre.scm,
gnu/packages/pdf.scm, gnu/packages/pkg-config.scm,
gnu/packages/pretty-print.scm, gnu/packages/python.scm, gnu/packages/qt.scm,
gnu/packages/rsync.scm, gnu/packages/scheme.scm, gnu/packages/scrot.scm,
gnu/packages/sdl.scm, gnu/packages/skribilo.scm, gnu/packages/ssh.scm,
gnu/packages/stalonetray.scm, gnu/packages/tcl.scm, gnu/packages/tcsh.scm,
gnu/packages/telephony.scm, gnu/packages/texlive.scm, gnu/packages/tor.scm,
gnu/packages/valgrind.scm, gnu/packages/version-control.scm,
gnu/packages/vim.scm, gnu/packages/vpn.scm, gnu/packages/w3m.scm,
gnu/packages/web.scm, gnu/packages/wordnet.scm, gnu/packages/xiph.scm,
gnu/packages/xml.scm, gnu/packages/xorg.scm, gnu/packages/zile.scm,
gnu/packages/zip.scm, gnu/packages/zsh.scm [synopsis, description]: Adjust
according to lint checkers.
* gnu/packages/fltk.scm (fltk)[source]: Wrap long line in uri.
* /gnu/packages/xiph.scm (libogg, libtheora, vorbis-tools)[source]: Same.
2014-10-24 04:46:59 +00:00
|
|
|
|
enumeration. It also includes an ILP solver based on generalized basis
|
2013-03-27 14:37:27 +00:00
|
|
|
|
reduction, transitive closures on maps (which may encode infinite graphs),
|
|
|
|
|
dependence analysis and bounds on piecewise step-polynomials.")
|
|
|
|
|
(license lgpl2.1+)))
|
|
|
|
|
|
2018-08-10 15:00:27 +00:00
|
|
|
|
(define-public isl-0.18
|
|
|
|
|
(package
|
|
|
|
|
(inherit isl)
|
|
|
|
|
(version "0.18")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
2022-03-19 21:40:25 +00:00
|
|
|
|
(uri (list (string-append "mirror://sourceforge/libisl/isl-"
|
2018-08-10 15:00:27 +00:00
|
|
|
|
version ".tar.bz2")
|
|
|
|
|
(string-append %gcc-infrastructure
|
2019-06-20 12:39:58 +00:00
|
|
|
|
"isl-" version ".tar.bz2")))
|
2018-08-10 15:00:27 +00:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"06ybml6llhi4i56q90jnimbcgk1lpcdwhy9nxdxra2hxz3bhz2vb"))))))
|
|
|
|
|
|
2017-09-12 18:12:46 +00:00
|
|
|
|
(define-public isl-0.11
|
|
|
|
|
(package
|
|
|
|
|
(inherit isl)
|
|
|
|
|
(name "isl")
|
|
|
|
|
(version "0.11.1")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
2022-03-19 21:40:25 +00:00
|
|
|
|
(uri (list (string-append "mirror://sourceforge/libisl/isl-"
|
|
|
|
|
version ".tar.bz2")
|
2017-09-12 18:12:46 +00:00
|
|
|
|
(string-append %gcc-infrastructure
|
2022-03-19 21:40:25 +00:00
|
|
|
|
"isl-" version ".tar.bz2")))
|
2017-09-12 18:12:46 +00:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"13d9cqa5rzhbjq0xf0b2dyxag7pqa72xj9dhsa03m8ccr1a4npq9"))
|
|
|
|
|
(patches (search-patches "isl-0.11.1-aarch64-support.patch"))))))
|
|
|
|
|
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(define-public cloog
|
|
|
|
|
(package
|
|
|
|
|
(name "cloog")
|
|
|
|
|
(version "0.18.0")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (list (string-append
|
|
|
|
|
"http://www.bastoul.net/cloog/pages/download/count.php3?url=cloog-"
|
|
|
|
|
version
|
|
|
|
|
".tar.gz")
|
|
|
|
|
(string-append %gcc-infrastructure
|
|
|
|
|
name "-" version ".tar.gz")))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"0a12rwfwp22zd0nlld0xyql11cj390rrq1prw35yjsw8wzfshjhw"))
|
|
|
|
|
(file-name (string-append name "-" version ".tar.gz"))))
|
|
|
|
|
(build-system gnu-build-system)
|
2021-12-13 16:18:24 +00:00
|
|
|
|
(inputs (list gmp isl-0.11))
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(arguments '(#:configure-flags '("--with-isl=system")))
|
|
|
|
|
(home-page "http://www.cloog.org/")
|
2014-09-13 13:50:30 +00:00
|
|
|
|
(synopsis "Library to generate code for scanning Z-polyhedra")
|
2013-03-27 14:37:27 +00:00
|
|
|
|
(description
|
|
|
|
|
"CLooG is a free software library to generate code for scanning
|
|
|
|
|
Z-polyhedra. That is, it finds a code (e.g., in C, FORTRAN...) that
|
|
|
|
|
reaches each integral point of one or more parameterized polyhedra.
|
|
|
|
|
CLooG has been originally written to solve the code generation problem
|
|
|
|
|
for optimizing compilers based on the polytope model. Nevertheless it
|
|
|
|
|
is used now in various area e.g., to build control automata for
|
|
|
|
|
high-level synthesis or to find the best polynomial approximation of a
|
|
|
|
|
function. CLooG may help in any situation where scanning polyhedra
|
|
|
|
|
matters. While the user has full control on generated code quality,
|
|
|
|
|
CLooG is designed to avoid control overhead and to produce a very
|
|
|
|
|
effective code.")
|
|
|
|
|
(license gpl2+)))
|
2013-03-27 14:47:48 +00:00
|
|
|
|
|
2015-07-19 20:27:37 +00:00
|
|
|
|
(define-public gnu-c-manual
|
|
|
|
|
(package
|
|
|
|
|
(name "gnu-c-manual")
|
2016-10-04 14:02:36 +00:00
|
|
|
|
(version "0.2.5")
|
2015-07-19 20:27:37 +00:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "mirror://gnu/gnu-c-manual/gnu-c-manual-"
|
|
|
|
|
version ".tar.gz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2016-10-04 14:02:36 +00:00
|
|
|
|
"1sfsj9256w18qzylgag2h5h377aq8in8929svblfnj9svfriqcys"))))
|
2015-07-19 20:27:37 +00:00
|
|
|
|
(build-system gnu-build-system)
|
2021-12-13 16:18:24 +00:00
|
|
|
|
(native-inputs (list texinfo))
|
2015-07-19 20:27:37 +00:00
|
|
|
|
(arguments
|
|
|
|
|
'(#:phases (modify-phases %standard-phases
|
|
|
|
|
(delete 'configure)
|
|
|
|
|
(delete 'check)
|
|
|
|
|
(replace 'build
|
|
|
|
|
(lambda _
|
2018-03-16 05:55:07 +00:00
|
|
|
|
(invoke "make"
|
|
|
|
|
"gnu-c-manual.info"
|
|
|
|
|
"gnu-c-manual.html")))
|
2015-07-19 20:27:37 +00:00
|
|
|
|
(replace 'install
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(info (string-append out "/share/info"))
|
|
|
|
|
(html (string-append
|
|
|
|
|
out "/share/doc/gnu-c-manual")))
|
|
|
|
|
(mkdir-p info)
|
|
|
|
|
(mkdir-p html)
|
|
|
|
|
|
|
|
|
|
(for-each (lambda (file)
|
|
|
|
|
(copy-file file
|
|
|
|
|
(string-append info "/"
|
|
|
|
|
file)))
|
|
|
|
|
(find-files "." "\\.info(-[0-9])?$"))
|
|
|
|
|
(for-each (lambda (file)
|
|
|
|
|
(copy-file file
|
|
|
|
|
(string-append html "/"
|
|
|
|
|
file)))
|
2020-11-24 23:05:55 +00:00
|
|
|
|
(find-files "." "\\.html$"))))))))
|
2015-07-19 20:27:37 +00:00
|
|
|
|
(synopsis "Reference manual for the C programming language")
|
|
|
|
|
(description
|
|
|
|
|
"This is a reference manual for the C programming language, as
|
|
|
|
|
implemented by the GNU C Compiler (gcc). As a reference, it is not intended
|
|
|
|
|
to be a tutorial of the language. Rather, it outlines all of the constructs
|
|
|
|
|
of the language. Library functions are not included.")
|
2017-03-29 22:48:16 +00:00
|
|
|
|
(home-page "https://www.gnu.org/software/gnu-c-manual/")
|
2015-07-19 20:27:37 +00:00
|
|
|
|
(license fdl1.3+)))
|