6ea2a27f90
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>
56 lines
2.1 KiB
Plaintext
56 lines
2.1 KiB
Plaintext
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).
|
|
#
|
|
# In addition to this, on some architectures libunwind requires the
|
|
# *context() function from the C library, which are only available on
|
|
# certain architectures in uClibc, and not available at all on
|
|
# musl. But on some other architectures, libunwind works without using
|
|
# the *context() functions, which allows it to be built with musl.
|
|
config BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS
|
|
bool
|
|
default y if BR2_TOOLCHAIN_USES_GLIBC && \
|
|
(BR2_ARM_CPU_HAS_ARM || BR2_aarch64 || BR2_mips || BR2_mipsel || \
|
|
BR2_mips64 || BR2_mips64el || BR2_powerpc || BR2_sh || \
|
|
BR2_i386 || BR2_x86_64)
|
|
default y if BR2_TOOLCHAIN_USES_UCLIBC && \
|
|
(BR2_ARM_CPU_HAS_ARM || BR2_mips || BR2_mipsel || \
|
|
BR2_mips64 || BR2_mips64el || BR2_x86_64)
|
|
default y if BR2_TOOLCHAIN_USES_MUSL && \
|
|
(!BR2_PACKAGE_LIBUNWIND_MUSL_CONTEXT_REQUIRED || \
|
|
BR2_PACKAGE_LIBUCONTEXT_ARCH_SUPPORTS)
|
|
|
|
config BR2_PACKAGE_LIBUNWIND
|
|
bool "libunwind"
|
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
|
depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS
|
|
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11 atomics
|
|
# 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.
|
|
|
|
http://www.nongnu.org/libunwind/index.html
|
|
|
|
comment "libunwind needs a toolchain w/ threads, dynamic library, gcc >= 4.9"
|
|
depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS
|
|
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
|
|
!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
|