Skip to content

Experimental rust bindings to tket via autocxx

Notifications You must be signed in to change notification settings

CQCL-DEV/tket-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tket-rs

Building

The project uses conan to download and statically link the tket libraries, make sure you have added a conan remote with tket available for your system (there may be instructions for this on the tket repository). For current tket releases, you will need gcc 11. For bindgen and autocxx you need Clang.

And install conan with pip install conan~=1.60. After that cargo build --release should do the job (note release is needed for linking to work correctly). Make sure linking and loading is succesful with cargo test --release.

You will need a conan profile that matches the pattern tket-rs-{os}-{platform}, e.g. tket-rs-linux-x86_64. So a command like

conan profile new tket-rs-linux-x86_64 --detect

should work.

You might also need to run

conan profile update settings.compiler.libcxx=libstdc++11 tket-rs-linux-x86_64

Now go check that profile, crucially you need to make sure compiler version is 11, compiler is gcc, and build_type is Release.

Here is an example for a linux profile:

[settings]
os=Linux
os_build=Linux
arch=x86_64
arch_build=x86_64
compiler=gcc
compiler.version=11
compiler.libcxx=libstdc++11
build_type=Release
[options]
[build_requires]
[env]

Finally, make sure to add the remote with the tket pre-compiled binaries:

conan remote add tket-libs https://quantinuumsw.jfrog.io/artifactory/api/conan/tket1-libs

Troubleshooting

Compilation may fail for many reasons. Here are some things to try:

Environment variables:

  • Bindgen needs Clang, so you may need to point to it with something like LIBCLANG_PATH="${LLVM_PATH}/lib"
  • Bindgen may still fail to find c++ headers, so you may need to also set BINDGEN_EXTRA_CLANG_ARGS="-I${LLVM_PATH}/lib/clang/12.0.1/include/ -L${LIBCLANG_PATH}" (or other system header paths on the include)
  • On Ubuntu this may do the trick: BINDGEN_EXTRA_CLANG_ARGS="-I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11"

About

Experimental rust bindings to tket via autocxx

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •