159e378cbb
GitOrigin-RevId: c04d5652cfa9742b1d519688f65d1bbccea9eb7e
71 lines
2.1 KiB
Nix
71 lines
2.1 KiB
Nix
{
|
|
lib,
|
|
cmake,
|
|
fetchFromGitHub,
|
|
gitUpdater,
|
|
primesieve,
|
|
stdenv,
|
|
}:
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "primecount";
|
|
version = "7.14";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "kimwalisch";
|
|
repo = "primecount";
|
|
rev = "v${finalAttrs.version}";
|
|
hash = "sha256-N4eENwYuf8ZR1JQyFtoWl6H3ITpGZVaOMEU3gx0f9yQ=";
|
|
};
|
|
|
|
outputs = [
|
|
"out"
|
|
"dev"
|
|
"lib"
|
|
"man"
|
|
];
|
|
|
|
nativeBuildInputs = [ cmake ];
|
|
|
|
buildInputs = [ primesieve ];
|
|
|
|
strictDeps = true;
|
|
|
|
cmakeFlags = [
|
|
(lib.cmakeBool "BUILD_LIBPRIMESIEVE" true)
|
|
(lib.cmakeBool "BUILD_PRIMECOUNT" true)
|
|
(lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
|
|
(lib.cmakeBool "BUILD_STATIC_LIBS" stdenv.hostPlatform.isStatic)
|
|
(lib.cmakeBool "BUILD_TESTS" true)
|
|
];
|
|
|
|
passthru = {
|
|
tests = {
|
|
inherit primesieve; # dependency
|
|
};
|
|
updateScript = gitUpdater { rev-prefix = "v"; };
|
|
};
|
|
|
|
meta = {
|
|
homepage = "https://github.com/kimwalisch/primecount";
|
|
description = "Fast prime counting function implementations";
|
|
longDescription = ''
|
|
primecount is a command-line program and C/C++ library that counts the
|
|
primes below an integer x ≤ 10^31 using highly optimized implementations
|
|
of the combinatorial prime counting algorithms.
|
|
|
|
primecount includes implementations of all important combinatorial prime
|
|
counting algorithms known up to this date all of which have been
|
|
parallelized using OpenMP. primecount contains the first ever open source
|
|
implementations of the Deleglise-Rivat algorithm and Xavier Gourdon's
|
|
algorithm (that works). primecount also features a novel load balancer
|
|
that is shared amongst all implementations and that scales up to hundreds
|
|
of CPU cores. primecount has already been used to compute several prime
|
|
counting function world records.
|
|
'';
|
|
changelog = "https://github.com/kimwalisch/primecount/blob/${finalAttrs.src.rev}/ChangeLog";
|
|
license = lib.licenses.bsd2;
|
|
mainProgram = "primecount";
|
|
inherit (primesieve.meta) maintainers platforms;
|
|
};
|
|
})
|