#!/usr/bin/env bash BOOST_VERSION1="1.59.0" BOOST_VERSION2="1_59_0" BOOST_LIBRARY="regex" BOOST_TOOLSET="clang" BOOST_ARCH="x86" MASON_NAME=boost_libeverything MASON_VERSION=1.59.0 # this boost package has multiple libraries to we # reference this empty file as a placeholder for all of them MASON_LIB_FILE=lib/libboost_placeholder.txt . ${MASON_DIR}/mason.sh function mason_load_source { mason_download \ http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.bz2 \ ff2e48f4d7e3c4b393d41e07a2f5d923b990967d export MASON_BUILD_PATH=${MASON_ROOT}/.build/boost_${BOOST_VERSION2} mason_extract_tar_bz2 } function gen_config() { echo "using $1 : : $(which $2)" > user-config.jam if [[ "${AR:-false}" != false ]] || [[ "${RANLIB:-false}" != false ]]; then echo ' : ' >> user-config.jam if [[ "${AR:-false}" != false ]]; then echo "${AR} " >> user-config.jam fi if [[ "${RANLIB:-false}" != false ]]; then echo "${RANLIB} " >> user-config.jam fi fi echo ' ;' >> user-config.jam } function mason_prepare_compile { ${MASON_DIR}/mason install icu 55.1 MASON_ICU=$(${MASON_DIR}/mason prefix icu 55.1) BOOST_LDFLAGS="-L${MASON_ICU}/lib -licuuc -licui18n -licudata" } function write_python_config() { # usage: # write_python_config PYTHON_VERSION=$2 # note: apple pythons need '/System' PYTHON_BASE=$3 # note: python 3 uses 'm' PYTHON_VARIANT=$4 if [[ ${UNAME} == 'Darwin' ]]; then echo " using python : ${PYTHON_VERSION} # version : ${PYTHON_BASE}/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}${PYTHON_VARIANT} # cmd-or-prefix : ${PYTHON_BASE}/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}${PYTHON_VARIANT} # includes : ${PYTHON_BASE}/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config${PYTHON_VARIANT} # a lib actually symlink : ${BOOST_TOOLSET} # condition ; " >> $1 else if [[ ${UNAME} == 'FreeBSD' ]]; then echo " using python : ${PYTHON_VERSION} # version : /usr/local/bin/python${PYTHON_VERSION}${PYTHON_VARIANT} # cmd-or-prefix : /usr/local/include/python${PYTHON_VERSION} # includes : /usr/local/lib/python${PYTHON_VERSION}/config${PYTHON_VARIANT} : ${BOOST_TOOLSET} # condition ; " >> $1 else echo " using python : ${PYTHON_VERSION} # version : /usr/bin/python${PYTHON_VERSION}${PYTHON_VARIANT} # cmd-or-prefix : /usr/include/python${PYTHON_VERSION} # includes : /usr/lib/python${PYTHON_VERSION}/config${PYTHON_VARIANT} : ${BOOST_TOOLSET} # condition ; " >> $1 fi fi } function mason_compile { if [[ -f ../../../patch.diff ]]; then patch -N -p0 < ../../../patch.diff else # patch to workaround crashes in python.input # https://github.com/mapnik/mapnik/issues/1968 mason_step "Loading patch 'https://github.com/mapbox/mason/blob/${MASON_SLUG}/patch.diff'..." curl --retry 3 -s -f -# -L \ https://raw.githubusercontent.com/mapbox/mason/${MASON_SLUG}/patch.diff \ -O || (mason_error "Could not find patch for ${MASON_SLUG}" && exit 1) patch -N -p0 < ./patch.diff fi gen_config ${BOOST_TOOLSET} clang++ if [[ ! -f ./b2 ]] ; then ./bootstrap.sh fi CXXFLAGS="${CXXFLAGS} -fvisibility=hidden" ./b2 \ --prefix=${MASON_PREFIX} \ -j${MASON_CONCURRENCY} \ -sHAVE_ICU=1 -sICU_PATH=${MASON_ICU} \ linkflags="${LDFLAGS:-" "} ${BOOST_LDFLAGS}" \ cxxflags="${CXXFLAGS:-" "}" \ -d0 \ --ignore-site-config --user-config=user-config.jam \ architecture="${BOOST_ARCH}" \ toolset="${BOOST_TOOLSET}" \ variant=release \ install mkdir -p ${MASON_PREFIX}/lib/ touch ${MASON_PREFIX}/lib/libboost_placeholder.txt } function mason_ldflags { : } function mason_clean { make clean } mason_run "$@"