~whereiseveryone/guixrus

guixrus/guixrus/packages/gcc.scm -rw-r--r-- 2.8 KiB
3711a437jgart add emacs-flycheck-cython 5 minutes ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
;;; GNU Guix --- Functional package management for GNU
;;;
;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
;;;
;;; This file is not 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 (guixrus packages gcc)
  #:use-module (gnu packages gcc)
  #:use-module (guix packages)
  #:use-module (guix utils)
  #:use-module (guix memoization)
  #:use-module (srfi srfi-1))

(define-public libgccjit-for-gcc
  (mlambda (gcc)
    (package
      (inherit gcc)
      (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 '("--disable-bootstrap"
                     "--disable-libatomic"
                     "--disable-libgomp"
                     "--disable-libquadmath"
                     "--disable-libssp"
                     "--enable-host-shared"
                     "--enable-checking=release"
                     "--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")
                                       ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))
                 #t))))))
      (inputs
       (alist-delete "libstdc++"
                     (package-inputs gcc)))
      (native-inputs
       `(("gcc" ,gcc)
         ,@(package-native-inputs gcc))))))

(define-public libgccjit-10
  (libgccjit-for-gcc gcc-10))

(define-public libgccjit-11
  (libgccjit-for-gcc gcc-11))