# $Id$ PNAME="boost" PVER="1.56.0" PBUILD="r1" SPLIT_PACKAGES=" boost-system boost-regex boost-atomic boost-chrono boost-context boost-coroutine boost-date-time boost-filesystem boost-graph boost-iostreams boost-locale boost-log boost-math boost-program-options boost-python boost-random boost-serialization boost-signals boost-test boost-thread boost-timer boost-wave boost-jam boost-build boost boost-doc boost-examples" PCAT="dev-libs" HOMEPAGE="http://www.boost.org/" COMMON_DEPEND=">= sys-libs/libstdc++-4.8" BZIP_DEPEND=">= app-arch/bzip2-1.0.6" ZLIB_DEPEND=">= sys-libs/zlib-1.2" PYTHON_DEPEND=">= dev-lang/python-2.7" ICU_DEPEND=">= dev-libs/icu-54" SDEPEND="${COMMON_DEPEND} ${BZIP_DEPEND} ${ZLIB_DEPEND} ${PYTHON_DEPEND} ${ICU_DEPEND}" SRCFILE="${PNAME}_$(echo ${PVER} | sed "s:\.:_:g").tar.bz2" SRCDIR="${BUILDDIR}/${PNAME}_$(echo ${PVER} | sed "s:\.:_:g")" sminclude python mbuild mtools msetfeature "!check" SRC_URI=( sourceforge://${PNAME}/${SRCFILE} mirror://${PNAME}/${SRCFILE} ) UP2SEPERATOR="_" UP2DATE="updatecmd_sourceforge ${PNAME} | sed 's:_:.:g'" # install_boost_lib ${name} install_boost_lib() { local name="$1" local libname [[ -z ${name} ]] && die "no name given" # replace all - with _ libname="${name//-/_}" minstalldir /usr/$(mlibdir) || die # install normal libs if tehy exist if [ -f stage/lib/lib${libname}.so.${PVER} ] then minstallexec stage/lib/lib${libname}.so.${PVER} /usr/$(mlibdir) || die mlink lib${libname}.so.${PVER} /usr/$(mlibdir)/lib${libname}.so || die else echo -e "${COLYELLOW}No normal lib for '${libname}' found!${COLDEFAULT}" fi # install multithread libs if they exist if [ -f stage/lib/lib${libname}-mt.so.${PVER} ] then minstallexec stage/lib/lib${libname}-mt.so.${PVER} /usr/$(mlibdir) || die mlink lib${libname}-mt.so.${PVER} /usr/$(mlibdir)/lib${libname}-mt.so || die else echo -e "${COLYELLOW}No multithreading lib for '${libname}' found!${COLDEFAULT}" fi minstalldocs LICENSE_1_0.txt || die } split_info_boost-atomic() { DESCRIPTION="Run-Time component of boost atomic library." DEPEND="${COMMON_DEPEND}" } split_info_boost-chrono() { DESCRIPTION="Run-Time component of boost chrono library." DEPEND="${COMMON_DEPEND} == dev-libs/boost-system-${PVER}" } split_info_boost-context() { DESCRIPTION="Run-Time component of boost context library." DEPEND="${COMMON_DEPEND}" } split_info_boost-coroutine() { DESCRIPTION="Run-Time component of boost coroutine library." DEPEND="${COMMON_DEPEND}" } split_info_boost-date-time() { DESCRIPTION="Run-Time component of boost date-time library." DEPEND="${COMMON_DEPEND}" } split_info_boost-filesystem() { DESCRIPTION="Run-Time component of boost filesystem library." DEPEND="${COMMON_DEPEND} == dev-libs/boost-system-${PVER}" } split_info_boost-graph() { DESCRIPTION="Run-Time component of boost graph library." DEPEND="${COMMON_DEPEND} ${ICU_DEPEND} == dev-libs/boost-regex-${PVER}" } split_info_boost-iostreams() { DESCRIPTION="Run-Time component of boost iostreams library." DEPEND="${COMMON_DEPEND} ${BZIP_DEPEND} ${ZLIB_DEPEND}" } split_info_boost-locale() { DESCRIPTION="Run-Time component of boost locale library." DEPEND="${COMMON_DEPEND} ${ICU_DEPEND} == dev-libs/boost-system-${PVER} == dev-libs/boost-chrono-${PVER} == dev-libs/boost-thread-${PVER}" } split_info_boost-log() { DESCRIPTION="Run-Time component of boost log library." DEPEND="${COMMON_DEPEND}" } split_info_boost-math() { DESCRIPTION="Math functions for boost TR1/C99 library." DEPEND="${COMMON_DEPEND}" } split_info_boost-program-options() { DESCRIPTION="Run-Time component of boost program_options library." DEPEND="${COMMON_DEPEND}" } split_info_boost-python() { DESCRIPTION="Run-Time component of boost python library." DEPEND="${COMMON_DEPEND} ${PYTHON_DEPEND}" } split_info_boost-random() { DESCRIPTION="Run-Time component of boost random library." DEPEND="${COMMON_DEPEND}" } split_info_boost-regex() { DESCRIPTION="Run-Time component of boost regex library." DEPEND="${COMMON_DEPEND} ${ICU_DEPEND}" } split_info_boost-serialization() { DESCRIPTION="Run-Time component of boost serialization library." DEPEND="${COMMON_DEPEND}" } split_info_boost-signals() { DESCRIPTION="Run-Time component of boost signals and slots library." DEPEND="${COMMON_DEPEND}" } split_info_boost-system() { DESCRIPTION="Run-Time component of boost system support library." DEPEND="${COMMON_DEPEND}" } split_info_boost-test() { DESCRIPTION="Run-Time component of boost test library." DEPEND="${COMMON_DEPEND}" } split_info_boost-thread() { DESCRIPTION="Run-Time component of boost thead library." DEPEND="${COMMON_DEPEND} == dev-libs/boost-system-${PVER}" } split_info_boost-timer() { DESCRIPTION="Run-Time component of boost timer library." DEPEND="${COMMON_DEPEND} == dev-libs/boost-system-${PVER} == dev-libs/boost-chrono-${PVER}" } split_info_boost-wave() { DESCRIPTION="Run-Time component of boost C99/C++ pre-processing library." DEPEND="${COMMON_DEPEND} == dev-libs/boost-system-${PVER} == dev-libs/boost-chrono-${PVER} == dev-libs/boost-date-time-${PVER} == dev-libs/boost-filesystem-${PVER} == dev-libs/boost-thread-${PVER}" } split_info_boost-doc() { DESCRIPTION="HTML documentation for the Boost C++ libraries." DEPEND="" } split_info_boost-examples() { DESCRIPTION="Source examples for the Boost C++ libraries" DEPEND=">= dev-libs/boost-${PVER}" } split_info_boost-jam() { PCAT="dev-util" DESCRIPTION="Boost.Jam is an alternative to make based on Jam." DEPEND="${COMMON_DEPEND}" } split_info_boost-build() { PCAT="dev-util" DESCRIPTION="Cross platform build system for C++ projects." DEPEND="== dev-util/boost-jam-${PVER}" } split_info_boost() { DESCRIPTION="Boost provides free peer-reviewed portable C++ source libraries." DEPEND="== dev-libs/boost-system-${PVER} == dev-libs/boost-regex-${PVER} == dev-libs/boost-atomic-${PVER} == dev-libs/boost-chrono-${PVER} == dev-libs/boost-context-${PVER} == dev-libs/boost-coroutine-${PVER} == dev-libs/boost-date-time-${PVER} == dev-libs/boost-filesystem-${PVER} == dev-libs/boost-graph-${PVER} == dev-libs/boost-iostreams-${PVER} == dev-libs/boost-locale-${PVER} == dev-libs/boost-log-${PVER} == dev-libs/boost-math-${PVER} == dev-libs/boost-program-options-${PVER} == dev-libs/boost-python-${PVER} == dev-libs/boost-random-${PVER} == dev-libs/boost-test-${PVER} == dev-libs/boost-signals-${PVER} == dev-libs/boost-test-${PVER} == dev-libs/boost-thread-${PVER} == dev-libs/boost-timer-${PVER} == dev-libs/boost-wave-${PVER} == dev-util/boost-jam-${PVER} == dev-util/boost-build-${PVER}" } src_compile() { # bjam builded with gcc-4.2 segfaults without '-fno-strict-aliasing' # see: http://svn.boost.org/trac/boost/ticket/977 export CFLAGS="${CFLAGS} -fno-strict-aliasing" export CXXFLAGS="${CXXFLAGS} -fno-strict-aliasing" # first build bjam (must use cc not gcc to use our modified cflags) cd ${SRCDIR}/tools/build/src/engine ./build.sh cc || die # find bjam exec local bjam=$(find ${SRCDIR}/tools/build/src/engine -name bjam -a -type f) # build bcp cd ${SRCDIR}/tools/bcp ${bjam} || die # build boost libraries # --layout=tagged will add the "-mt" suffix for multithreaded libraries # and installs includes in /usr/include/boost. # --layout=system no longer adds the -mt suffix for multi-threaded libs. cd ${SRCDIR} ${bjam} \ variant=release \ debug-symbols=off \ runtime-link=shared \ link=shared \ threading=multi \ python=$(mget-python-version) \ toolset=gcc \ --prefix=${BINDIR}/usr \ --layout=system \ || die # build pyste cd ${SRCDIR}/libs/python/pyste/install python_docompile || die } src_install_boost-atomic() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-chrono() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-context() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-coroutine() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-date-time() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-filesystem() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-graph() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-iostreams() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-locale() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-log() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die install_boost_lib "${PNAME}_setup" || die } src_install_boost-math() { cd ${SRCDIR} install_boost_lib "${PNAME}_c99" || die install_boost_lib "${PNAME}_c99f" || die install_boost_lib "${PNAME}_c99l" || die install_boost_lib "${PNAME}_tr1" || die install_boost_lib "${PNAME}_tr1f" || die install_boost_lib "${PNAME}_tr1l" || die } src_install_boost-program-options() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-python() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-random() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-regex() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-serialization() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die install_boost_lib "boost_wserialization" || die } src_install_boost-signals() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-system() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-test() { cd ${SRCDIR} install_boost_lib "boost_prg_exec_monitor" || die install_boost_lib "boost_unit_test_framework" || die } src_install_boost-thread() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-timer() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-wave() { cd ${SRCDIR} install_boost_lib "${PNAME}" || die } src_install_boost-jam() { cd ${SRCDIR} # find bjam exec local bjam=$(find ${SRCDIR}/tools/build/src/engine -name bjam -a -type f) minstallexec ${bjam} || die minstalldocs LICENSE_1_0.txt || die } src_install_boost-build() { cd ${SRCDIR} minstalldir /usr/share || die mcopy -a tools/build /usr/share/boost-build || die # cleanup things provided by other packages mdelete -r /usr/share/boost-build/doc || die mdelete -r /usr/share/boost-build/example || die # cleanup uneccessary stuff mdelete -r /usr/share/boost-build/debian || die mdelete -r /usr/share/boost-build/notes || die #mdelete /usr/share/boost-build/\*.txt || die minstalldocs LICENSE_1_0.txt || die #minstalldocs tools/build/*.txt || die minstalldocs tools/build/notes/*.txt || die } src_install_boost-doc() { cd ${SRCDIR} minstalldir /usr/share/doc || die mcopy -a doc/html /usr/share/doc/${PNAME}-${PVER} || die } src_install_boost-examples() { cd ${SRCDIR} minstalldir /usr/share/doc || die mcopy -a tools/build/example /usr/share/doc/${PNAME}-${PVER} || die minstalldocs LICENSE_1_0.txt || die } src_install_boost() { cd ${SRCDIR} # find bjam exec local bjam=$(find ${SRCDIR}/tools/build/src/engine -name bjam -a -type f) # install boost ${bjam} \ variant=release \ debug-symbols=off \ runtime-link=shared \ link=shared \ threading=multi \ python=$(mget-python-version) \ toolset=gcc \ --prefix=${BINDIR}/usr \ --libdir=${BINDIR}/usr/$(mlibdir) \ --layout=system \ install \ || die # install bcp executables minstallexec dist/bin/bcp || die # install pyste cd libs/python/pyste/install python_doinstall || die # install docs cd ${SRCDIR} minstalldocs LICENSE_1_0.txt README || die # cleanup things provided by other packages mdelete /usr/$(mlibdir)/libboost\*.so\* || die mdelete /usr/$(mlibdir)/libboost\*.a || die }