| #!/usr/bin/env bash | 
 |  | 
 | set -e | 
 |  | 
 | INSTALL_DIR="$(pwd)/install" | 
 | mkdir -p $INSTALL_DIR | 
 |  | 
 | case "$1" in | 
 |   ql|eos-s3) export FPGA_FAM=eos-s3 ;; | 
 |   xc7)       export FPGA_FAM=xc7 ;; | 
 |   *) | 
 |     echo "Unknown FPGA family <$1>!" | 
 |     exit 1 | 
 |   ;; | 
 | esac | 
 |  | 
 | echo "Set CMAKE_FLAGS" | 
 | case "$FPGA_FAM" in | 
 |   xc7) | 
 |     INSTALL_FAMILIES='xc7' | 
 |   ;; | 
 |   eos-s3) | 
 |     INSTALL_FAMILIES='qlf_k4n8,pp3' | 
 |   ;; | 
 | esac | 
 | export CMAKE_FLAGS="-GNinja -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -DINSTALL_FAMILIES=${INSTALL_FAMILIES}" | 
 |  | 
 | echo "Set environment variables for F4PGA CLI utils" | 
 | export F4PGA_INSTALL_DIR="placeholder" | 
 | # TODO: We should place the content in subdir F4PGA_FAM, to use the default in f4pga instead of overriding F4PGA_ENV_SHARE here. | 
 | case "$FPGA_FAM" in | 
 |   xc7)    export F4PGA_SHARE_DIR="$(cd $(dirname "$0"); pwd)/../../install/share/f4pga" ;; | 
 |   eos-s3) export F4PGA_SHARE_DIR="${INSTALL_DIR}"/share/f4pga ;; | 
 | esac | 
 |  | 
 | source $(dirname "$0")/setup-and-activate.sh | 
 |  | 
 | echo "----------------------------------------" | 
 |  | 
 | pushd build | 
 | make_target install "Installing toolchain (make install)" | 
 | popd | 
 |  | 
 | echo "----------------------------------------" | 
 |  | 
 | heading "Running installed toolchain tests" | 
 | pushd build | 
 | export VPR_NUM_WORKERS=${MAX_CORES} | 
 | export CTEST_OUTPUT_ON_FAILURE=1 | 
 | case "$FPGA_FAM" in | 
 |   xc7) | 
 |     ctest -R binary_toolchain_test_xc7* -j${MAX_CORES} | 
 |   ;; | 
 |   eos-s3) | 
 |     heading "Testing installed toolchain on qlf_k4n8" | 
 |     ctest -j${MAX_CORES} -R "quicklogic_toolchain_test_.*_qlf_k4n8" -VV | 
 |     echo "----------------------------------------" | 
 |     heading "Testing installed toolchain on ql_eos_s3" | 
 |     ctest -j${MAX_CORES} -R "quicklogic_toolchain_test_.*_ql-eos-s3" -VV | 
 |   ;; | 
 | esac | 
 | popd | 
 | echo "----------------------------------------" | 
 |  | 
 | heading "Compressing install dir (creating packages)" | 
 | rm -rf build | 
 | # Remove symbolic links and copy content of the linked files | 
 | for file in $(find install -type l) | 
 |   do cp --remove-destination $(readlink $file) $file | 
 | done | 
 |  | 
 | du -ah install | 
 | export GIT_HASH=$(git rev-parse --short HEAD) | 
 |  | 
 | mkdir -p "$INSTALL_DIR/$FPGA_FAM"_env | 
 | cp \ | 
 |   packaging/"$FPGA_FAM"_environment.yml \ | 
 |   packaging/requirements.txt \ | 
 |   packaging/"$FPGA_FAM"_requirements.txt \ | 
 |   "$INSTALL_DIR/$FPGA_FAM"_env | 
 |  | 
 | case "$FPGA_FAM" in | 
 |   xc7) | 
 |     tar -I "pixz" -cvf \ | 
 |       symbiflow-arch-defs-install-xc7-${GIT_HASH}.tar.xz \ | 
 |       -C install \ | 
 |         share/f4pga/techmaps \ | 
 |         "$FPGA_FAM"_env | 
 |     tar -I "pixz" -cvf \ | 
 |       symbiflow-arch-defs-benchmarks-xc7-${GIT_HASH}.tar.xz \ | 
 |       -C install \ | 
 |         benchmarks | 
 |     for device in $(ls install/share/f4pga/arch); do | 
 |       if [[ $device = xc7* ]]; then | 
 |         tar -I "pixz" -cvf \ | 
 |           symbiflow-arch-defs-$device-${GIT_HASH}.tar.xz \ | 
 |           -C install \ | 
 |             share/f4pga/arch/$device | 
 |       fi | 
 |     done | 
 |   ;; | 
 |   eos-s3) | 
 |     tar -I "pixz" -cvf \ | 
 |       symbiflow-arch-defs-install-ql-${GIT_HASH}.tar.xz \ | 
 |       -C install \ | 
 |         share/f4pga/techmaps \ | 
 |         "$FPGA_FAM"_env | 
 |     for device in $(ls install/share/f4pga/arch); do | 
 |       if [[ $device = ql* ]]; then | 
 |         tar -I "pixz" -cvf \ | 
 |           symbiflow-arch-defs-$device-${GIT_HASH}.tar.xz \ | 
 |             -C install \ | 
 |             share/f4pga/arch/$device | 
 |       fi | 
 |     done | 
 |   ;; | 
 | esac | 
 | rm -rf install | 
 | echo "----------------------------------------" |