{ sources ? import nix/sources.nix
, pkgs ? import sources.nixpkgs {}
, lib ? pkgs.lib
, crane ? import sources.crane { inherit pkgs; }
, stdenv ? pkgs.stdenv
, llvmVersion ? "14"
, llvmPackages ? pkgs."llvmPackages_${llvmVersion}"
, libffi ? pkgs.libffi
, libxml2 ? pkgs.libxml2
}: let
inherit (llvmPackages) libllvm;
commonArgs = {
src = lib.cleanSourceWith {
src = crane.path ./.;
filter = path: t: crane.filterCargoSources path t || (builtins.match ".*\.snap" path != null);
};
strictDeps = true;
buildInputs = [
libllvm
libffi
libxml2
];
# TODO really we should get the version string from llvmPackages
"LLVM_SYS_${llvmVersion}0_PREFIX" = "${libllvm.dev}";
};
hugr-llvm = crane.buildPackage(commonArgs // {
cargoArtifacts = crane.buildDepsOnly commonArgs;
});
in hugr-llvm