1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 cmake,
6 gtest,
7}:
8
9stdenv.mkDerivation (finalAttrs: {
10 pname = "parallel-hashmap";
11 version = "2.0.0";
12
13 src = fetchFromGitHub {
14 owner = "greg7mdp";
15 repo = "parallel-hashmap";
16 tag = "v${finalAttrs.version}";
17 hash = "sha256-JiDhEpAQyyPXGkY9DYLvJ2XW1Bp3Ex1iMtbzNdra95g=";
18 };
19
20 postPatch = ''
21 # don't download googletest, but build it from source
22 # https://github.com/greg7mdp/parallel-hashmap/blob/be6a2c79857c9ea76760ca6ce782e1609713428e/CMakeLists.txt#L98
23 substituteInPlace CMakeLists.txt \
24 --replace "include(cmake/DownloadGTest.cmake)" "add_subdirectory(${gtest.src} ./googletest-build EXCLUDE_FROM_ALL)"
25 '';
26
27 nativeBuildInputs = [
28 cmake
29 ];
30
31 cmakeFlags = [
32 "-DPHMAP_BUILD_TESTS=${if finalAttrs.finalPackage.doCheck then "ON" else "OFF"}"
33 "-DPHMAP_BUILD_EXAMPLES=OFF"
34 ];
35
36 nativeCheckInputs = [
37 gtest
38 ];
39
40 doCheck = true;
41
42 meta = with lib; {
43 description = "Family of header-only, very fast and memory-friendly hashmap and btree containers";
44 homepage = "https://github.com/greg7mdp/parallel-hashmap";
45 changelog = "https://github.com/greg7mdp/parallel-hashmap/releases/tag/v${finalAttrs.version}";
46 license = licenses.asl20;
47 platforms = platforms.unix;
48 maintainers = with maintainers; [ natsukium ];
49 };
50})