# 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: 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"