diff mbox series

[v1,1/2] gnutls: needs C++ support

Message ID 20180321202312.23021-1-ps.report@gmx.net
State Rejected
Headers show
Series [v1,1/2] gnutls: needs C++ support | expand

Commit Message

Peter Seiderer March 21, 2018, 8:23 p.m. UTC
Fixes Bug 10846 ([1]):

  checking how to run the C++ preprocessor... cpp
  configure: error: in `.../build/gnutls-3.5.17':
  configure: error: C++ preprocessor "cpp" fails sanity check
  See `config.log' for more details

[1] https://bugs.busybox.net/show_bug.cgi?id=10846

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
 package/connman/Config.in         | 5 +++--
 package/gnutls/Config.in          | 6 ++++--
 package/libmicrohttpd/Config.in   | 6 ++++--
 package/libsoup/Config.in         | 5 +++--
 package/network-manager/Config.in | 6 ++++--
 package/samba4/Config.in          | 4 ++++
 package/taskd/Config.in           | 2 +-
 package/vpnc/Config.in            | 6 ++++--
 package/webkitgtk/Config.in       | 5 +++--
 9 files changed, 30 insertions(+), 15 deletions(-)

Comments

Baruch Siach March 22, 2018, 5:49 a.m. UTC | #1
Hi Peter,

On Wed, Mar 21, 2018 at 09:23:11PM +0100, Peter Seiderer wrote:
> Fixes Bug 10846 ([1]):
> 
>   checking how to run the C++ preprocessor... cpp
>   configure: error: in `.../build/gnutls-3.5.17':
>   configure: error: C++ preprocessor "cpp" fails sanity check
>   See `config.log' for more details
> 
> [1] https://bugs.busybox.net/show_bug.cgi?id=10846
> 
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>

This is strange. Do you have idea why the autobuilders didn't catch that?

baruch
Peter Seiderer March 22, 2018, 12:10 p.m. UTC | #2
Hello Baruch,

On Thu, 22 Mar 2018 07:49:13 +0200, Baruch Siach <baruch@tkos.co.il> wrote:

> Hi Peter,
> 
> On Wed, Mar 21, 2018 at 09:23:11PM +0100, Peter Seiderer wrote:
> > Fixes Bug 10846 ([1]):
> > 
> >   checking how to run the C++ preprocessor... cpp
> >   configure: error: in `.../build/gnutls-3.5.17':
> >   configure: error: C++ preprocessor "cpp" fails sanity check
> >   See `config.log' for more details
> > 
> > [1] https://bugs.busybox.net/show_bug.cgi?id=10846
> > 
> > Signed-off-by: Peter Seiderer <ps.report@gmx.net>  
> 
> This is strange. Do you have idea why the autobuilders didn't catch that?

No clue...., maybe the missing combination of hard float and no C++?

Maybe worth an test-pkg run?

Regards,
Peter

> 
> baruch
>
Thomas Petazzoni March 22, 2018, 1:51 p.m. UTC | #3
Hello,

On Thu, 22 Mar 2018 07:49:13 +0200, Baruch Siach wrote:

> On Wed, Mar 21, 2018 at 09:23:11PM +0100, Peter Seiderer wrote:
> > Fixes Bug 10846 ([1]):
> > 
> >   checking how to run the C++ preprocessor... cpp
> >   configure: error: in `.../build/gnutls-3.5.17':
> >   configure: error: C++ preprocessor "cpp" fails sanity check
> >   See `config.log' for more details
> > 
> > [1] https://bugs.busybox.net/show_bug.cgi?id=10846
> > 
> > Signed-off-by: Peter Seiderer <ps.report@gmx.net>  
> 
> This is strange. Do you have idea why the autobuilders didn't catch that?

We don't have any toolchain configuration in the autobuilders that has
wchar support enabled, but C++ support disabled.

We do have a configuration that is basic (no wchar, no C++), but since
gnutls already depends on wchar, it was never tested with this
toolchain.

Hence, this doesn't pop-up in the autobuilders.

Best regards,

Thomas
Peter Korsgaard March 27, 2018, 7:54 a.m. UTC | #4
>>>>> "Peter" == Peter Seiderer <ps.report@gmx.net> writes:

 > Fixes Bug 10846 ([1]):
 >   checking how to run the C++ preprocessor... cpp
 >   configure: error: in `.../build/gnutls-3.5.17':
 >   configure: error: C++ preprocessor "cpp" fails sanity check
 >   See `config.log' for more details

 > [1] https://bugs.busybox.net/show_bug.cgi?id=10846

 > Signed-off-by: Peter Seiderer <ps.report@gmx.net>
 > ---
 >  package/connman/Config.in         | 5 +++--
 >  package/gnutls/Config.in          | 6 ++++--
 >  package/libmicrohttpd/Config.in   | 6 ++++--
 >  package/libsoup/Config.in         | 5 +++--
 >  package/network-manager/Config.in | 6 ++++--
 >  package/samba4/Config.in          | 4 ++++
 >  package/taskd/Config.in           | 2 +-
 >  package/vpnc/Config.in            | 6 ++++--
 >  package/webkitgtk/Config.in       | 5 +++--
 >  9 files changed, 30 insertions(+), 15 deletions(-)

