* [PATCHv7] boost: Add support for building boost-asio as a shared library
@ 2026-09-03 9:45 Gustav Lindberg
2026-09-03 9:58 ` [OE-core] " Alexander Kanavin
0 siblings, 1 reply; 2+ messages in thread
From: Gustav Lindberg @ 2026-09-03 9:45 UTC (permalink / raw)
To: openembedded-core; +Cc: Gustav Lindberg
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"` to
`boost_%.bbappend`.
Signed-off-by: Gustav Lindberg <gustali@axis.com>
---
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..4ac3f7af5b 100644
--- a/meta/recipes-support/boost/boost.inc
+++ b/meta/recipes-support/boost/boost.inc
@@ -44,6 +44,7 @@ BOOST_LIBS = "\
type_erasure \
url \
wave \
+ ${@bb.utils.contains('PACKAGECONFIG', 'asio', 'asio', '', d)} \
${@bb.utils.filter('PACKAGECONFIG', 'locale python', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'graph_parallel', 'graph_parallel mpi', \
bb.utils.filter('PACKAGECONFIG', 'mpi', d), d)} \
@@ -51,11 +52,14 @@ BOOST_LIBS = "\
# optional libraries
PACKAGECONFIG ??= "locale python"
+PACKAGECONFIG[asio] = ",,"
PACKAGECONFIG[locale] = ",,icu"
PACKAGECONFIG[graph_parallel] = ",,,boost-mpi mpich"
PACKAGECONFIG[mpi] = ",,mpich"
PACKAGECONFIG[python] = ",,python3"
+SRC_URI:append = " ${@bb.utils.contains('PACKAGECONFIG', 'asio', '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', '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', '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
Move the shared library build to the existing boost recipe, and allow enabling it with a PACKAGECONFIG
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [OE-core] [PATCHv7] boost: Add support for building boost-asio as a shared library
2026-09-03 9:45 [PATCHv7] boost: Add support for building boost-asio as a shared library Gustav Lindberg
@ 2026-09-03 9:58 ` Alexander Kanavin
0 siblings, 0 replies; 2+ messages in thread
From: Alexander Kanavin @ 2026-09-03 9:58 UTC (permalink / raw)
To: gustali; +Cc: openembedded-core
On Thu, 3 Sept 2026 at 11:45, Gustav Lindberg via
lists.openembedded.org <gustali=axis.com@lists.openembedded.org>
wrote:
> --- a/meta/recipes-support/boost/boost.inc
> +++ b/meta/recipes-support/boost/boost.inc
> @@ -44,6 +44,7 @@ BOOST_LIBS = "\
> type_erasure \
> url \
> wave \
> + ${@bb.utils.contains('PACKAGECONFIG', 'asio', 'asio', '', d)} \
Adding asio to BOOST_LIBS enables asio as a header-only install? Then
it should not be subject to PACKAGECONFIG, it can simply be added
unconditionally like all other libraries.
> +PACKAGECONFIG[asio] = ",,"
Then this should be named 'asio-shared' as it is also used to build
and install a shared library.
> +do_compile:append() {
> + if ${@bb.utils.contains('PACKAGECONFIG', 'asio', '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
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.
> +do_install:append() {
> + if ${@bb.utils.contains('PACKAGECONFIG', 'asio', '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
> +}
Same here: no custom installation, boost itself should do it if it was enabled.
Alex
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-03 9:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-03 9:45 [PATCHv7] boost: Add support for building boost-asio as a shared library Gustav Lindberg
2026-09-03 9:58 ` [OE-core] " Alexander Kanavin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.