Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at 21.05 57 lines 1.9 kB view raw
1{ lib, stdenv, fetchFromGitHub, cmake, ninja 2, secureBuild ? false 3}: 4 5let 6 soext = stdenv.hostPlatform.extensions.sharedLibrary; 7in 8stdenv.mkDerivation rec { 9 pname = "mimalloc"; 10 version = "2.0.0"; 11 12 src = fetchFromGitHub { 13 owner = "microsoft"; 14 repo = pname; 15 rev = "v${version}"; 16 sha256 = "sha256-BMDCreY41CxJaPo9BdSRZlqh/YjtPC9aI/Zxt501e+0="; 17 }; 18 19 nativeBuildInputs = [ cmake ninja ]; 20 cmakeFlags = lib.optional secureBuild [ "-DMI_SECURE=ON" ]; 21 22 postInstall = let 23 rel = lib.versions.majorMinor version; 24 in '' 25 # first, install headers, that's easy 26 mkdir -p $dev 27 mv $out/lib/*/include $dev/include 28 29 # move .a and .o files into place 30 find $out/lib 31 mv $out/lib/mimalloc-${rel}/libmimalloc*.a $out/lib/libmimalloc.a 32 mv $out/lib/mimalloc-${rel}/mimalloc*.o $out/lib/mimalloc.o 33 34 '' + (if secureBuild then '' 35 mv $out/lib/mimalloc-${rel}/libmimalloc-secure${soext}.${rel} $out/lib/libmimalloc-secure${soext}.${rel} 36 ln -sfv $out/lib/libmimalloc-secure${soext}.${rel} $out/lib/libmimalloc-secure${soext} 37 ln -sfv $out/lib/libmimalloc-secure${soext}.${rel} $out/lib/libmimalloc${soext} 38 '' else '' 39 mv $out/lib/mimalloc-${rel}/libmimalloc${soext}.${rel} $out/lib/libmimalloc${soext}.${rel} 40 ln -sfv $out/lib/libmimalloc${soext}.${rel} $out/lib/libmimalloc${soext} 41 '') + '' 42 # remote duplicate dir. FIXME: try to fix the .cmake file distribution 43 # so we can re-use it for dependencies... 44 rm -rf $out/lib/mimalloc-${rel} 45 ''; 46 47 outputs = [ "out" "dev" ]; 48 49 meta = with lib; { 50 description = "Compact, fast, general-purpose memory allocator"; 51 homepage = "https://github.com/microsoft/mimalloc"; 52 license = licenses.bsd2; 53 platforms = platforms.unix; 54 maintainers = with maintainers; [ thoughtpolice ]; 55 badPlatforms = platforms.darwin; 56 }; 57}