It is a bit stupid that we have pull in C++ support here and in all the
reverse dependencies just because of a stupid configure check, but I
guess it is the simplest/best solution.

Should we then also revert bd39d11d2eaa679f (core/infra: fix build on
toolchain without C++)?

Yann, Thomas, Arnout - What do you say?


 > diff --git a/package/connman/Config.in b/package/connman/Config.in
 > index 253c604e88..309a49829a 100644
 > --- a/package/connman/Config.in
 > +++ b/package/connman/Config.in
 > @@ -34,14 +34,15 @@ config BR2_PACKAGE_CONNMAN_WIFI
 >  config BR2_PACKAGE_CONNMAN_WISPR
 >  	bool "enable WISPr support"
 >  	depends on !BR2_STATIC_LIBS # gnutls
 > +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 >  	select BR2_PACKAGE_GNUTLS
 >  	help
 >  	  Enable support for Wireless Internet Service Provider
 >  	  roaming (WISPr). A RADIUS server is used to authenticate the
 >  	  subscriber's credentials.
 
 > -comment "connman WISPr needs a toolchain w/ dynamic library"
 > -	depends on BR2_STATIC_LIBS
 > +comment "connman WISPr needs a toolchain w/ C++, dynamic library"
 > +	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP
 
 >  config BR2_PACKAGE_CONNMAN_BLUETOOTH
 >  	bool "enable Bluetooth support"
 > diff --git a/package/gnutls/Config.in b/package/gnutls/Config.in
 > index 176951a385..8663788e94 100644
 > --- a/package/gnutls/Config.in
 > +++ b/package/gnutls/Config.in
 > @@ -3,6 +3,7 @@ config BR2_PACKAGE_GNUTLS
 >  	# https://gitlab.com/gnutls/gnutls/issues/203
 >  	depends on !BR2_STATIC_LIBS
 >  	depends on BR2_USE_WCHAR
 > +	depends on BR2_INSTALL_LIBSTDCPP
 >  	select BR2_PACKAGE_LIBTASN1
 >  	select BR2_PACKAGE_LIBUNISTRING
 >  	select BR2_PACKAGE_NETTLE
 > @@ -25,5 +26,6 @@ config BR2_PACKAGE_GNUTLS_TOOLS
 
 >  endif
 
 > -comment "gnutls needs a toolchain w/ wchar, dynamic library"
 > -	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
 > +comment "gnutls needs a toolchain w/ wchar, C++, dynamic library"
 > +	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS  || \
 > +		!BR2_INSTALL_LIBSTDCPP
 > diff --git a/package/libmicrohttpd/Config.in b/package/libmicrohttpd/Config.in
 > index 7f3c9bb8fd..9f074fb567 100644
 > --- a/package/libmicrohttpd/Config.in
 > +++ b/package/libmicrohttpd/Config.in
 > @@ -13,12 +13,14 @@ config BR2_PACKAGE_LIBMICROHTTPD_SSL
 >  	bool "https support"
 >  	depends on !BR2_STATIC_LIBS # gnutls
 >  	depends on BR2_USE_WCHAR
 > +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 >  	select BR2_PACKAGE_GNUTLS
 >  	help
 >  	  Enable HTTPS (SSL) support.
 
 > -comment "libmicrohttpd https support needs a toolchain w/ wchar, dynamic library"
 > -	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
 > +comment "libmicrohttpd https support needs a toolchain w/ wchar, C++, dynamic library"
 > +	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS  || \
 > +		!BR2_INSTALL_LIBSTDCPP
 
 >  endif
 
 > diff --git a/package/libsoup/Config.in b/package/libsoup/Config.in
 > index 236d3c428a..70f7d28b6d 100644
 > --- a/package/libsoup/Config.in
 > +++ b/package/libsoup/Config.in
 > @@ -23,13 +23,14 @@ config BR2_PACKAGE_LIBSOUP_GNOME
 >  config BR2_PACKAGE_LIBSOUP_SSL
 >  	bool "https support"
 >  	depends on !BR2_STATIC_LIBS # gnutls
 > +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 >  	select BR2_PACKAGE_GLIB_NETWORKING
 >  	select BR2_PACKAGE_GNUTLS
 >  	help
 >  	  Enable HTTPS (SSL) support.
 
 > -comment "libsoup https support needs a toolchain w/ dynamic library"
 > -	depends on BR2_STATIC_LIBS
 > +comment "libsoup https support needs a toolchain w/ C++, dynamic library"
 > +	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP
 
 >  endif
 
 > diff --git a/package/network-manager/Config.in b/package/network-manager/Config.in
 > index 72658c1278..f480ca2d40 100644
 > --- a/package/network-manager/Config.in
 > +++ b/package/network-manager/Config.in
 > @@ -2,6 +2,7 @@ config BR2_PACKAGE_NETWORK_MANAGER
 >  	bool "networkmanager"
 >  	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
 >  	depends on !BR2_STATIC_LIBS # gnutls
 > +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 >  	depends on BR2_USE_MMU # dbus
 >  	depends on BR2_PACKAGE_HAS_UDEV
 >  	# Tested with 3.2, but may even work with earlier versions
 > @@ -64,8 +65,9 @@ config BR2_PACKAGE_NETWORK_MANAGER_OVS
 
 >  endif
 
 > -comment "NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.7, dynamic library"
 > +comment "NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.7, C++, dynamic library"
 >  	depends on BR2_USE_MMU
 >  	depends on !BR2_PACKAGE_HAS_UDEV || \
 >  		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 || \
 > -		!BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS
 > +		!BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS  || \
 > +		!BR2_INSTALL_LIBSTDCPP
 > diff --git a/package/samba4/Config.in b/package/samba4/Config.in
 > index 298fdc6608..b2d4379c0d 100644
 > --- a/package/samba4/Config.in
 > +++ b/package/samba4/Config.in
 > @@ -29,10 +29,14 @@ if BR2_PACKAGE_SAMBA4
 
 >  config BR2_PACKAGE_SAMBA4_AD_DC
 >  	bool "AD DC"
 > +	depends on BR2_INSTALL_LIBSTDCPP
 >  	select BR2_PACKAGE_GNUTLS
 >  	help
 >  	  Enable Active Directory Domain Controller functionality.
 
 > +comment "samba4 AD DC support needs a toolchain w/ C++"
 > +	depends on !BR2_INSTALL_LIBSTDCPP
 > +
 >  config BR2_PACKAGE_SAMBA4_ADS
 >  	bool "ADS"
 >  	select BR2_PACKAGE_OPENLDAP
 > diff --git a/package/taskd/Config.in b/package/taskd/Config.in
 > index 19d123fb59..e4a1dfab4f 100644
 > --- a/package/taskd/Config.in
 > +++ b/package/taskd/Config.in
 > @@ -3,7 +3,7 @@ config BR2_PACKAGE_TASKD
 >  	depends on !BR2_STATIC_LIBS # gnutls
 >  	depends on BR2_USE_WCHAR # gnutls
 >  	depends on BR2_USE_MMU # fork()
 > -	depends on BR2_INSTALL_LIBSTDCPP
 > +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 >  	select BR2_PACKAGE_GNUTLS
 >  	select BR2_PACKAGE_UTIL_LINUX
 >  	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 > diff --git a/package/vpnc/Config.in b/package/vpnc/Config.in
 > index 6455b0d87a..738413961c 100644
 > --- a/package/vpnc/Config.in
 > +++ b/package/vpnc/Config.in
 > @@ -4,6 +4,7 @@ config BR2_PACKAGE_VPNC
 >  	depends on !BR2_STATIC_LIBS # gnutls
 >  	depends on BR2_USE_MMU # fork()
 >  	depends on BR2_USE_WCHAR # gnutls
 > +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 >  	select BR2_PACKAGE_LIBGCRYPT
 >  	select BR2_PACKAGE_LIBGPG_ERROR
 >  	select BR2_PACKAGE_GNUTLS
 > @@ -16,6 +17,7 @@ config BR2_PACKAGE_VPNC
 
 >  	  http://www.unix-ag.uni-kl.de/~massar/vpnc
 
 > -comment "vpnc needs a toolchain w/ wchar, dynamic library"
 > +comment "vpnc needs a toolchain w/ wchar, C++, dynamic library"
 >  	depends on BR2_USE_MMU
 > -	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
 > +	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS || \
 > +		!BR2_INSTALL_LIBSTDCPP
 > diff --git a/package/webkitgtk/Config.in b/package/webkitgtk/Config.in
 > index 31794ed2a4..10bd55ebb9 100644
 > --- a/package/webkitgtk/Config.in
 > +++ b/package/webkitgtk/Config.in
 > @@ -56,13 +56,14 @@ if BR2_PACKAGE_WEBKITGTK
 >  config BR2_PACKAGE_WEBKITGTK_HTTPS
 >  	bool "HTTPS support"
 >  	depends on !BR2_STATIC_LIBS # gnutls -> libsoup
 > +	depends on BR2_INSTALL_LIBSTDCPP # gnutls -> libsoup
 >  	select BR2_PACKAGE_CA_CERTIFICATES # runtime
 >  	select BR2_PACKAGE_LIBSOUP_SSL
 >  	help
 >  	  Enable HTTPS protocol support.
 
 > -comment "webkitgtk https support needs a toolchain w/ dynamic library"
 > -	depends on BR2_STATIC_LIBS
 > +comment "webkitgtk https support needs a toolchain w/ C++, dynamic library"
 > +	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP
 
 >  config BR2_PACKAGE_WEBKITGTK_MULTIMEDIA
 >  	bool "multimedia support"
 > -- 
 > 2.16.2

 > _______________________________________________
 > buildroot mailing list
 > buildroot@busybox.net
 > http://lists.busybox.net/mailman/listinfo/buildroot
