scipr-lab / libsnark

C++ library for zkSNARKs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bazel support

mobileink opened this issue · comments

Hi SCIPRs,

As part of a project adding Bazel support to Mina, I've bazelized libsnark and its dependencies. Unfortunately, Mina has dropped libsnark in favor of a Rust implementation, but the Bazel code is yours if you want it. I'm afraid I won't have much time to work on it in the near future, but I would be happy to assist if you have a build engineer who wants to take the lead. The code is pretty complete for:

  • libsnark
  • libfqfft
  • libff
  • ate_pairing
  • xbyak

That is, everything seems to build and run, both separately and together. I added the beginnings of fine-grained configuration control, so e.g. you can turn on verbosity for everything or just for one package or a set of packages, using a command line flag. That part of it could use some more work, especially if you want to control arcane bits of compile/link config in this way. But the framework is there. Bazel supports very fine-grained control, but you have to design it and implement it yourself. Also the bootstrapping code that loads external repos could use some improvements; I only discovered after I implemented it that there's a better way to do it.

You can find it at obazl. The readme files have some instructions for using bazel, I think. If you're interested let me know and we can discuss how to move forward. Probably the easiest thing would be for you to create bazel branches in each repo, and then I can just submit the whole thing in a PR, and you can decide how to merge it into master at your leisure.

Gregg

FYI the repos have been moved to o1-labs