Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / libraries / rapidjson / unstable.nix
blob0f4c3d40403e1d85f98681850c73ef9bf3df754d
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , cmake
5 , doxygen
6 , graphviz
7 , gtest
8 , valgrind
9 # One of "11" or "17"; default in source is CXX 11
10 , cxxStandard ? "11"
11 , buildDocs ? true
12 , buildTests ? !stdenv.hostPlatform.isStatic && !stdenv.isDarwin
13 , buildExamples ? true
16 stdenv.mkDerivation (finalAttrs: {
17   pname = "rapidjson";
18   version = "unstable-2023-09-28";
20   outputs = [
21     "out"
22   ] ++ lib.optionals buildDocs [
23     "doc"
24   ] ++ lib.optionals buildExamples [
25     "example"
26   ];
28   src = fetchFromGitHub {
29     owner = "Tencent";
30     repo = "rapidjson";
31     rev = "f9d53419e912910fd8fa57d5705fa41425428c35";
32     hash = "sha256-rl7iy14jn1K2I5U2DrcZnoTQVEGEDKlxmdaOCF/3hfY=";
33   };
35   patches = lib.optionals buildTests [
36     ./0000-unstable-use-nixpkgs-gtest.patch
37     # https://github.com/Tencent/rapidjson/issues/2214
38     ./0001-unstable-valgrind-suppress-failures.patch
39   ];
41   nativeBuildInputs = [
42     cmake
43   ] ++ lib.optionals buildDocs [
44     doxygen
45     graphviz
46   ];
48   cmakeFlags = [
49     (lib.cmakeBool "RAPIDJSON_BUILD_DOC" buildDocs)
50     (lib.cmakeBool "RAPIDJSON_BUILD_TESTS" buildTests)
51     (lib.cmakeBool "RAPIDJSON_BUILD_EXAMPLES" buildExamples)
52     (lib.cmakeBool "RAPIDJSON_BUILD_CXX11" (cxxStandard == "11"))
53     (lib.cmakeBool "RAPIDJSON_BUILD_CXX17" (cxxStandard == "17"))
54   ] ++ lib.optionals buildTests [
55     (lib.cmakeFeature "GTEST_INCLUDE_DIR" "${lib.getDev gtest}")
56   ];
58   doCheck = buildTests;
60   nativeCheckInputs = [
61     gtest
62     valgrind
63   ];
65   postInstall = lib.optionalString buildExamples ''
66     mkdir -p $example/bin
68     find bin -type f -executable \
69       -not -name "perftest" \
70       -not -name "unittest" \
71       -exec cp -a {} $example/bin \;
72   '';
74   meta = with lib; {
75     description = "Fast JSON parser/generator for C++ with both SAX/DOM style API";
76     homepage = "http://rapidjson.org/";
77     license = licenses.mit;
78     platforms = platforms.unix;
79     maintainers = with maintainers; [ Madouura ];
80     broken = (cxxStandard != "11" && cxxStandard != "17");
81   };