Petr Vorel March 27, 2018, 7:56 a.m. UTC | #5
Hi Peter,

> Fixes Bug 10846 ([1]):

>   checking how to run the C++ preprocessor... cpp
>   configure: error: in `.../build/gnutls-3.5.17':
>   configure: error: C++ preprocessor "cpp" fails sanity check
>   See `config.log' for more details

> [1] https://bugs.busybox.net/show_bug.cgi?id=10846

> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> ---
>  package/connman/Config.in         | 5 +++--
>  package/gnutls/Config.in          | 6 ++++--
>  package/libmicrohttpd/Config.in   | 6 ++++--
>  package/libsoup/Config.in         | 5 +++--
>  package/network-manager/Config.in | 6 ++++--
>  package/samba4/Config.in          | 4 ++++
>  package/taskd/Config.in           | 2 +-
>  package/vpnc/Config.in            | 6 ++++--
>  package/webkitgtk/Config.in       | 5 +++--
>  9 files changed, 30 insertions(+), 15 deletions(-)

> diff --git a/package/connman/Config.in b/package/connman/Config.in
> index 253c604e88..309a49829a 100644
> --- a/package/connman/Config.in
> +++ b/package/connman/Config.in
> @@ -34,14 +34,15 @@ config BR2_PACKAGE_CONNMAN_WIFI
>  config BR2_PACKAGE_CONNMAN_WISPR
>  	bool "enable WISPr support"
>  	depends on !BR2_STATIC_LIBS # gnutls
> +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
>  	select BR2_PACKAGE_GNUTLS
>  	help
>  	  Enable support for Wireless Internet Service Provider
>  	  roaming (WISPr). A RADIUS server is used to authenticate the
>  	  subscriber's credentials.

