| #!/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 "----------------------------------------" |