The package provides a source of BLAS and LAPACK via OpenBLAS.
The following Cargo features are supported:
cacheto build in a shared directory instead oftarget(see below),cblasto build CBLAS (enabled by default),lapacketo build LAPACKE (enabled by default),staticto link to OpenBLAS statically, andsystemto skip building the bundled OpenBLAS.
The cache feature allows the OpenBLAS build products to be reused between
crates that have different target directories. This avoids rebuilding OpenBLAS
unnecessarily. However, this also prevents cargo clean from working properly,
since the aforementioned build products will not be removed by the command.
The OpenBLAS binary will be placed at ${XDG_DATA_HOME}/openblas_build/[hash of build configure object]. For example, build with LAPACK and build without
LAPACK will be placed on different directories. If you build OpenBLAS as a
shared library, you need to add the above directory to LD_LIBRARY_PATH (for
Linux) or DYLD_LIBRARY_PATH (for macOS). Since build from source is not
supported on Windows (see next section), this feature is also not supported.
On Windows, openblas-src relies on vcpkg to find OpenBLAS. Before building,
you must have the correct OpenBLAS installed for your target triplet and kind of
linking. For instance, to link dynamically for the x86_64-pc-windows-msvc
toolchain, install openblas for the x64-windows triplet:
vcpkg install openblas --triplet x64-windowsTo link OpenBLAS statically, install openblas for the x64-windows-static-md triplet:
vcpkg install openblas --triplet x64-windows-static-mdTo link OpenBLAS and C Runtime (CRT) statically, install openblas for the x64-windows-static triplet:
vcpkg install openblas --triplet x64-windows-staticand build with +crt-static option
RUSTFLAGS='-C target-feature=+crt-static' cargo build --target x86_64-pc-windows-msvc
Please see the "Static and dynamic C runtimes" in The Rust reference for detail.
Apart from providing the --target option to cargo build, one also has to
specify the cross-compilation variables of OpenBLAS.
They can be set as environment variables for cargo build using the OPENBLAS_
prefix as follows: OPENBLAS_CC, OPENBLAS_FC, OPENBLAS_HOSTCC, and
OPENBLAS_TARGET.
The openblas-src crate will detect and use proxy settings from your environment variables, such as http_proxy and https_proxy to download necessary dependencies.
Your contribution is highly appreciated. Do not hesitate to open an issue or a pull request. Note that any contribution submitted for inclusion in the project will be licensed according to the terms given in LICENSE.md.