> -comment "connman WISPr needs a toolchain w/ dynamic library"
> -	depends on BR2_STATIC_LIBS
> +comment "connman WISPr needs a toolchain w/ C++, dynamic library"
> +	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP

>  config BR2_PACKAGE_CONNMAN_BLUETOOTH
>  	bool "enable Bluetooth support"
> diff --git a/package/gnutls/Config.in b/package/gnutls/Config.in
> index 176951a385..8663788e94 100644
> --- a/package/gnutls/Config.in
> +++ b/package/gnutls/Config.in
> @@ -3,6 +3,7 @@ config BR2_PACKAGE_GNUTLS
>  	# https://gitlab.com/gnutls/gnutls/issues/203
>  	depends on !BR2_STATIC_LIBS
>  	depends on BR2_USE_WCHAR
> +	depends on BR2_INSTALL_LIBSTDCPP
>  	select BR2_PACKAGE_LIBTASN1
>  	select BR2_PACKAGE_LIBUNISTRING
>  	select BR2_PACKAGE_NETTLE
> @@ -25,5 +26,6 @@ config BR2_PACKAGE_GNUTLS_TOOLS

>  endif

> -comment "gnutls needs a toolchain w/ wchar, dynamic library"
> -	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
> +comment "gnutls needs a toolchain w/ wchar, C++, dynamic library"
> +	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS  || \
> +		!BR2_INSTALL_LIBSTDCPP
> diff --git a/package/libmicrohttpd/Config.in b/package/libmicrohttpd/Config.in
> index 7f3c9bb8fd..9f074fb567 100644
> --- a/package/libmicrohttpd/Config.in
> +++ b/package/libmicrohttpd/Config.in
> @@ -13,12 +13,14 @@ config BR2_PACKAGE_LIBMICROHTTPD_SSL
>  	bool "https support"
>  	depends on !BR2_STATIC_LIBS # gnutls
>  	depends on BR2_USE_WCHAR
> +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
>  	select BR2_PACKAGE_GNUTLS
>  	help
>  	  Enable HTTPS (SSL) support.

