This is needed to build boost asio as a shared library rather than a header-only library, which is needed to save memory.
This can be enabled by adding `PACKAGECONFIG:append = " asio-shared"` to `boost_%.bbappend`. Signed-off-by: Gustav Lindberg <[email protected]> --- meta/recipes-support/boost/boost.inc | 25 +++++++++++++++++++ .../boost/boost/boost_asio.cpp | 1 + 2 files changed, 26 insertions(+) create mode 100644 meta/recipes-support/boost/boost/boost_asio.cpp diff --git a/meta/recipes-support/boost/boost.inc b/meta/recipes-support/boost/boost.inc index 64a57ddfb2..0267d8e819 100644 --- a/meta/recipes-support/boost/boost.inc +++ b/meta/recipes-support/boost/boost.inc @@ -16,6 +16,7 @@ do_configure[cleandirs] = "${B}" BOOST_LIBS = "\ atomic \ + asio \ charconv \ chrono \ container \ @@ -51,11 +52,14 @@ BOOST_LIBS = "\ # optional libraries PACKAGECONFIG ??= "locale python" +PACKAGECONFIG[asio-shared] = ",," PACKAGECONFIG[locale] = ",,icu" PACKAGECONFIG[graph_parallel] = ",,,boost-mpi mpich" PACKAGECONFIG[mpi] = ",,mpich" PACKAGECONFIG[python] = ",,python3" +SRC_URI:append = " ${@bb.utils.contains('PACKAGECONFIG', 'asio-shared', 'file://boost_asio.cpp', '', d)}" + inherit python3-dir PYTHON_ROOT = "${STAGING_DIR_HOST}/${prefix}" @@ -198,6 +202,20 @@ do_compile() { --debug-configuration } +do_compile:append() { + if ${@bb.utils.contains('PACKAGECONFIG', 'asio-shared', 'true', 'false', d)}; then + ${CXX} ${CPPFLAGS} ${CXXFLAGS} \ + -DBOOST_ASIO_DYN_LINK=1 \ + -I${S} \ + -fPIC \ + -shared \ + -Wl,-soname,libboost_asio.so.${PV} \ + ${UNPACKDIR}/boost_asio.cpp \ + ${LDFLAGS} \ + -o ${B}/libboost_asio.so.${PV} + fi +} + do_install() { cd ${S} b2 ${BJAM_OPTS} \ @@ -220,4 +238,11 @@ do_install() { } +do_install:append() { + if ${@bb.utils.contains('PACKAGECONFIG', 'asio-shared', 'true', 'false', d)}; then + install -Dm 0755 ${B}/libboost_asio.so.${PV} ${D}${libdir}/libboost_asio.so.${PV} + ln -sf libboost_asio.so.${PV} ${D}${libdir}/libboost_asio.so + fi +} + BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-support/boost/boost/boost_asio.cpp b/meta/recipes-support/boost/boost/boost_asio.cpp new file mode 100644 index 0000000000..eb3b7262c3 --- /dev/null +++ b/meta/recipes-support/boost/boost/boost_asio.cpp @@ -0,0 +1 @@ +#include <boost/asio/impl/src.hpp> \ No newline at end of file -- 2.43.0 Rename `asio` packageconfig flag to `asio-shared` and include asio in BOOST_LIBS unconditionally. > No custom compiler executions please. Building a shared library should > be done by the boost build system itself, and enabled via a flag to it > during do_configure (e.g. via PACKAGECONFIG_CONFARGS or BJAM_EXTRA). > You probably need to patch boost to do this, and send the needed patch > upstream. I spent a day trying to get that to work, but it doesn't seem to be possible. Everything I tried either breaks the header-only version or doesn't build the shared library.
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#245089): https://lists.openembedded.org/g/openembedded-core/message/245089 Mute This Topic: https://lists.openembedded.org/mt/121083580/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
