diff mbox

[v2,1/2] bctoolbox: new package

Message ID 20170122210021.9463-1-joerg.krause@embedded.rocks
State Accepted
Headers show

Commit Message

Jörg Krause Jan. 22, 2017, 9 p.m. UTC
bctoolbox is a utilities library used by Belledonne Communications
softwares like belle-sip, mediastreamer2 and linphone.

Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
---
Changes v1 -> v2 (suggested by Romain Naour):
 * depend on threads support
 * properly wrap help text
 * add comment about mbedtls being preferred over polarssl
 * add -DGIT_EXECUTABLE=OFF to remove an ignored error message
---
 package/Config.in                |  1 +
 package/bctoolbox/Config.in      | 12 ++++++++++++
 package/bctoolbox/bctoolbox.hash |  2 ++
 package/bctoolbox/bctoolbox.mk   | 31 +++++++++++++++++++++++++++++++
 4 files changed, 46 insertions(+)
 create mode 100644 package/bctoolbox/Config.in
 create mode 100644 package/bctoolbox/bctoolbox.hash
 create mode 100644 package/bctoolbox/bctoolbox.mk

Comments

Thomas Petazzoni Jan. 24, 2017, 9:36 a.m. UTC | #1
Hello,

On Sun, 22 Jan 2017 22:00:20 +0100, Jörg Krause wrote:

> diff --git a/package/bctoolbox/Config.in b/package/bctoolbox/Config.in
> new file mode 100644
> index 000000000..ee0757856
> --- /dev/null
> +++ b/package/bctoolbox/Config.in
> @@ -0,0 +1,12 @@
> +config BR2_PACKAGE_BCTOOLBOX
> +	bool "bctoolbox"
> +	depends on BR2_TOOLCHAIN_HAS_THREADS

BR2_INSTALL_LIBSTDCPP dependency was missing here: there is some C++
code in this library. So I've added that.

> +ifeq ($(BR2_STATIC_LIBS),y)
> +BCTOOLBOX_CONF_OPTS += \
> +	-DENABLE_SHARED=OFF -DENABLE_STATIC=ON

Those two lines could have been on the same line, it's about 60-62
characters long, it definitely fits in the 80 characters limit. So I've
fixed the three occurrences of this.

Applied with those fixes, as well as a follow-up commit that adds you
to the DEVELOPERS file for this package.

Thanks!

Thomas
Peter Korsgaard Feb. 7, 2017, 11:20 a.m. UTC | #2
>>>>> "Jörg" == Jörg Krause <joerg.krause@embedded.rocks> writes:

 > bctoolbox is a utilities library used by Belledonne Communications
 > softwares like belle-sip, mediastreamer2 and linphone.

 > Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>

This seems to break building ortp statically:

http://autobuild.buildroot.org/?reason=ortp-0.27.0

Looking further, it comes from the bctoolbox pkg-config file
libs.private:

bctoolbox-0.4.0/bctoolbox.pc.in:
Libs.private: @LIBS_PRIVATE@

Which gets populated from cmake:

bctoolbox-0.4.0/CMakeLists.txt:

if(MBEDTLS_FOUND)
        get_filename_component(mbedtls_library_path "${MBEDTLS_LIBRARIES}" PATH)
        set(LIBS_PRIVATE "${LIBS_PRIVATE} -L${mbedlts_library_path}")
endif()

mbedtls_library_path is apparently the empty string, so it ends up just
with "-L".

Samuel/Jörg, any idea how this should work?
Jörg Krause Feb. 7, 2017, 12:54 p.m. UTC | #3
On Tue, 2017-02-07 at 12:20 +0100, Peter Korsgaard wrote:
> > > > > > "Jörg" == Jörg Krause <joerg.krause@embedded.rocks> writes:
> 
>  > bctoolbox is a utilities library used by Belledonne Communications
>  > softwares like belle-sip, mediastreamer2 and linphone.
> 
>  > Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
> 
> This seems to break building ortp statically:
> 
> http://autobuild.buildroot.org/?reason=ortp-0.27.0
> 
> Looking further, it comes from the bctoolbox pkg-config file
> libs.private:
> 
> bctoolbox-0.4.0/bctoolbox.pc.in:
> Libs.private: @LIBS_PRIVATE@
> 
> Which gets populated from cmake:
> 
> bctoolbox-0.4.0/CMakeLists.txt:
> 
> if(MBEDTLS_FOUND)
>         get_filename_component(mbedtls_library_path
> "${MBEDTLS_LIBRARIES}" PATH)
>         set(LIBS_PRIVATE "${LIBS_PRIVATE} -L${mbedlts_library_path}")
> endif()
> 
> mbedtls_library_path is apparently the empty string, so it ends up
> just
> with "-L".
> 
> Samuel/Jörg, any idea how this should work?