> -comment "libmicrohttpd https support needs a toolchain w/ wchar, dynamic library"
> -	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
> +comment "libmicrohttpd https support needs a toolchain w/ wchar, C++, dynamic library"
> +	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS  || \
> +		!BR2_INSTALL_LIBSTDCPP

>  endif

> diff --git a/package/libsoup/Config.in b/package/libsoup/Config.in
> index 236d3c428a..70f7d28b6d 100644
> --- a/package/libsoup/Config.in
> +++ b/package/libsoup/Config.in
> @@ -23,13 +23,14 @@ config BR2_PACKAGE_LIBSOUP_GNOME
>  config BR2_PACKAGE_LIBSOUP_SSL
>  	bool "https support"
>  	depends on !BR2_STATIC_LIBS # gnutls
> +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
>  	select BR2_PACKAGE_GLIB_NETWORKING
>  	select BR2_PACKAGE_GNUTLS
>  	help
>  	  Enable HTTPS (SSL) support.

> -comment "libsoup https support needs a toolchain w/ dynamic library"
> -	depends on BR2_STATIC_LIBS
> +comment "libsoup https support needs a toolchain w/ C++, dynamic library"
> +	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP

>  endif

> diff --git a/package/network-manager/Config.in b/package/network-manager/Config.in
> index 72658c1278..f480ca2d40 100644
> --- a/package/network-manager/Config.in
> +++ b/package/network-manager/Config.in
> @@ -2,6 +2,7 @@ config BR2_PACKAGE_NETWORK_MANAGER
>  	bool "networkmanager"
>  	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
>  	depends on !BR2_STATIC_LIBS # gnutls
> +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
>  	depends on BR2_USE_MMU # dbus
>  	depends on BR2_PACKAGE_HAS_UDEV
>  	# Tested with 3.2, but may even work with earlier versions
> @@ -64,8 +65,9 @@ config BR2_PACKAGE_NETWORK_MANAGER_OVS

>  endif

> -comment "NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.7, dynamic library"
> +comment "NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.7, C++, dynamic library"
>  	depends on BR2_USE_MMU
>  	depends on !BR2_PACKAGE_HAS_UDEV || \
>  		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 || \
> -		!BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS
> +		!BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS  || \
> +		!BR2_INSTALL_LIBSTDCPP
> diff --git a/package/samba4/Config.in b/package/samba4/Config.in
> index 298fdc6608..b2d4379c0d 100644
> --- a/package/samba4/Config.in
> +++ b/package/samba4/Config.in
> @@ -29,10 +29,14 @@ if BR2_PACKAGE_SAMBA4

>  config BR2_PACKAGE_SAMBA4_AD_DC
>  	bool "AD DC"
> +	depends on BR2_INSTALL_LIBSTDCPP
>  	select BR2_PACKAGE_GNUTLS
>  	help
>  	  Enable Active Directory Domain Controller functionality.

> +comment "samba4 AD DC support needs a toolchain w/ C++"
> +	depends on !BR2_INSTALL_LIBSTDCPP
> +
>  config BR2_PACKAGE_SAMBA4_ADS
>  	bool "ADS"
>  	select BR2_PACKAGE_OPENLDAP
> diff --git a/package/taskd/Config.in b/package/taskd/Config.in
> index 19d123fb59..e4a1dfab4f 100644
> --- a/package/taskd/Config.in
> +++ b/package/taskd/Config.in
> @@ -3,7 +3,7 @@ config BR2_PACKAGE_TASKD
>  	depends on !BR2_STATIC_LIBS # gnutls
>  	depends on BR2_USE_WCHAR # gnutls
>  	depends on BR2_USE_MMU # fork()
> -	depends on BR2_INSTALL_LIBSTDCPP
> +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
>  	select BR2_PACKAGE_GNUTLS
>  	select BR2_PACKAGE_UTIL_LINUX
>  	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
> diff --git a/package/vpnc/Config.in b/package/vpnc/Config.in
> index 6455b0d87a..738413961c 100644
> --- a/package/vpnc/Config.in
> +++ b/package/vpnc/Config.in
> @@ -4,6 +4,7 @@ config BR2_PACKAGE_VPNC
>  	depends on !BR2_STATIC_LIBS # gnutls
>  	depends on BR2_USE_MMU # fork()
>  	depends on BR2_USE_WCHAR # gnutls
> +	depends on BR2_INSTALL_LIBSTDCPP # gnutls
>  	select BR2_PACKAGE_LIBGCRYPT
>  	select BR2_PACKAGE_LIBGPG_ERROR
>  	select BR2_PACKAGE_GNUTLS
> @@ -16,6 +17,7 @@ config BR2_PACKAGE_VPNC

