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