diff --git a/package/libunwind/Config.in b/package/libunwind/Config.in index dfd0df30fa..08f7f879c9 100644 --- a/package/libunwind/Config.in +++ b/package/libunwind/Config.in @@ -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. diff --git a/package/libunwind/libunwind.mk b/package/libunwind/libunwind.mk index 9cd587d0a3..afc17f7b25 100644 --- a/package/libunwind/libunwind.mk +++ b/package/libunwind/libunwind.mk @@ -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))