I already had a look at this, but had no time to prepare a fix for it
so far. The problem is that `-lmbedtls` is missing after `-L`. So it
should be:

set(LIBS_PRIVATE "${LIBS_PRIVATE} -L${mbedlts_library_path} -lmbedtls")

However, there are some more issues with the bctoolbox package to get
static linking working properly.

Jörg
Peter Korsgaard Feb. 7, 2017, 1:24 p.m. UTC | #4
>>>>> "Jörg" == Jörg Krause <joerg.krause@embedded.rocks> writes:

Hi,

 >> Samuel/Jörg, any idea how this should work?

 > I already had a look at this, but had no time to prepare a fix for it
 > so far. The problem is that `-lmbedtls` is missing after `-L`. So it
 > should be:

 > set(LIBS_PRIVATE "${LIBS_PRIVATE} -L${mbedlts_library_path} -lmbedtls")

Yes, that and the fact that mbedtls_library_path is empty, so gcc errors
out with a missing path.
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 1766089b0..17e53602e 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1290,6 +1290,7 @@  menu "Other"
 	source "package/argp-standalone/Config.in"
 	source "package/armadillo/Config.in"
 	source "package/atf/Config.in"
+	source "package/bctoolbox/Config.in"
 	source "package/bdwgc/Config.in"
 	source "package/boost/Config.in"
 	source "package/clapack/Config.in"
diff --git a/package/bctoolbox/Config.in b/package/bctoolbox/Config.in
new file mode 100644
index 000000000..ee0757856
--- /dev/null
+++ b/package/bctoolbox/Config.in
@@ -0,0 +1,12 @@ 
+config BR2_PACKAGE_BCTOOLBOX
+	bool "bctoolbox"
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	select BR2_PACKAGE_MBEDTLS # mbedtls is preferred over polarssl
+	help
+	  Utilities library used by Belledonne Communications
+	  softwares like belle-sip, mediastreamer2 and linphone.
+
+	  https://github.com/BelledonneCommunications/bctoolbox
+
+comment "bctoolbox needs a toolchain w/ threads"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/bctoolbox/bctoolbox.hash b/package/bctoolbox/bctoolbox.hash
new file mode 100644
index 000000000..70be55c3d
--- /dev/null
+++ b/package/bctoolbox/bctoolbox.hash
@@ -0,0 +1,2 @@ 
+# Locally calculated
+sha256  da7df7ff359a9829e9e6ef98dfe9fead0cf735b8a4a5da1b1047f467dee1b2a9  bctoolbox-0.4.0.tar.gz
diff --git a/package/bctoolbox/bctoolbox.mk b/package/bctoolbox/bctoolbox.mk
new file mode 100644
index 000000000..ce30832b2
--- /dev/null
+++ b/package/bctoolbox/bctoolbox.mk
@@ -0,0 +1,31 @@ 
+################################################################################
+#
+# bctoolbox
+#
+################################################################################
+
+BCTOOLBOX_VERSION = 0.4.0
+BCTOOLBOX_SITE = $(call github,BelledonneCommunications,bctoolbox,$(BCTOOLBOX_VERSION))
+BCTOOLBOX_LICENSE = GPLv2+
+BCTOOLBOX_LICENSE_FILES = COPYING
+BCTOOLBOX_DEPENDENCIES = mbedtls
+BCTOOLBOX_INSTALL_STAGING = YES
+
+BCTOOLBOX_CONF_OPTS = \
+	-DENABLE_STRICT=OFF \
+	-DENABLE_TESTS_COMPONENT=OFF \
+	-DENABLE_TESTS=OFF \
+	-DGIT_EXECUTABLE=OFF
+
+ifeq ($(BR2_STATIC_LIBS),y)
+BCTOOLBOX_CONF_OPTS += \
+	-DENABLE_SHARED=OFF -DENABLE_STATIC=ON
+else ifeq ($(BR2_SHARED_STATIC_LIBS),y)
+BCTOOLBOX_CONF_OPTS += \
+	-DENABLE_SHARED=ON -DENABLE_STATIC=ON
+else ifeq ($(BR2_SHARED_LIBS),y)
+BCTOOLBOX_CONF_OPTS += \
+	-DENABLE_SHARED=ON -DENABLE_STATIC=OFF
+endif
+
+$(eval $(cmake-package))