about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/jemalloc
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/jemalloc')
-rw-r--r--nixpkgs/pkgs/development/libraries/jemalloc/default.nix1
-rw-r--r--nixpkgs/pkgs/development/libraries/jemalloc/rust.nix24
2 files changed, 25 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/jemalloc/default.nix b/nixpkgs/pkgs/development/libraries/jemalloc/default.nix
index 18c492dc93b8..b4625abcd692 100644
--- a/nixpkgs/pkgs/development/libraries/jemalloc/default.nix
+++ b/nixpkgs/pkgs/development/libraries/jemalloc/default.nix
@@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
   ;
 
   env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-Wno-error=array-bounds";
+  env.NIX_LDFLAGS = lib.optionalString (stdenv.cc.libcxx != null) "-l${stdenv.cc.libcxx.cxxabi.libName}";
 
   doCheck = true;
 
diff --git a/nixpkgs/pkgs/development/libraries/jemalloc/rust.nix b/nixpkgs/pkgs/development/libraries/jemalloc/rust.nix
new file mode 100644
index 000000000000..1a9968933b1e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/jemalloc/rust.nix
@@ -0,0 +1,24 @@
+{ lib
+, stdenv
+, jemalloc
+, writeText
+
+, unprefixed ? false
+}:
+
+let
+  # On some platforms the unprefixed feature will be ignored:
+  # https://github.com/tikv/jemallocator/blob/ab0676d77e81268cd09b059260c75b38dbef2d51/jemalloc-sys/src/env.rs
+  unprefixed' = unprefixed && !stdenv.hostPlatform.isMusl && !stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isAndroid;
+
+in jemalloc.overrideAttrs (oldAttrs: {
+  configureFlags = oldAttrs.configureFlags ++ [
+    "--with-private-namespace=_rjem_"
+  ] ++ lib.optionals (!unprefixed') [
+    "--with-jemalloc-prefix=_rjem_"
+  ];
+
+  setupHook = writeText "setup-hook.sh" ''
+    export JEMALLOC_OVERRIDE="@out@/lib/libjemalloc${stdenv.hostPlatform.extensions.library}"
+  '';
+})