Files

83 lines
1.7 KiB
Nix

{
stdenv,
fetchFromGitHub,
cmake,
copyPkgconfigItems,
makePkgconfigItem,
lib,
testers,
ctestCheckHook,
ninja,
double-conversion,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "json.cpp";
version = "0-unstable-2025-10-25";
src = fetchFromGitHub {
owner = "jart";
repo = "json.cpp";
rev = "6ec4e44a5bbaadbe677473378c3d2133644c58a1";
hash = "sha256-kUFtyFPoHGCFWTGRD8SoBsqHYCplGPw/AcpMR9T0Ffk=";
};
doCheck = true;
cmakeFlags = [
(lib.cmakeBool "JSON_CPP_BUILD_TESTS" true)
(lib.cmakeBool "DOUBLE_CONVERSION_VENDORED" false)
(lib.cmakeBool "BUILD_SHARED_LIBS" stdenv.hostPlatform.hasSharedLibraries)
];
nativeBuildInputs = [
cmake
copyPkgconfigItems
ctestCheckHook
ninja
];
buildInputs = [
double-conversion
];
outputs = [
"out"
"dev"
];
passthru = {
tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
};
# https://github.com/jart/json.cpp/issues/17
pkgconfigItems = [
(makePkgconfigItem rec {
name = "json.cpp";
inherit (finalAttrs) version;
cflags = [ "-I${variables.includedir}" ];
libs = [
"-L${variables.libdir}"
"-ljson"
];
libsPrivate = [
# nixpkgs double-conversion does not support pkg-config
# as of yet.
"-ldouble-conversion"
];
variables = {
includedir = "${placeholder "dev"}/include";
libdir = "${placeholder "out"}/lib";
};
inherit (finalAttrs.meta) description;
})
];
meta = {
pkgConfigModules = [ "json.cpp" ];
description = "JSON for Classic C++";
homepage = "https://github.com/jart/json.cpp";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fzakaria ];
};
})