#!/usr/bin/env bash set -euo pipefail build_and_install() { if [ $older_release -eq 1 ]; then make extra_inc=big_iron.inc work_dir="$PWD"/ tbb_root="$PWD" if [ -d /usr/lib/x86_64-linux-gnu ]; then LIBS=lib/x86_64-linux-gnu elif [ -d /usr/lib/aarch64-linux-gnu ]; then LIBS=lib/aarch64-linux-gnu elif [ -d /usr/lib/arm-linux-gnueabihf ]; then LIBS=lib/arm-linux-gnu fi PC_FILE=/usr/${LIBS}/pkgconfig/tbb.pc echo "prefix=/usr" > "${PC_FILE}" echo "exec_prefix=\${prefix}" >> "${PC_FILE}" echo "libdir=\${exec_prefix}/lib/${LIBS}" >> "${PC_FILE}" echo "includedir=\${prefix}/include" >> "${PC_FILE}" echo "Name: Threading Building Blocks" >> "${PC_FILE}" echo "Description: Intel's parallelism library for C++" >> "${PC_FILE}" echo "URL: http://www.threadingbuildingblocks.org/" >> "${PC_FILE}" echo "Version: v2020.3.3" >> "${PC_FILE}" echo "Libs: -ltbb -latomic" >> "${PC_FILE}" echo "Cflags: -I\${includedir}" >> "${PC_FILE}" cp _release/*.a /usr/"${LIBS}"/ cp -r include/* /usr/include/ else cmake -B build -DCMAKE_INSTALL_PREFIX=/usr/local \ -DCMAKE_CXX_FLAGS="-Wno-stringop-overflow" \ -DTBB_TEST=OFF -DBUILD_SHARED_LIBS=OFF -GNinja . ninja -C build install fi } prepare_source() { DIR=tbb cd /tmp [ -d ./${DIR} ] && rm -rf ./${DIR} mkdir ${DIR} if [ $older_release -eq 1 ]; then TBB_RELEASE="v2020.3.3" else TBB_RELEASE=$(curl -sL "https://api.github.com/repos/uxlfoundation/oneTBB/releases/latest" \ | grep '"tag_name":' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/') fi curl -Ls "https://github.com/uxlfoundation/oneTBB/archive/${TBB_RELEASE}.tar.gz" | \ tar xzvf - -C ${DIR}/ --strip-components=1 cd ${DIR} } older_release=0 if grep -q 'Ubuntu 20.04\|Debian GNU/Linux 11' /etc/os-release 2>/dev/null; then older_release=1 fi prepare_source build_and_install