2022-08-12 12:06:08 +00:00
|
|
|
{ lib
|
|
|
|
, stdenv
|
|
|
|
, fetchurl
|
2020-04-24 23:36:52 +00:00
|
|
|
, autoreconfHook
|
2022-09-30 11:47:45 +00:00
|
|
|
# doc: https://github.com/ivmai/bdwgc/blob/v8.2.2/doc/README.macros (LARGE_CONFIG)
|
2022-08-12 12:06:08 +00:00
|
|
|
, enableLargeConfig ? false
|
|
|
|
, enableMmap ? true
|
2022-01-27 00:19:43 +00:00
|
|
|
, nixVersions
|
2020-04-24 23:36:52 +00:00
|
|
|
}:
|
|
|
|
|
2022-08-12 12:06:08 +00:00
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
2020-04-24 23:36:52 +00:00
|
|
|
pname = "boehm-gc";
|
2022-09-30 11:47:45 +00:00
|
|
|
version = "8.2.2";
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
src = fetchurl {
|
|
|
|
urls = [
|
2022-09-30 11:47:45 +00:00
|
|
|
# "https://www.hboehm.info/gc/gc_source/gc-${finalAttrs.version}.tar.gz"
|
2022-08-12 12:06:08 +00:00
|
|
|
"https://github.com/ivmai/bdwgc/releases/download/v${finalAttrs.version}/gc-${finalAttrs.version}.tar.gz"
|
2020-04-24 23:36:52 +00:00
|
|
|
];
|
2022-09-30 11:47:45 +00:00
|
|
|
sha256 = "sha256-8wEHvLBi4JIKeQ//+lbZUSNIVGhZNkwjoUviZLOINqA=";
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
outputs = [ "out" "dev" "doc" ];
|
|
|
|
separateDebugInfo = stdenv.isLinux && stdenv.hostPlatform.libc != "musl";
|
|
|
|
|
2022-08-12 12:06:08 +00:00
|
|
|
configureFlags = [
|
|
|
|
"--enable-cplusplus"
|
|
|
|
"--with-libatomic-ops=none"
|
|
|
|
]
|
|
|
|
++ lib.optional enableMmap "--enable-mmap"
|
|
|
|
++ lib.optional enableLargeConfig "--enable-large-config";
|
2020-04-24 23:36:52 +00:00
|
|
|
|
2022-09-30 11:47:45 +00:00
|
|
|
# `gctest` fails under emulation on aarch64-darwin
|
|
|
|
doCheck = !(stdenv.isDarwin && stdenv.isx86_64);
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
|
2022-01-27 00:19:43 +00:00
|
|
|
passthru.tests = nixVersions;
|
2022-01-13 20:06:32 +00:00
|
|
|
|
2022-08-12 12:06:08 +00:00
|
|
|
meta = with lib; {
|
|
|
|
homepage = "https://hboehm.info/gc/";
|
2020-04-24 23:36:52 +00:00
|
|
|
description = "The Boehm-Demers-Weiser conservative garbage collector for C and C++";
|
|
|
|
longDescription = ''
|
|
|
|
The Boehm-Demers-Weiser conservative garbage collector can be used as a
|
|
|
|
garbage collecting replacement for C malloc or C++ new. It allows you
|
|
|
|
to allocate memory basically as you normally would, without explicitly
|
|
|
|
deallocating memory that is no longer useful. The collector
|
|
|
|
automatically recycles memory when it determines that it can no longer
|
|
|
|
be otherwise accessed.
|
|
|
|
|
|
|
|
The collector is also used by a number of programming language
|
|
|
|
implementations that either use C as intermediate code, want to
|
|
|
|
facilitate easier interoperation with C libraries, or just prefer the
|
|
|
|
simple collector interface.
|
|
|
|
|
|
|
|
Alternatively, the garbage collector may be used as a leak detector for
|
|
|
|
C or C++ programs, though that is not its primary goal.
|
|
|
|
'';
|
|
|
|
# non-copyleft, X11-style license
|
2022-08-12 12:06:08 +00:00
|
|
|
changelog = "https://github.com/ivmai/bdwgc/blob/v${finalAttrs.version}/ChangeLog";
|
2020-04-24 23:36:52 +00:00
|
|
|
license = "https://hboehm.info/gc/license.txt";
|
2022-08-12 12:06:08 +00:00
|
|
|
maintainers = with maintainers; [ AndersonTorres ];
|
|
|
|
platforms = platforms.all;
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
2022-08-12 12:06:08 +00:00
|
|
|
})
|