Commit a569dfc9 authored by Gregory Dymarek's avatar Gregory Dymarek Committed by Thomas Petazzoni
Browse files

libwebsock: new package



[Thomas:
 - Add dependency on BR2_TOOLCHAIN_HAS_THREADS
 - Improve Config.in help text
 - Fixup comment header in .mk file.
 - Use github helper.
 - Remove hash file (we're downloading from Git)
 - Fixup LICENSE_FILES
 - Remove LIBWEBSOCK_CFLAGS, they were the default.
 - Remove LIBWEBSOCK_LIBS, and instead use a patch to switch
   libwebsock configure script to use pkg-config.]

Signed-off-by: default avatarGregory Dymarek <gregd72002@gmail.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent b7e7b417
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -854,6 +854,7 @@ menu "Networking"
	source "package/libupnpp/Config.in"
	source "package/liburiparser/Config.in"
	source "package/libvncserver/Config.in"
	source "package/libwebsock/Config.in"
	source "package/libwebsockets/Config.in"
	source "package/neon/Config.in"
	source "package/nss-mdns/Config.in"
+81 −0
Original line number Diff line number Diff line
From a6c35dbab5a2a75c176e031122ee64152e50e5d3 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Thu, 1 Jan 2015 12:23:43 +0100
Subject: [PATCH] Switch to use pkg-config to detect libevent and openssl

Switching to pkg-config fixes a number of problems when detecting the
libraries. For example the detection of libpthread was failing,
because libevent_threads was added to LIBS before libevent itself,
causing the libpthread test to fail due to missing symbols. pkg-config
is anyway nowadays the preferred way for detecting libraries. It also
has the benefit of working properly in static library situations.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 configure.ac | 36 ++++++++++++------------------------
 1 file changed, 12 insertions(+), 24 deletions(-)

diff --git a/configure.ac b/configure.ac
index d4109ce..fc1cadc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,35 +27,20 @@ AC_FUNC_MALLOC
 AC_FUNC_REALLOC
 AC_CHECK_FUNCS([memset socket strstr])
 
-AC_CHECK_HEADERS([event2/thread.h], [
-					LIBS="-levent_pthreads ${LIBS}"
-				    ], [
-                                                echo "libevent_pthreads required, failing"
-                                                exit -1
-                                                ])
-AC_CHECK_LIB(pthread, pthread_create, [LIBS="-lpthread ${LIBS}"], [
+AC_CHECK_LIB(pthread, pthread_create, [PTHREAD_LIBS="-lpthread"], [
                                                 echo "pthreads required, failing"
                                                 exit -1
                                                 ])
-AC_CHECK_LIB(event, event_base_dispatch, [], [
-						echo "libevent required, failing"
-						exit -1
-						])
+
+PKG_CHECK_MODULES([EVENT], [libevent])
+PKG_CHECK_MODULES([EVENT_PTHREAD], [libevent_pthreads])
 
 AS_IF([test "x$with_ssl" != "xno"],
 	[
-  	AC_CHECK_LIB([ssl], [SSL_CTX_new],
-  		[
-  			LIBS="-lssl ${LIBS}"
-  			AC_CHECK_LIB([event_openssl], [bufferevent_openssl_socket_new], [
-  				LIBS="-levent_openssl ${LIBS}"
-  				have_ssl=yes
-  			], [have_ssl=no])
-  		], 
-  		[have_ssl=no])
-  	],
-  	[have_ssl=no])
-  	
+	PKG_CHECK_MODULES([SSL], [openssl], [have_ssl=yes], [have_ssl=no])
+	AS_IF([test "x${have_ssl}" = "xyes"],
+		[PKG_CHECK_MODULES([EVENT_OPENSSL], [libevent_openssl], [have_ssl=yes], [have_ssl=no])])])
+
 AS_IF([test "x$have_ssl" = "xyes"],
 	[
 		AC_DEFINE([WEBSOCK_HAVE_SSL], [1], [Define if building SSL support])
@@ -63,8 +48,11 @@ AS_IF([test "x$have_ssl" = "xyes"],
 	[AS_IF([test "x$with_ssl" = "xyes"],
 		[AC_MSG_ERROR([SSL support requested but not found])
 	])])
-  	
+
 AM_CONDITIONAL([HAVE_SSL], [test "x$have_ssl" = "xyes"])
+
+LIBS="${EVENT_LIBS} ${EVENT_PTHREAD_LIBS} ${PTHREAD_LIBS} ${SSL_LIBS} ${EVENT_OPENSSL_LIBS}"
+
 AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_VERSION], ["$PACKAGE_VERSION"], [libwebsock version])
 AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_STRING], ["$PACKAGE_STRING"], [libwebsock package string])
 AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_NAME], ["$PACKAGE_NAME"], [libwebsock package name])
-- 
2.1.0
+16 −0
Original line number Diff line number Diff line
config BR2_PACKAGE_LIBWEBSOCK
	bool "libwebsock"
	select BR2_PACKAGE_LIBEVENT
	depends on BR2_TOOLCHAIN_HAS_THREADS
	help
	  C library for easy WebSockets servers.

	  This library allows a developer to quickly develop WebSocket
	  servers by focusing on the actual logic of your WebSocket
	  implementation instead of the details of the WebSocket
	  protocol or even specifics of C sockets.

	  https://github.com/payden/libwebsock

comment "libwebsock needs a toolchain w/ threads"
	depends on !BR2_TOOLCHAIN_HAS_THREADS
+15 −0
Original line number Diff line number Diff line
################################################################################
#
# libwebsock
#
################################################################################

LIBWEBSOCK_VERSION = 3c1615eeadb0b582b63851073bfe3e5132f31ebc
LIBWEBSOCK_SITE = $(call github,payden,libwebsock,$(LIBWEBSOCK_VERSION))
LIBWEBSOCK_DEPENDENCIES = libevent host-pkgconf
LIBWEBSOCK_AUTORECONF = YES
LIBWEBSOCK_INSTALL_STAGING = YES
LIBWEBSOCK_LICENSE = LGPLv3
LIBWEBSOCK_LICENSE_FILES = COPYING.lesser

$(eval $(autotools-package))