>  	  http://www.unix-ag.uni-kl.de/~massar/vpnc

> -comment "vpnc needs a toolchain w/ wchar, dynamic library"
> +comment "vpnc needs a toolchain w/ wchar, C++, dynamic library"
>  	depends on BR2_USE_MMU
> -	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
> +	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS || \
> +		!BR2_INSTALL_LIBSTDCPP
> diff --git a/package/webkitgtk/Config.in b/package/webkitgtk/Config.in
> index 31794ed2a4..10bd55ebb9 100644
> --- a/package/webkitgtk/Config.in
> +++ b/package/webkitgtk/Config.in
> @@ -56,13 +56,14 @@ if BR2_PACKAGE_WEBKITGTK
>  config BR2_PACKAGE_WEBKITGTK_HTTPS
>  	bool "HTTPS support"
>  	depends on !BR2_STATIC_LIBS # gnutls -> libsoup
> +	depends on BR2_INSTALL_LIBSTDCPP # gnutls -> libsoup
>  	select BR2_PACKAGE_CA_CERTIFICATES # runtime
>  	select BR2_PACKAGE_LIBSOUP_SSL
>  	help
>  	  Enable HTTPS protocol support.

> -comment "webkitgtk https support needs a toolchain w/ dynamic library"
> -	depends on BR2_STATIC_LIBS
> +comment "webkitgtk https support needs a toolchain w/ C++, dynamic library"
> +	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP

>  config BR2_PACKAGE_WEBKITGTK_MULTIMEDIA
>  	bool "multimedia support"

The only thing I can know and can confirm on this issue is that Connman and NetworkManager
depend on GnuTLS (NetworkManager can use NSS, but that IMHO not in buildroot).

Looking at GnuTLS it looks like it includes <cstdlib>, hence really depends on C++
toolchain.


Kind regards,
Petr
Thomas Petazzoni March 27, 2018, 8:08 a.m. UTC | #6
Hello,

On Tue, 27 Mar 2018 09:54:56 +0200, Peter Korsgaard wrote:

> It is a bit stupid that we have pull in C++ support here and in all the
> reverse dependencies just because of a stupid configure check, but I
> guess it is the simplest/best solution.
> 
> Should we then also revert bd39d11d2eaa679f (core/infra: fix build on
> toolchain without C++)?
> 
> Yann, Thomas, Arnout - What do you say?

I just fired up a build to reproduce the issue and have a look. But
from what I remember last time I had a look, it was just some
completely brain-damaged autoconf sorcery, and there wasn't really any
hope of fixing it.

Thomas
Yann E. MORIN March 27, 2018, 8:55 a.m. UTC | #7
All,

On 2018-03-27 10:08 +0200, Thomas Petazzoni spake thusly:
> On Tue, 27 Mar 2018 09:54:56 +0200, Peter Korsgaard wrote:
> > It is a bit stupid that we have pull in C++ support here and in all the
> > reverse dependencies just because of a stupid configure check, but I
> > guess it is the simplest/best solution.
> > 
> > Should we then also revert bd39d11d2eaa679f (core/infra: fix build on
> > toolchain without C++)?
> > 
> > Yann, Thomas, Arnout - What do you say?
> 
> I just fired up a build to reproduce the issue and have a look. But
> from what I remember last time I had a look, it was just some
> completely brain-damaged autoconf sorcery, and there wasn't really any
> hope of fixing it.

Yeah, this is a libtool issue... libtool will call to AC_PROG_CXXCPP as
soon as CXX is set and is not 'no':

    https://git.savannah.gnu.org/cgit/libtool.git/tree/m4/libtool.m4#n6305

Currently, we're passing CXX=false when C++ is not enabled. Maybe we
whould pass 'no' instead? Lemme run a test...

Regards,
Yann E. MORIN.
Peter Korsgaard March 27, 2018, 11:22 a.m. UTC | #8
>>>>> "Petr" == Petr Vorel <petr.vorel@gmail.com> writes:

Hi,

 >> config BR2_PACKAGE_WEBKITGTK_MULTIMEDIA
 >> bool "multimedia support"

 > The only thing I can know and can confirm on this issue is that Connman and NetworkManager
 > depend on GnuTLS (NetworkManager can use NSS, but that IMHO not in buildroot).

It is (libnss).

 > Looking at GnuTLS it looks like it includes <cstdlib>, hence really depends on C++
 > toolchain.

Yes, but those are conditionally includes:

/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
   <libintl.h>, which chokes if dcgettext is defined as a macro.  So include
   it now, to make later inclusions of <libintl.h> a NOP.  */
#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
# include <cstdlib>
# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
#  include <libintl.h>
# endif
#endif
Petr Vorel March 27, 2018, 2:23 p.m. UTC | #9
Hi Peter,

