kumquat-buildroot/package/libunwind/Config.in

36 lines
1.5 KiB
Plaintext
Raw Normal View History

# 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_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_ARM_CPU_HAS_ARM || BR2_x86_64)
config BR2_PACKAGE_LIBUNWIND
bool "libunwind"
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS
libunwind: needs dynamic library support libunwind configure script explicitly links libunwind against libgcc_s. libgcc_s is only guaranteed to be available for toolchains that supports dynamic linking: pure static linking toolchains only have libgcc.a, not libgcc_s.so. Therefore, let's make libunwind unavailable on toolchains that lack dynamic linking support. We could potentially support linking with libgcc, but switching to libgcc_s was done upstream because libgcc was lacking some symbols on ARM (https://lists.nongnu.org/archive/html/libunwind-devel/2014-06/msg00024.html). Even though recent gcc versions seem to provide such symbols in libgcc.a, having libunwind available on static linking configurations is not a useful enough use-case to do the necessary research to find when this issue was fixed in gcc. Since libunwind is not used as a mandatory dependency in any package, adding this !BR2_STATIC_LIBS dependency is trivial and nicely avoids the problematic situation. This fixes two different autobuilder failures: - Gstreamer 1.x programs failing to link, because libunwind links against libgcc_s that isn't available (static linking configuration): http://autobuild.buildroot.net/results/9d4fbf7167e9afce0eef5c9e0cfd42c966ecba36/ - Gmrender-resurrect, which fails to link, because GStreamer 1.x uses some libunwind functionality, but does not take into account the libunwind dependency in its .pc files (static linking configuration): http://autobuild.buildroot.net/results/0a3a2485c187a000482c178f1e9c64dd716a858f/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-08-20 23:01:51 +02:00
# forcefully links against libgcc_s, only available in dynamic
# linking configurations
depends on !BR2_STATIC_LIBS
help
C API to determine the call-chain of a program.
http://www.nongnu.org/libunwind/index.html
libunwind: needs dynamic library support libunwind configure script explicitly links libunwind against libgcc_s. libgcc_s is only guaranteed to be available for toolchains that supports dynamic linking: pure static linking toolchains only have libgcc.a, not libgcc_s.so. Therefore, let's make libunwind unavailable on toolchains that lack dynamic linking support. We could potentially support linking with libgcc, but switching to libgcc_s was done upstream because libgcc was lacking some symbols on ARM (https://lists.nongnu.org/archive/html/libunwind-devel/2014-06/msg00024.html). Even though recent gcc versions seem to provide such symbols in libgcc.a, having libunwind available on static linking configurations is not a useful enough use-case to do the necessary research to find when this issue was fixed in gcc. Since libunwind is not used as a mandatory dependency in any package, adding this !BR2_STATIC_LIBS dependency is trivial and nicely avoids the problematic situation. This fixes two different autobuilder failures: - Gstreamer 1.x programs failing to link, because libunwind links against libgcc_s that isn't available (static linking configuration): http://autobuild.buildroot.net/results/9d4fbf7167e9afce0eef5c9e0cfd42c966ecba36/ - Gmrender-resurrect, which fails to link, because GStreamer 1.x uses some libunwind functionality, but does not take into account the libunwind dependency in its .pc files (static linking configuration): http://autobuild.buildroot.net/results/0a3a2485c187a000482c178f1e9c64dd716a858f/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-08-20 23:01:51 +02:00
comment "libunwind needs a toolchain w/ threads, dynamic library"
depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS
libunwind: needs dynamic library support libunwind configure script explicitly links libunwind against libgcc_s. libgcc_s is only guaranteed to be available for toolchains that supports dynamic linking: pure static linking toolchains only have libgcc.a, not libgcc_s.so. Therefore, let's make libunwind unavailable on toolchains that lack dynamic linking support. We could potentially support linking with libgcc, but switching to libgcc_s was done upstream because libgcc was lacking some symbols on ARM (https://lists.nongnu.org/archive/html/libunwind-devel/2014-06/msg00024.html). Even though recent gcc versions seem to provide such symbols in libgcc.a, having libunwind available on static linking configurations is not a useful enough use-case to do the necessary research to find when this issue was fixed in gcc. Since libunwind is not used as a mandatory dependency in any package, adding this !BR2_STATIC_LIBS dependency is trivial and nicely avoids the problematic situation. This fixes two different autobuilder failures: - Gstreamer 1.x programs failing to link, because libunwind links against libgcc_s that isn't available (static linking configuration): http://autobuild.buildroot.net/results/9d4fbf7167e9afce0eef5c9e0cfd42c966ecba36/ - Gmrender-resurrect, which fails to link, because GStreamer 1.x uses some libunwind functionality, but does not take into account the libunwind dependency in its .pc files (static linking configuration): http://autobuild.buildroot.net/results/0a3a2485c187a000482c178f1e9c64dd716a858f/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-08-20 23:01:51 +02:00
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS