package/libunwind: add libucontext support

We can expand the list of supported musl architectures by
letting libucontext provide required context API's.

Use the following table to determine which architectures require
libucontext for BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED:
https://github.com/libunwind/libunwind/tree/v1.6.2#libc-requirements

Enable BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS if we have
BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS or if context is not required
by checking for !BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED.

Select BR2_PACKAGE_LIBUCONTEXT when selecting BR2_PACKAGE_LIBUNWIND
if we have BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED.

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
This commit is contained in:
James Hilliard 2022-08-11 00:35:02 -06:00 committed by Arnout Vandecappelle
parent 3a6e9d2f3f
commit 6ea2a27f90
2 changed files with 22 additions and 1 deletions

View File

@ -1,3 +1,17 @@
config BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED
bool
default y
depends on !BR2_ARM_CPU_HAS_ARM
depends on !BR2_aarch64
depends on !BR2_aarch64_be
depends on !BR2_mips
depends on !BR2_mipsel
depends on !BR2_mips64
depends on !BR2_mips64el
depends on !BR2_riscv
depends on !BR2_x86_64
depends on BR2_TOOLCHAIN_USES_MUSL
# libunwind is only available for a certain subset of the
# architectures (as visible in the list of architectures supported
# with the glibc C library below).
@ -17,7 +31,8 @@ config BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS
(BR2_ARM_CPU_HAS_ARM || BR2_mips || BR2_mipsel || \
BR2_mips64 || BR2_mips64el || BR2_x86_64)
default y if BR2_TOOLCHAIN_USES_MUSL && \
(BR2_ARM_CPU_HAS_ARM || BR2_aarch64 || BR2_x86_64)
(!BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED || \
BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS)
config BR2_PACKAGE_LIBUNWIND
bool "libunwind"
@ -27,6 +42,8 @@ config BR2_PACKAGE_LIBUNWIND
# forcefully links against libgcc_s, only available in dynamic
# linking configurations
depends on !BR2_STATIC_LIBS
select BR2_PACKAGE_LIBUCONTEXT if BR2_TOOLCHAIN_USES_MUSL && \
BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED
help
C API to determine the call-chain of a program.

View File

@ -16,4 +16,8 @@ LIBUNWIND_CONF_OPTS = \
--disable-tests \
$(if $(BR2_INSTALL_LIBSTDCPP),--enable-cxx-exceptions,--disable-cxx-exceptions)
ifeq ($(BR2_PACKAGE_LIBUCONTEXT),y)
LIBUNWIND_DEPENDENCIES += libucontext
endif
$(eval $(autotools-package))