gnu: sbcl-cl-cffi-gtk: Update to 20200417.
[jackhill/guix/guix.git] / gnu / packages / bdw-gc.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
69961ac3 2;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2020 Ludovic Courtès <ludo@gnu.org>
8174e9b7 3;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
58f58cb4 4;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
ed788c31 5;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
b0f5ec4f 6;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
c44899a2 7;;;
233e7676 8;;; This file is part of GNU Guix.
c44899a2 9;;;
233e7676 10;;; GNU Guix is free software; you can redistribute it and/or modify it
c44899a2
LC
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
233e7676 15;;; GNU Guix is distributed in the hope that it will be useful, but
c44899a2
LC
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
233e7676 21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
c44899a2 22
1ffa7090 23(define-module (gnu packages bdw-gc)
4a44e743 24 #:use-module (guix licenses)
c44899a2 25 #:use-module (guix packages)
87f5d366 26 #:use-module (guix download)
ad7583f6 27 #:use-module (guix build-system gnu)
ed788c31
RS
28 #:use-module (gnu packages pkg-config)
29 #:use-module (gnu packages hurd))
c44899a2 30
c8d1e7a1 31(define-public libgc
c44899a2
LC
32 (package
33 (name "libgc")
b0f5ec4f 34 (version "7.6.12")
c44899a2 35 (source (origin
87f5d366 36 (method url-fetch)
1d3de979
MB
37 (uri (string-append "https://github.com/ivmai/bdwgc/releases"
38 "/download/v" version "/gc-" version ".tar.gz"))
c44899a2
LC
39 (sha256
40 (base32
b0f5ec4f 41 "10jhhi79d5brwlsyhwgpnrmc8nhlf7aan2lk9xhgihk5jc6srbvc"))))
c44899a2 42 (build-system gnu-build-system)
4db00e42 43 (arguments
ed788c31
RS
44 `(#:configure-flags
45 (list
46 ;; Install gc_cpp.h et al.
47 "--enable-cplusplus"
48 ;; In GNU/Hurd systems during the 'Check' phase,
49 ;; there is a deadlock caused by the 'gctest' test.
50 ;; To disable the error set "--disable-gcj-support"
51 ;; to configure script. See bug report and discussion:
52 ;; <https://lists.opendylan.org/pipermail/bdwgc/2017-April/006275.html>
53 ;; <https://lists.gnu.org/archive/html/bug-hurd/2017-01/msg00008.html>
54 ,@(if (hurd-triplet? (or (%current-system)
55 (%current-target-system)))
56 '("--disable-gcj-support")
b0f5ec4f
MB
57 '()))
58 #:phases (modify-phases %standard-phases
59 (add-after 'unpack 'adjust-pc-file
60 (lambda* (#:key inputs #:allow-other-keys)
61 (let ((libatomic-ops (assoc-ref inputs "libatomic-ops")))
62 ;; GC 7.6.10 and later includes -latomic_ops in the
63 ;; pkg-config file. To avoid propagation, insert an
64 ;; absolute reference so dependent programs can find it.
65 (substitute* "bdw-gc.pc.in"
66 (("@ATOMIC_OPS_LIBS@" match)
67 (string-append "-L" libatomic-ops "/lib "
68 match)))
69 #t))))))
c8d1e7a1
LF
70 (native-inputs `(("pkg-config" ,pkg-config)))
71 (inputs `(("libatomic-ops" ,libatomic-ops)))
9bf62d9b 72 (outputs '("out" "debug"))
c44899a2
LC
73 (synopsis "The Boehm-Demers-Weiser conservative garbage collector
74for C and C++")
75 (description
76 "The Boehm-Demers-Weiser conservative garbage collector can be used
77as a garbage collecting replacement for C malloc or C++ new. It allows
78you to allocate memory basically as you normally would, without
79explicitly deallocating memory that is no longer useful. The collector
80automatically recycles memory when it determines that it can no longer
81be otherwise accessed.
82
83The collector is also used by a number of programming language
84implementations that either use C as intermediate code, want to
85facilitate easier interoperation with C libraries, or just prefer the
86simple collector interface.
87
88Alternatively, the garbage collector may be used as a leak detector for
89C or C++ programs, though that is not its primary goal.")
f4eee79d 90 (home-page "https://www.hboehm.info/gc/")
c44899a2 91
62b76320 92 (license (x11-style (string-append home-page "license.txt")))))
ad7583f6 93
69961ac3 94(define-public libgc-8.0
1f8838d1
MB
95 (package
96 (inherit libgc)
69961ac3
LC
97 (version "8.0.4")
98 (source (origin
99 (method url-fetch)
100 (uri (string-append "https://github.com/ivmai/bdwgc/releases"
101 "/download/v" version "/gc-" version ".tar.gz"))
102 (sha256
103 (base32
104 "1798rp3mcfkgs38ynkbg2p47bq59pisrc6mn0l20pb5iczf0ssj3"))))))
105
4cb87d63 106(define-public libgc/back-pointers
1f8838d1
MB
107 (package/inherit
108 libgc
4cb87d63
LC
109 (name "libgc-back-pointers")
110 (arguments
111 `(#:make-flags
112 (list "CPPFLAGS=-DKEEP_BACK_PTRS=1")
113 ,@(package-arguments libgc)))
114 (synopsis "The BDW garbage collector, with back-pointer tracking")))
115
ad7583f6
LC
116(define-public libatomic-ops
117 (package
118 (name "libatomic-ops")
b9cb3104 119 (version "7.6.10")
ad7583f6
LC
120 (source (origin
121 (method url-fetch)
122 (uri (string-append
1be8a432
MB
123 "https://github.com/ivmai/libatomic_ops/releases/download/v"
124 version "/libatomic_ops-" version ".tar.gz"))
ad7583f6
LC
125 (sha256
126 (base32
b9cb3104 127 "1bwry043f62pc4mgdd37zx3fif19qyrs8f5bw7qxlmkzh5hdyzjq"))))
ad7583f6
LC
128 (build-system gnu-build-system)
129 (outputs '("out" "debug"))
130 (synopsis "Accessing hardware atomic memory update operations")
131 (description
132 "This C library provides semi-portable access to hardware-provided atomic
7b8acffd 133memory update operations on a number of architectures. These might allow you to
ad7583f6
LC
134write code that does more interesting things in signal handlers, write
135lock-free code, experiment with thread programming paradigms, etc.")
62b76320 136 (home-page "https://github.com/ivmai/libatomic_ops/")
ad7583f6
LC
137
138 ;; Some source files are X11-style, others are GPLv2+.
139 (license gpl2+)))