{ lib, stdenv, fetchFromGitHub, copyPkgconfigItems, makePkgconfigItem }: stdenv.mkDerivation rec { pname = "cadical"; version = "2.1.0"; src = fetchFromGitHub { owner = "arminbiere"; repo = "cadical"; rev = "rel-${version}"; sha256 = "sha256-sSvJgHxsRaJ/xHEK32fox0MFI7u+pj5ERLfNn2s8kC8="; }; outputs = [ "out" "dev" "lib" ]; doCheck = true; nativeBuildInputs = [ copyPkgconfigItems ]; pkgconfigItems = [ (makePkgconfigItem { name = "cadical"; inherit version; cflags = [ "-I\${includedir}" ]; libs = [ "-L\${libdir}" "-lcadical" ]; variables = { includedir = "@includedir@"; libdir = "@libdir@"; }; inherit (meta) description; }) ]; env = { # copyPkgconfigItems will substitute these in the pkg-config file includedir = "${placeholder "dev"}/include"; libdir = "${placeholder "lib"}/lib"; }; enableParallelBuilding = true; # fix static build postPatch = '' substituteInPlace makefile.in --replace-fail "ar rc" '$(AR) rc' ''; # the configure script is not generated by autotools and does not accept the # arguments that the default configurePhase passes like --prefix and --libdir configurePhase = '' runHook preConfigure ./configure runHook postConfigure ''; installPhase = '' runHook preInstall install -Dm0755 build/cadical "$out/bin/cadical" install -Dm0755 build/mobical "$out/bin/mobical" install -Dm0644 src/ccadical.h "$dev/include/ccadical.h" install -Dm0644 src/cadical.hpp "$dev/include/cadical.hpp" install -Dm0644 build/libcadical.a "$lib/lib/libcadical.a" mkdir -p "$out/share/doc/${pname}/" install -Dm0755 {LICEN?E,README*,VERSION} "$out/share/doc/${pname}/" runHook postInstall ''; meta = with lib; { description = "Simplified Satisfiability Solver"; maintainers = with maintainers; [ shnarazk ]; platforms = platforms.unix; license = licenses.mit; homepage = "https://fmv.jku.at/cadical/"; }; }