diff mbox

[PATCHv2] package/directfb: disable for static builds

Message ID 1487888233-20523-1-git-send-email-yann.morin.1998@free.fr
State Accepted
Headers show

Commit Message

Yann E. MORIN Feb. 23, 2017, 10:17 p.m. UTC
DirectFB is written in C++, but can be linked to by a C library or
program.

When doing shared link, this is fine because the linker gets help from
the DT_NEEDED flags and knows what libraries to pull in during the link.

However, during a static link, the linker does not get such help.

Properly fixing this would require that there is support in pkg-config
and autotools to specify that the C++ runtime must be linked. Alas there
is no sush support. The only option is to add -lstdc++ to the
Libs.Private field in directfb.pc. But this is not upstreamable, because
there are other C++ runtimes in the wild (e.g. -lc++ from llvm/clang).

However, DirectFB in a static scenario is probably not a very common
scenario.

Disable DirectFB for static builds.

Fixes:
    http://autobuild.buildroot.org/results/3d3/3d3036d40ddad71d872d910aae7a24975706d2e9/
    http://autobuild.buildroot.org/results/d1c/d1c35a6003396942b584f2f2a5e8bf4ac2fbe370/
    http://autobuild.buildroot.org/results/d45/d4504871bd47930e8363032d380cdfcc5bb8aee7/
    [...]

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/directfb/Config.in | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Thomas Petazzoni Feb. 26, 2017, 8:45 p.m. UTC | #1
Hello,

On Thu, 23 Feb 2017 23:17:13 +0100, Yann E. MORIN wrote:
> DirectFB is written in C++, but can be linked to by a C library or
> program.
> 
> When doing shared link, this is fine because the linker gets help from
> the DT_NEEDED flags and knows what libraries to pull in during the link.
> 
> However, during a static link, the linker does not get such help.
> 
> Properly fixing this would require that there is support in pkg-config
> and autotools to specify that the C++ runtime must be linked. Alas there
> is no sush support. The only option is to add -lstdc++ to the
> Libs.Private field in directfb.pc. But this is not upstreamable, because
> there are other C++ runtimes in the wild (e.g. -lc++ from llvm/clang).
> 
> However, DirectFB in a static scenario is probably not a very common
> scenario.
> 
> Disable DirectFB for static builds.
> 
> Fixes:
>     http://autobuild.buildroot.org/results/3d3/3d3036d40ddad71d872d910aae7a24975706d2e9/
>     http://autobuild.buildroot.org/results/d1c/d1c35a6003396942b584f2f2a5e8bf4ac2fbe370/
>     http://autobuild.buildroot.org/results/d45/d4504871bd47930e8363032d380cdfcc5bb8aee7/
>     [...]
> 
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
>  package/directfb/Config.in | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)

Applied to master, thanks.

Thomas
diff mbox

Patch

diff --git a/package/directfb/Config.in b/package/directfb/Config.in
index b552164..6a3d718 100644
--- a/package/directfb/Config.in
+++ b/package/directfb/Config.in
@@ -1,5 +1,6 @@ 
 config BR2_PACKAGE_DIRECTFB
 	bool "directfb"
+	depends on !BR2_STATIC_LIBS # static link issues
 	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
@@ -161,7 +162,8 @@  config BR2_PACKAGE_DIRECTFB_TESTS
 
 endif # BR2_PACKAGE_DIRECTFB
 
-comment "directfb needs a glibc or uClibc toolchain w/ C++, NPTL, gcc >= 4.5"
+comment "directfb needs a glibc or uClibc toolchain w/ C++, NPTL, gcc >= 4.5, dynamic library"
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_INSTALL_LIBSTDCPP || \
-		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || BR2_TOOLCHAIN_USES_MUSL
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || BR2_TOOLCHAIN_USES_MUSL || \
+		BR2_STATIC_LIBS