> Hi,

>  >> config BR2_PACKAGE_WEBKITGTK_MULTIMEDIA
>  >> bool "multimedia support"

>  > The only thing I can know and can confirm on this issue is that Connman and NetworkManager
>  > depend on GnuTLS (NetworkManager can use NSS, but that IMHO not in buildroot).

> It is (libnss).

>  > Looking at GnuTLS it looks like it includes <cstdlib>, hence really depends on C++
>  > toolchain.

> Yes, but those are conditionally includes:

> /* Many header files from the libstdc++ coming with g++ 3.3 or newer include
>    <libintl.h>, which chokes if dcgettext is defined as a macro.  So include
>    it now, to make later inclusions of <libintl.h> a NOP.  */
> #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
> # include <cstdlib>
> # if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
> #  include <libintl.h>
> # endif
> #endif

You're right, thanks for update on both.


Kind regards,
Petr
diff mbox series

Patch

diff --git a/package/connman/Config.in b/package/connman/Config.in
index 253c604e88..309a49829a 100644
--- a/package/connman/Config.in
+++ b/package/connman/Config.in
@@ -34,14 +34,15 @@  config BR2_PACKAGE_CONNMAN_WIFI
 config BR2_PACKAGE_CONNMAN_WISPR
 	bool "enable WISPr support"
 	depends on !BR2_STATIC_LIBS # gnutls
+	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 	select BR2_PACKAGE_GNUTLS
 	help
 	  Enable support for Wireless Internet Service Provider
 	  roaming (WISPr). A RADIUS server is used to authenticate the
 	  subscriber's credentials.
 
-comment "connman WISPr needs a toolchain w/ dynamic library"
-	depends on BR2_STATIC_LIBS
+comment "connman WISPr needs a toolchain w/ C++, dynamic library"
+	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP
 
 config BR2_PACKAGE_CONNMAN_BLUETOOTH
 	bool "enable Bluetooth support"
diff --git a/package/gnutls/Config.in b/package/gnutls/Config.in
index 176951a385..8663788e94 100644
--- a/package/gnutls/Config.in
+++ b/package/gnutls/Config.in
@@ -3,6 +3,7 @@  config BR2_PACKAGE_GNUTLS
 	# https://gitlab.com/gnutls/gnutls/issues/203
 	depends on !BR2_STATIC_LIBS
 	depends on BR2_USE_WCHAR
+	depends on BR2_INSTALL_LIBSTDCPP
 	select BR2_PACKAGE_LIBTASN1
 	select BR2_PACKAGE_LIBUNISTRING
 	select BR2_PACKAGE_NETTLE
@@ -25,5 +26,6 @@  config BR2_PACKAGE_GNUTLS_TOOLS
 
 endif
 
-comment "gnutls needs a toolchain w/ wchar, dynamic library"
-	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
+comment "gnutls needs a toolchain w/ wchar, C++, dynamic library"
+	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS  || \
+		!BR2_INSTALL_LIBSTDCPP
diff --git a/package/libmicrohttpd/Config.in b/package/libmicrohttpd/Config.in
index 7f3c9bb8fd..9f074fb567 100644
--- a/package/libmicrohttpd/Config.in
+++ b/package/libmicrohttpd/Config.in
@@ -13,12 +13,14 @@  config BR2_PACKAGE_LIBMICROHTTPD_SSL
 	bool "https support"
 	depends on !BR2_STATIC_LIBS # gnutls
 	depends on BR2_USE_WCHAR
+	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 	select BR2_PACKAGE_GNUTLS
 	help
 	  Enable HTTPS (SSL) support.
 
-comment "libmicrohttpd https support needs a toolchain w/ wchar, dynamic library"
-	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
+comment "libmicrohttpd https support needs a toolchain w/ wchar, C++, dynamic library"
+	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS  || \
+		!BR2_INSTALL_LIBSTDCPP
 
 endif
 
diff --git a/package/libsoup/Config.in b/package/libsoup/Config.in
index 236d3c428a..70f7d28b6d 100644
--- a/package/libsoup/Config.in
+++ b/package/libsoup/Config.in
@@ -23,13 +23,14 @@  config BR2_PACKAGE_LIBSOUP_GNOME
 config BR2_PACKAGE_LIBSOUP_SSL
 	bool "https support"
 	depends on !BR2_STATIC_LIBS # gnutls
+	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 	select BR2_PACKAGE_GLIB_NETWORKING
 	select BR2_PACKAGE_GNUTLS
 	help
 	  Enable HTTPS (SSL) support.
 
-comment "libsoup https support needs a toolchain w/ dynamic library"
-	depends on BR2_STATIC_LIBS
+comment "libsoup https support needs a toolchain w/ C++, dynamic library"
+	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP
 
 endif
 
