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