diff options
Diffstat (limited to 'import-layers/yocto-poky/meta/recipes-support/boost')
8 files changed, 409 insertions, 0 deletions
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/bjam-native_1.60.0.bb b/import-layers/yocto-poky/meta/recipes-support/boost/bjam-native_1.60.0.bb new file mode 100644 index 000000000..32646d707 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-support/boost/bjam-native_1.60.0.bb @@ -0,0 +1,18 @@ +include boost-${PV}.inc + +SUMMARY = "Portable Boost.Jam build tool for boost" +SECTION = "devel" + +inherit native + +SRC_URI += "file://bjam-native-build-bjam.debug.patch" + +do_compile() { + ./bootstrap.sh --with-toolset=gcc +} + +do_install() { + install -d ${D}${bindir}/ + # install unstripped version for bjam + install -c -m 755 bjam.debug ${D}${bindir}/bjam +} diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost-1.60.0.inc b/import-layers/yocto-poky/meta/recipes-support/boost/boost-1.60.0.inc new file mode 100644 index 000000000..a38693e25 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost-1.60.0.inc @@ -0,0 +1,19 @@ +# The Boost web site provides free peer-reviewed portable +# C++ source libraries. The emphasis is on libraries which +# work well with the C++ Standard Library. The libraries are +# intended to be widely useful, and are in regular use by +# thousands of programmers across a broad spectrum of applications. +HOMEPAGE = "http://www.boost.org/" +LICENSE = "BSL-1.0 & MIT & Python-2.0" +LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c" + +BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}" +BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}" +BOOST_P = "boost_${BOOST_VER}" + +SRC_URI = "${SOURCEFORGE_MIRROR}/boost/${BOOST_P}.tar.bz2" + +SRC_URI[md5sum] = "65a840e1a0b13a558ff19eeb2c4f0cbe" +SRC_URI[sha256sum] = "686affff989ac2488f79a97b9479efb9f2abae035b5ed4d8226de6857933fd3b" + +S = "${WORKDIR}/${BOOST_P}" diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc b/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc new file mode 100644 index 000000000..982446c06 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc @@ -0,0 +1,195 @@ +SUMMARY = "Free peer-reviewed portable C++ source libraries" +SECTION = "libs" +DEPENDS = "bjam-native zlib bzip2" + +ARM_INSTRUCTION_SET_armv4 = "arm" +ARM_INSTRUCTION_SET_armv5 = "arm" + +BOOST_LIBS = "\ + atomic \ + chrono \ + date_time \ + filesystem \ + graph \ + iostreams \ + log \ + program_options \ + random \ + regex \ + serialization \ + signals \ + system \ + timer \ + test \ + thread \ + " + +# optional boost-python library +PACKAGECONFIG ??= "" +PACKAGECONFIG[python] = ",,python python3" +BOOST_LIBS += "${@bb.utils.contains('PACKAGECONFIG', 'python', 'python python3', '', d)}" +inherit python-dir +PYTHON_ROOT = "${STAGING_DIR_HOST}/${prefix}" + +# Make a package for each library, plus -dev +PACKAGES = "${PN}-dbg ${BOOST_PACKAGES}" +python __anonymous () { + packages = [] + extras = [] + for lib in d.getVar('BOOST_LIBS', True).split( ): + # BJAM does not know '--with-python3' (only --with-python) + if lib != "python3": + extras.append("--with-%s" % lib) + pkg = "boost-%s" % lib.replace("_", "-") + packages.append(pkg) + if lib == "python": + # special: python*.so matches python3.so !! + if not d.getVar("FILES_%s" % pkg, True): + d.setVar("FILES_%s" % pkg, "${libdir}/libboost_%s.so.*" % lib) + else: + if not d.getVar("FILES_%s" % pkg, True): + d.setVar("FILES_%s" % pkg, "${libdir}/libboost_%s*.so.*" % lib) + d.setVar("BOOST_PACKAGES", " ".join(packages)) + d.setVar("BJAM_EXTRA", " ".join(extras)) +} + +# Override the contents of specific packages +FILES_boost-serialization = "${libdir}/libboost_serialization*.so.* \ + ${libdir}/libboost_wserialization*.so.*" +FILES_boost-test = "${libdir}/libboost_prg_exec_monitor*.so.* \ + ${libdir}/libboost_unit_test_framework*.so.*" + +# -dev last to pick up the remaining stuff +PACKAGES += "${PN}-dev ${PN}-staticdev" +FILES_${PN} = "" +FILES_${PN}-dev = "${includedir} ${libdir}/libboost_*.so" +FILES_${PN}-staticdev = "${libdir}/libboost_*.a" + +# "boost" is a metapackage which pulls in all boost librabries +PACKAGES += "${PN}" +RRECOMMENDS_${PN} += "${BOOST_PACKAGES}" +RRECOMMENDS_${PN}_class-native = "" +ALLOW_EMPTY_${PN} = "1" + +# to avoid GNU_HASH QA errors added LDFLAGS to ARCH; a little bit dirty but at least it works +TARGET_CC_ARCH += "${LDFLAGS}" + +# Oh yippee, a new build system, it's sooo cooool I could eat my own +# foot. inlining=on lets the compiler choose, I think. At least this +# stuff is documented... +# NOTE: if you leave <debug-symbols>on then in a debug build the build sys +# objcopy will be invoked, and that won't work. Building debug apparently +# requires hacking gcc-tools.jam +# +# Sometimes I wake up screaming. Famous figures are gathered in the nightmare, +# Steve Bourne, Larry Wall, the whole of the ANSI C committee. They're just +# standing there, waiting, but the truely terrifying thing is what they carry +# in their hands. At first sight each seems to bear the same thing, but it is +# not so for the forms in their grasp are ever so slightly different one from +# the other. Each is twisted in some grotesque way from the other to make each +# an unspeakable perversion impossible to perceive without the onset of madness. +# True insanity awaits anyone who perceives all of these horrors together. +# +# Quotation marks, there might be an easier way to do this, but I can't find +# it. The problem is that the user.hpp configuration file must receive a +# pre-processor macro defined as the appropriate string - complete with "'s +# around it. (<> is a possibility here but the danger to that is that the +# failure case interprets the < and > as shell redirections, creating +# random files in the source tree.) +# +#bjam: '-DBOOST_PLATFORM_CONFIG=\"config\"' +#do_compile: '-sGCC=... '"'-DBOOST_PLATFORM_CONFIG=\"config\"'" +SQD = '"' +EQD = '\"' +#boost.bb: "... '-sGCC=... '${SQD}'-DBOOST_PLATFORM_CONFIG=${EQD}config${EQD}'${SQD} ..." +BJAM_CONF = "${SQD}'-DBOOST_PLATFORM_CONFIG=${EQD}boost/config/platform/${TARGET_OS}.hpp${EQD}'${SQD}" + +BJAM_TOOLS = "--ignore-site-config \ + '-sTOOLS=gcc' \ + '-sGCC=${CC} '${BJAM_CONF} \ + '-sGXX=${CXX} '${BJAM_CONF} \ + '-sGCC_INCLUDE_DIRECTORY=${STAGING_INCDIR}' \ + '-sGCC_STDLIB_DIRECTORY=${STAGING_LIBDIR}' \ + '-sBUILD=release <optimization>space <threading>multi <inlining>on <debug-symbols>off' \ + '-sPYTHON_ROOT=${PYTHON_ROOT}' \ + '--layout=system' \ + " + +# use PARALLEL_MAKE to speed up the build, but limit it by -j 64, greater parallelism causes bjam to segfault or to ignore -j +# https://svn.boost.org/trac/boost/ticket/7634 +def get_boost_parallel_make(d): + pm = d.getVar('PARALLEL_MAKE', True) + if pm: + # look for '-j' and throw other options (e.g. '-l') away + # because they might have different meaning in bjam + pm = pm.split() + while pm: + v = None + opt = pm.pop(0) + if opt == '-j': + v = pm.pop(0) + elif opt.startswith('-j'): + v = opt[2:].strip() + else: + v = None + + if v: + v = min(64, int(v)) + return '-j' + str(v) + + return "" + +BOOST_PARALLEL_MAKE = "${@get_boost_parallel_make(d)}" +BJAM_OPTS = '${BOOST_PARALLEL_MAKE} -d+2 -q \ + ${BJAM_TOOLS} \ + -sBOOST_BUILD_USER_CONFIG=${S}/tools/build/example/user-config.jam \ + --build-dir=${S}/${TARGET_SYS} \ + --disable-icu \ + ${BJAM_EXTRA}' + +# Native compilation of bzip2 isn't working +BJAM_OPTS_append_class-native = ' -sNO_BZIP2=1' + +do_boostconfig() { + cp -f boost/config/platform/linux.hpp boost/config/platform/linux-gnueabi.hpp + + # D2194:Fixing the failure of "error: duplicate initialization of gcc with the following parameters" during compilation. + sed -i "/^using gcc : 4.3.1/d" ${S}/tools/build/example/user-config.jam + sed -i "/^using python : ${PYTHON_BASEVERSION}"/d ${S}/tools/build/example/user-config.jam + echo 'using gcc : 4.3.1 : ${CXX} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;' >> ${S}/tools/build/example/user-config.jam + echo "using python : ${PYTHON_BASEVERSION} : : ${STAGING_INCDIR}/python${PYTHON_BASEVERSION} ;" >> ${S}/tools/build/example/user-config.jam + echo "using python : 3.5 : : ${STAGING_INCDIR}/python3.5m ;" >> ${S}/tools/build/example/user-config.jam + + CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" ./bootstrap.sh --with-bjam=bjam --with-toolset=gcc --with-python-root=${PYTHON_ROOT} + sed -i '/^using python/d' project-config.jam +} + +do_boostconfig[dirs] = "${S}" +addtask do_boostconfig after do_patch before do_configure + +do_compile() { + set -ex + bjam ${BJAM_OPTS} --prefix=${prefix} \ + --exec-prefix=${exec_prefix} \ + --libdir=${libdir} \ + --includedir=${includedir} +} + +do_install() { + set -ex + bjam ${BJAM_OPTS} \ + --libdir=${D}${libdir} \ + --includedir=${D}${includedir} \ + install + for lib in ${BOOST_LIBS}; do + if [ -e ${D}${libdir}/libboost_${lib}.a ]; then + ln -s libboost_${lib}.a ${D}${libdir}/libboost_${lib}-mt.a + fi + if [ -e ${D}${libdir}/libboost_${lib}.so ]; then + ln -s libboost_${lib}.so ${D}${libdir}/libboost_${lib}-mt.so + fi + done + +} + +BBCLASSEXTEND = "native nativesdk" diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/0001-Do-not-qualify-fenv.h-names-that-might-be-macros.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0001-Do-not-qualify-fenv.h-names-that-might-be-macros.patch new file mode 100644 index 000000000..df7e71fea --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost/0001-Do-not-qualify-fenv.h-names-that-might-be-macros.patch @@ -0,0 +1,45 @@ +From f50e7bc9fed323c5705c0ed992c03e80eeec1dd6 Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely <jwakely@redhat.com> +Date: Mon, 14 Sep 2015 15:05:24 +0100 +Subject: [PATCH] Do not qualify <fenv.h> names that might be macros. + +The patch was imported from the boost-test git repository +(https://github.com/boostorg/test) as of commit id +f50e7bc9fed323c5705c0ed992c03e80eeec1dd6. + +Upstream-Status: Accepted [commit f50e7bc9fed in develop branch] + +Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de> +--- + include/boost/test/impl/execution_monitor.ipp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/include/boost/test/impl/execution_monitor.ipp b/include/boost/test/impl/execution_monitor.ipp +index b3e873e..a7bdce2 100644 +--- a/include/boost/test/impl/execution_monitor.ipp ++++ b/include/boost/test/impl/execution_monitor.ipp +@@ -1380,8 +1380,8 @@ enable( unsigned mask ) + + return ~old_cw & BOOST_FPE_ALL; + #elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H) +- ::feclearexcept(BOOST_FPE_ALL); +- int res = ::feenableexcept( mask ); ++ feclearexcept(BOOST_FPE_ALL); ++ int res = feenableexcept( mask ); + return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res; + #else + /* Not Implemented */ +@@ -1417,8 +1417,8 @@ disable( unsigned mask ) + + return ~old_cw & BOOST_FPE_ALL; + #elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H) +- ::feclearexcept(BOOST_FPE_ALL); +- int res = ::fedisableexcept( mask ); ++ feclearexcept(BOOST_FPE_ALL); ++ int res = fedisableexcept( mask ); + return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res; + #else + /* Not Implemented */ +-- +1.9.1 + diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/arm-intrinsics.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/arm-intrinsics.patch new file mode 100644 index 000000000..fe85c69a8 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost/arm-intrinsics.patch @@ -0,0 +1,55 @@ +Upstream-Status: Backport + +8/17/2010 - rebased to 1.44 by Qing He <qing.he@intel.com> + +diff --git a/boost/smart_ptr/detail/atomic_count_sync.hpp b/boost/smart_ptr/detail/atomic_count_sync.hpp +index b6359b5..78b1cc2 100644 +--- a/boost/smart_ptr/detail/atomic_count_sync.hpp ++++ b/boost/smart_ptr/detail/atomic_count_sync.hpp +@@ -33,17 +33,46 @@ public: + + long operator++() + { ++#ifdef __ARM_ARCH_7A__ ++ int v1, tmp; ++ asm volatile ("1: \n\t" ++ "ldrex %0, %1 \n\t" ++ "add %0 ,%0, #1 \n\t" ++ "strex %2, %0, %1 \n\t" ++ "cmp %2, #0 \n\t" ++ "bne 1b \n\t" ++ : "=&r" (v1), "+Q"(value_), "=&r"(tmp) ++ ); ++#else + return __sync_add_and_fetch( &value_, 1 ); ++#endif + } + + long operator--() + { ++#ifdef __ARM_ARCH_7A__ ++ int v1, tmp; ++ asm volatile ("1: \n\t" ++ "ldrex %0, %1 \n\t" ++ "sub %0 ,%0, #1 \n\t" ++ "strex %2, %0, %1 \n\t" ++ "cmp %2, #0 \n\t" ++ "bne 1b \n\t" ++ : "=&r" (v1), "+Q"(value_), "=&r"(tmp) ++ ); ++ return value_; ++#else + return __sync_add_and_fetch( &value_, -1 ); ++#endif + } + + operator long() const + { ++#if __ARM_ARCH_7A__ ++ return value_; ++#else + return __sync_fetch_and_add( &value_, 0 ); ++#endif + } + + private: diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost/consider-hardfp.patch b/import-layers/yocto-poky/meta/recipes-support/boost/boost/consider-hardfp.patch new file mode 100644 index 000000000..66808a69d --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost/consider-hardfp.patch @@ -0,0 +1,19 @@ +When using soft-float, on ARM we should not expect the FE_* symbols + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Pending + +Index: boost_1_60_0/boost/test/execution_monitor.hpp +=================================================================== +--- boost_1_60_0.orig/boost/test/execution_monitor.hpp ++++ boost_1_60_0/boost/test/execution_monitor.hpp +@@ -484,7 +484,8 @@ enum masks { + BOOST_FPE_UNDERFLOW = EM_UNDERFLOW|EM_DENORMAL, + + BOOST_FPE_ALL = MCW_EM, +-#elif defined(BOOST_NO_FENV_H) || defined(BOOST_CLANG) ++#elif defined(BOOST_NO_FENV_H) || defined(BOOST_CLANG) \ ++ || defined(__ARM_PCS) + BOOST_FPE_ALL = 1, + #else + BOOST_FPE_DIVBYZERO = FE_DIVBYZERO, diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost_1.60.0.bb b/import-layers/yocto-poky/meta/recipes-support/boost/boost_1.60.0.bb new file mode 100644 index 000000000..4d824c85b --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost_1.60.0.bb @@ -0,0 +1,8 @@ +include boost-${PV}.inc +include boost.inc + +SRC_URI += "\ + file://arm-intrinsics.patch \ + file://0001-Do-not-qualify-fenv.h-names-that-might-be-macros.patch;striplevel=2 \ + file://consider-hardfp.patch \ +" diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/files/bjam-native-build-bjam.debug.patch b/import-layers/yocto-poky/meta/recipes-support/boost/files/bjam-native-build-bjam.debug.patch new file mode 100644 index 000000000..9f8b7eac0 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-support/boost/files/bjam-native-build-bjam.debug.patch @@ -0,0 +1,50 @@ +From 619ada314ab26c0c9cbfe5702cd9c0caa8f6415a Mon Sep 17 00:00:00 2001 +From: Wenzong Fan <wenzong.fan@windriver.com> +Date: Mon, 3 Aug 2015 17:12:33 +0800 +Subject: [PATCH] bjam-native: build bjam.debug + +bjam is stripped by default, this causes QA warning while stripping it +from do_populate_sysroot(): + + WARNING: File '.../tmp/sysroots/x86_64-linux/usr/bin/bjam' \ + from bjam-native was already stripped, \ + this will prevent future debugging! + +The JAM scripts allow to build unstripped version with '--debug'. Just +build and install the bjam.debug to stop bjam from being stripped in +compile step. + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> +--- + bootstrap.sh | 1 + + tools/build/src/engine/build.sh | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bootstrap.sh b/bootstrap.sh +index 98cf88b..54690aa 100755 +--- a/bootstrap.sh ++++ b/bootstrap.sh +@@ -228,6 +228,7 @@ if test "x$BJAM" = x; then + echo "tools/build/src/engine/$arch/b2" + cp "$BJAM" . + cp "$my_dir/tools/build/src/engine/$arch/bjam" . ++ cp "$my_dir/tools/build/src/engine/${arch}.debug/bjam" bjam.debug + + fi + +diff --git a/tools/build/src/engine/build.sh b/tools/build/src/engine/build.sh +index 6dbc706..c69fdc7 100755 +--- a/tools/build/src/engine/build.sh ++++ b/tools/build/src/engine/build.sh +@@ -312,5 +312,5 @@ if test -x "./bootstrap/jam0" ; then + if test "${BJAM_UPDATE}" != "update" ; then + echo_run ./bootstrap/jam0 -f build.jam --toolset=$BOOST_JAM_TOOLSET "--toolset-root=$BOOST_JAM_TOOLSET_ROOT" "$@" clean + fi +- echo_run ./bootstrap/jam0 -f build.jam --toolset=$BOOST_JAM_TOOLSET "--toolset-root=$BOOST_JAM_TOOLSET_ROOT" "$@" ++ echo_run ./bootstrap/jam0 -f build.jam --toolset=$BOOST_JAM_TOOLSET "--toolset-root=$BOOST_JAM_TOOLSET_ROOT" "$@" --debug + fi +-- +1.9.1 + |