git-subtree-dir: third_party/mason git-subtree-split: c7a967003a7113a17faafe3b41082ad1ae3f1c2f
93 lines
3.6 KiB
Bash
Executable File
93 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
MASON_NAME=tbb
|
|
MASON_VERSION=2017_20161128
|
|
MASON_LIB_FILE=lib/libtbb.${MASON_DYNLIB_SUFFIX}
|
|
|
|
. ${MASON_DIR}/mason.sh
|
|
|
|
function mason_load_source {
|
|
mason_download \
|
|
https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb${MASON_VERSION}oss_src.tgz \
|
|
2eaf7db61c59a31c2a6c9faaad36cc42fb8d1da7
|
|
|
|
mason_extract_tar_gz
|
|
|
|
export MASON_BUILD_PATH=${MASON_ROOT}/.build/${MASON_NAME}${MASON_VERSION}oss
|
|
}
|
|
|
|
function create_links() {
|
|
libname=$1
|
|
if [ -f ${MASON_PREFIX}/lib/${libname}.so ]; then rm ${MASON_PREFIX}/lib/${libname}.so; fi
|
|
cp $(pwd)/build/BUILDPREFIX_release/${libname}.so.2 ${MASON_PREFIX}/lib/
|
|
(cd ${MASON_PREFIX}/lib/ && ln -s ${libname}.so.2 ${libname}.so)
|
|
}
|
|
|
|
function mason_compile {
|
|
mason_step "Loading patch"
|
|
patch -N -p1 < ${MASON_DIR}/scripts/${MASON_NAME}/${MASON_VERSION}/patch.diff
|
|
CXXFLAGS="${CXXFLAGS} -Wno-attributes"
|
|
# libtbb does not support -fvisibility=hidden
|
|
CXXFLAGS="${CXXFLAGS//-fvisibility=hidden}"
|
|
export CXXFLAGS="${CXXFLAGS//-fvisibility-inlines-hidden}"
|
|
|
|
if [[ $(uname -s) == 'Darwin' ]]; then
|
|
# build shared libs first
|
|
make -j${MASON_CONCURRENCY} tbb_build_prefix=BUILDPREFIX cfg=release arch=intel64 stdver=c++11 stdlib=libc++ compiler=clang tbb_build_dir=$(pwd)/build
|
|
# prevent ldflags being sent to ar for the static linking, which does not work
|
|
unset LDFLAGS
|
|
make -j${MASON_CONCURRENCY} tbb_build_prefix=BUILDPREFIX cfg=release arch=intel64 stdver=c++11 stdlib=libc++ compiler=clang tbb_build_dir=$(pwd)/build extra_inc=big_iron.inc
|
|
else
|
|
LDFLAGS="${LDFLAGS} "'-Wl,-z,origin -Wl,-rpath=\$$ORIGIN'
|
|
make -j${MASON_CONCURRENCY} tbb_build_prefix=BUILDPREFIX cfg=release arch=intel64 stdver=c++11 tbb_build_dir=$(pwd)/build
|
|
# prevent ldflags being sent to ar for the static linking, which does not work
|
|
unset LDFLAGS
|
|
make -j${MASON_CONCURRENCY} tbb_build_prefix=BUILDPREFIX cfg=release arch=intel64 stdver=c++11 tbb_build_dir=$(pwd)/build extra_inc=big_iron.inc
|
|
fi
|
|
|
|
# custom install
|
|
mkdir -p ${MASON_PREFIX}/lib/
|
|
mkdir -p ${MASON_PREFIX}/include/
|
|
mkdir -p ${MASON_PREFIX}/bin/
|
|
|
|
if [[ $(uname -s) == "Darwin" ]]; then
|
|
cp $(pwd)/build/BUILDPREFIX_release/lib*.* ${MASON_PREFIX}/lib/
|
|
# add rpath so that apps building against this lib can embed location to this lib
|
|
# by passing '-rpath ${MASON_PREFIX}/lib/'
|
|
# https://wincent.com/wiki/@executable_path,_@load_path_and_@rpath
|
|
install_name_tool -id @rpath/libtbb.dylib ${MASON_PREFIX}/lib/libtbb.dylib
|
|
install_name_tool -id @rpath/libtbbmalloc.dylib ${MASON_PREFIX}/lib/libtbbmalloc.dylib
|
|
install_name_tool -id @rpath/libtbbmalloc_proxy.dylib ${MASON_PREFIX}/lib/libtbbmalloc_proxy.dylib
|
|
install_name_tool -change libtbbmalloc.dylib @rpath/libtbbmalloc.dylib ${MASON_PREFIX}/lib/libtbbmalloc_proxy.dylib
|
|
else
|
|
# the linux libraries are funky: the lib.so.2 is the real lib
|
|
# and the lib.so is an ascii text file, so we need to only copy
|
|
# the lib.so.2 and then recreate the lib.so as a relative symlink
|
|
# to the lib.so.2
|
|
create_links libtbbmalloc_proxy
|
|
create_links libtbbmalloc
|
|
create_links libtbb
|
|
cp $(pwd)/build/BUILDPREFIX_release/lib*.a ${MASON_PREFIX}/lib/
|
|
fi
|
|
cp -r $(pwd)/include/tbb ${MASON_PREFIX}/include/
|
|
touch ${MASON_PREFIX}/bin/tbb
|
|
}
|
|
|
|
function mason_cflags {
|
|
echo "-I${MASON_PREFIX}/include"
|
|
}
|
|
|
|
function mason_static_libs {
|
|
echo ${MASON_PREFIX}/lib/libtbb.a
|
|
}
|
|
|
|
function mason_ldflags {
|
|
echo "-L${MASON_PREFIX}/lib -ltbb"
|
|
}
|
|
|
|
function mason_clean {
|
|
make clean
|
|
}
|
|
|
|
mason_run "$@"
|