#!/bin/bash # this scripts compiles bffh for all target architectures which are defined in Cross.toml (using cross_rs). # We use cross_rs because it supports easy and successful cross compilation for different architectures with less efforts # For this we install podman by default # requirements # - this script only runs on debianoid OS (Debian, Ubuntu, Kubuntu, ... having dpkg) echo -e "\n+++++++++++++++++++++++++++++++++++++++++++" echo -e "installing requirements ..." echo -e "+++++++++++++++++++++++++++++++++++++++++++\n" sudo apt install podman cargo install cross echo -e "\n+++++++++++++++++++++++++++++++++++++++++++" echo -e "gathering some general info ..." echo -e "+++++++++++++++++++++++++++++++++++++++++++\n" DEB_HOST_ARCH_CPU=$(dpkg-architecture | grep DEB_HOST_ARCH_CPU) DEB_HOST_MULTIARCH=$(dpkg-architecture | grep DEB_HOST_MULTIARCH) if [[ ! $DEB_HOST_ARCH_CPU -eq "amd64" ]]; then echo -e "Host architecture is not amd64. Aborting ..." exit 1 fi # this generates bffhd and fabfire_provision binary files in target// dir # we compile for amd64 (x86_64) using native "cargo build --release". Other architectures we use podman + cross_rs echo -e "\n+++++++++++++++++++++++++++++++++++++++++++" echo -e "cross-compiling ..." echo -e "+++++++++++++++++++++++++++++++++++++++++++\n" CARGO_TARGET_DIR=target/x86_64-unknown-linux-gnu time cargo build --release cd fabfire_provision; CARGO_TARGET_DIR=../target/x86_64-unknown-linux-gnu time cargo build --release; cd ../ time cross build --target=aarch64-unknown-linux-gnu --release time cross build --target=armv7-unknown-linux-gnueabihf --release