hugr-llvm 0.20.2

A general and extensible crate for lowering HUGRs into LLVM IR
Documentation
{ 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