diff options
Diffstat (limited to 'import-layers/yocto-poky/meta/recipes-support/boost/boost.inc')
-rw-r--r-- | import-layers/yocto-poky/meta/recipes-support/boost/boost.inc | 53 |
1 files changed, 26 insertions, 27 deletions
diff --git a/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc b/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc index 1966d3d807..4ff70e399b 100644 --- a/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc +++ b/import-layers/yocto-poky/meta/recipes-support/boost/boost.inc @@ -42,16 +42,15 @@ PACKAGECONFIG ??= "locale" PACKAGECONFIG[locale] = ",,icu" PACKAGECONFIG[graph_parallel] = ",,,boost-mpi mpich" PACKAGECONFIG[mpi] = ",,mpich" -PACKAGECONFIG[python] = ",,python python3" +PACKAGECONFIG[python] = ",,python3" BOOST_LIBS += "\ - ${@bb.utils.contains('PACKAGECONFIG', 'locale', 'locale', '', d)} \ + ${@bb.utils.filter('PACKAGECONFIG', 'locale python', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'graph_parallel', 'graph_parallel mpi', \ - bb.utils.contains('PACKAGECONFIG', 'mpi', 'mpi', '', d), d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python python3', '', d)} \ + bb.utils.filter('PACKAGECONFIG', 'mpi', d), d)} \ " -inherit python-dir +inherit python3-dir PYTHON_ROOT = "${STAGING_DIR_HOST}/${prefix}" # Make a package for each library, plus -dev @@ -59,25 +58,17 @@ 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) + for lib in d.getVar('BOOST_LIBS').split(): + 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) + if not d.getVar("FILES_%s" % pkg): + 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_${PN}-graph = "${libdir}/libboost_graph.so.*" FILES_${PN}-graph_parallel = "${libdir}/libboost_graph_parallel.so.*" FILES_${PN}-locale = "${libdir}/libboost_locale.so.*" FILES_${PN}-mpi = "${libdir}/mpi.so ${libdir}/libboost_mpi*.so.*" @@ -88,15 +79,15 @@ FILES_boost-test = "${libdir}/libboost_prg_exec_monitor*.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}" +FILES_${PN} = "" +ALLOW_EMPTY_${PN} = "1" 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}" @@ -145,7 +136,7 @@ BJAM_TOOLS = "--ignore-site-config \ # 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) + pm = d.getVar('PARALLEL_MAKE') if pm: # look for '-j' and throw other options (e.g. '-l') away # because they might have different meaning in bjam @@ -177,34 +168,42 @@ BJAM_OPTS = '${BOOST_PARALLEL_MAKE} -d+2 -q \ # Native compilation of bzip2 isn't working BJAM_OPTS_append_class-native = ' -sNO_BZIP2=1' +# Adjust the build for x32 +BJAM_OPTS_append_linux-gnux32 = " abi=x32 address-model=64" + do_configure() { cp -f ${S}/boost/config/platform/linux.hpp ${S}/boost/config/platform/linux-gnueabi.hpp # D2194:Fixing the failure of "error: duplicate initialization of gcc with the following parameters" during compilation. rm -f ${WORKDIR}/user-config.jam echo 'using gcc : 4.3.1 : ${CXX} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;' >> ${WORKDIR}/user-config.jam - echo "using python : ${PYTHON_BASEVERSION} : : ${STAGING_INCDIR}/python${PYTHON_BASEVERSION} ;" >> ${WORKDIR}/user-config.jam - echo "using python : 3.5 : : ${STAGING_INCDIR}/python3.5m ;" >> ${WORKDIR}/user-config.jam + + # If we want Python then we need to tell Boost *exactly* where to find it + if ${@bb.utils.contains('BOOST_LIBS', 'python', 'true', 'false', d)}; then + echo "using python : ${PYTHON_BASEVERSION} : ${STAGING_DIR_HOST}${bindir}/python3 : ${STAGING_DIR_HOST}${includedir}/${PYTHON_DIR}${PYTHON_ABI} : ${STAGING_DIR_HOST}${libdir}/${PYTHON_DIR} ;" >> ${WORKDIR}/user-config.jam + fi if ${@bb.utils.contains('BOOST_LIBS', 'mpi', 'true', 'false', d)}; then echo "using mpi : : <find-shared-library>mpi ;" >> ${WORKDIR}/user-config.jam fi - CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" ./bootstrap.sh --with-bjam=bjam --with-toolset=gcc --with-python-root=${PYTHON_ROOT} - sed -i '/^using python/d' ${S}/project-config.jam + CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" ./bootstrap.sh --with-bjam=bjam --with-toolset=gcc + + # Boost can't be trusted to find Python on it's own, so remove any mention + # of it from the boost configuration + sed -i '/using python/d' ${S}/project-config.jam } do_compile() { - set -ex rm -rf ${S}/${TARGET_SYS} bjam ${BJAM_OPTS} --prefix=${prefix} \ --exec-prefix=${exec_prefix} \ --libdir=${libdir} \ - --includedir=${includedir} + --includedir=${includedir} \ + --debug-configuration } do_install() { - set -ex bjam ${BJAM_OPTS} \ --libdir=${D}${libdir} \ --includedir=${D}${includedir} \ |