31 lines
1.4 KiB
TOML
31 lines
1.4 KiB
TOML
# Cross-compile configuration for the proxy-engine crate.
|
|
#
|
|
# tsrust builds for both x86_64-unknown-linux-gnu and aarch64-unknown-linux-gnu
|
|
# from an x86_64 host. Without this config, cargo invokes the host `cc` to
|
|
# link aarch64 objects and fails with
|
|
# rust-lld: error: <obj.o> is incompatible with elf64-x86-64
|
|
#
|
|
# Required Debian/Ubuntu packages for the aarch64 target to work:
|
|
# sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
|
|
# libc6-dev-arm64-cross libstdc++6-arm64-cross
|
|
#
|
|
# The `libstdc++.so` dev symlink (needed by the -lstdc++ flag that the
|
|
# kokoro-tts/ort build scripts emit) is provided by this repo at
|
|
# ./crosslibs/aarch64/libstdc++.so, pointing at the versioned shared
|
|
# library installed by `libstdc++6-arm64-cross`. This avoids requiring
|
|
# the `libstdc++-13-dev-arm64-cross` package, which is not always
|
|
# installed alongside the runtime.
|
|
|
|
[target.aarch64-unknown-linux-gnu]
|
|
linker = "aarch64-linux-gnu-gcc"
|
|
rustflags = ["-C", "link-arg=-L.cargo/crosslibs/aarch64"]
|
|
|
|
# Tell cc-rs-based build scripts (ring, zstd-sys, audiopus_sys, ort-sys) to
|
|
# use the aarch64 cross toolchain when compiling C sources for the aarch64
|
|
# target. Without these, they'd default to the host `cc` and produce x86_64
|
|
# objects that the aarch64 linker then rejects.
|
|
[env]
|
|
CC_aarch64_unknown_linux_gnu = "aarch64-linux-gnu-gcc"
|
|
CXX_aarch64_unknown_linux_gnu = "aarch64-linux-gnu-g++"
|
|
AR_aarch64_unknown_linux_gnu = "aarch64-linux-gnu-ar"
|