diff --git a/package/network-manager/Config.in b/package/network-manager/Config.in
index 72658c1278..f480ca2d40 100644
--- a/package/network-manager/Config.in
+++ b/package/network-manager/Config.in
@@ -2,6 +2,7 @@  config BR2_PACKAGE_NETWORK_MANAGER
 	bool "networkmanager"
 	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
 	depends on !BR2_STATIC_LIBS # gnutls
+	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 	depends on BR2_USE_MMU # dbus
 	depends on BR2_PACKAGE_HAS_UDEV
 	# Tested with 3.2, but may even work with earlier versions
@@ -64,8 +65,9 @@  config BR2_PACKAGE_NETWORK_MANAGER_OVS
 
 endif
 
-comment "NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.7, dynamic library"
+comment "NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.7, C++, dynamic library"
 	depends on BR2_USE_MMU
 	depends on !BR2_PACKAGE_HAS_UDEV || \
 		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 || \
-		!BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS
+		!BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS  || \
+		!BR2_INSTALL_LIBSTDCPP
diff --git a/package/samba4/Config.in b/package/samba4/Config.in
index 298fdc6608..b2d4379c0d 100644
--- a/package/samba4/Config.in
+++ b/package/samba4/Config.in
@@ -29,10 +29,14 @@  if BR2_PACKAGE_SAMBA4
 
 config BR2_PACKAGE_SAMBA4_AD_DC
 	bool "AD DC"
+	depends on BR2_INSTALL_LIBSTDCPP
 	select BR2_PACKAGE_GNUTLS
 	help
 	  Enable Active Directory Domain Controller functionality.
 
+comment "samba4 AD DC support needs a toolchain w/ C++"
+	depends on !BR2_INSTALL_LIBSTDCPP
+
 config BR2_PACKAGE_SAMBA4_ADS
 	bool "ADS"
 	select BR2_PACKAGE_OPENLDAP
diff --git a/package/taskd/Config.in b/package/taskd/Config.in
index 19d123fb59..e4a1dfab4f 100644
--- a/package/taskd/Config.in
+++ b/package/taskd/Config.in
@@ -3,7 +3,7 @@  config BR2_PACKAGE_TASKD
 	depends on !BR2_STATIC_LIBS # gnutls
 	depends on BR2_USE_WCHAR # gnutls
 	depends on BR2_USE_MMU # fork()
-	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 	select BR2_PACKAGE_GNUTLS
 	select BR2_PACKAGE_UTIL_LINUX
 	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
diff --git a/package/vpnc/Config.in b/package/vpnc/Config.in
index 6455b0d87a..738413961c 100644
--- a/package/vpnc/Config.in
+++ b/package/vpnc/Config.in
@@ -4,6 +4,7 @@  config BR2_PACKAGE_VPNC
 	depends on !BR2_STATIC_LIBS # gnutls
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_USE_WCHAR # gnutls
+	depends on BR2_INSTALL_LIBSTDCPP # gnutls
 	select BR2_PACKAGE_LIBGCRYPT
 	select BR2_PACKAGE_LIBGPG_ERROR
 	select BR2_PACKAGE_GNUTLS
@@ -16,6 +17,7 @@  config BR2_PACKAGE_VPNC
 
 	  http://www.unix-ag.uni-kl.de/~massar/vpnc
 
-comment "vpnc needs a toolchain w/ wchar, dynamic library"
+comment "vpnc needs a toolchain w/ wchar, C++, dynamic library"
 	depends on BR2_USE_MMU
-	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
+	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS || \
+		!BR2_INSTALL_LIBSTDCPP
diff --git a/package/webkitgtk/Config.in b/package/webkitgtk/Config.in
index 31794ed2a4..10bd55ebb9 100644
--- a/package/webkitgtk/Config.in
+++ b/package/webkitgtk/Config.in
@@ -56,13 +56,14 @@  if BR2_PACKAGE_WEBKITGTK
 config BR2_PACKAGE_WEBKITGTK_HTTPS
 	bool "HTTPS support"
 	depends on !BR2_STATIC_LIBS # gnutls -> libsoup
+	depends on BR2_INSTALL_LIBSTDCPP # gnutls -> libsoup
 	select BR2_PACKAGE_CA_CERTIFICATES # runtime
 	select BR2_PACKAGE_LIBSOUP_SSL
 	help
 	  Enable HTTPS protocol support.
 
-comment "webkitgtk https support needs a toolchain w/ dynamic library"
-	depends on BR2_STATIC_LIBS
+comment "webkitgtk https support needs a toolchain w/ C++, dynamic library"
+	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP
 
 config BR2_PACKAGE_WEBKITGTK_MULTIMEDIA
 	bool "multimedia support"