Includes the C library from the Libwebsockets (LWS) project, with
options for adding TLS (SSL) support, and options the adding various
event loop libraries that are dynamically loaded as plug-ins.

Signed-off-by: Ian Abbott <[email protected]>
---
v2: Get sources from github instead of libwebsockets.org's own git
server due to unreliable, on-the-fly generated tarballs from the latter.
---
 rules/libwebsockets.in   | 56 ++++++++++++++++++++++++++
 rules/libwebsockets.make | 85 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 141 insertions(+)
 create mode 100644 rules/libwebsockets.in
 create mode 100644 rules/libwebsockets.make

diff --git a/rules/libwebsockets.in b/rules/libwebsockets.in
new file mode 100644
index 000000000..e10413604
--- /dev/null
+++ b/rules/libwebsockets.in
@@ -0,0 +1,56 @@
+## SECTION=networking
+
+menuconfig LIBWEBSOCKETS
+       tristate
+       select HOST_CMAKE
+       select ZLIB
+       select LIBCAP
+       select OPENSSL          if LIBWEBSOCKETS_TLS
+       select LIBEV            if LIBWEBSOCKETS_LIBEV
+       select LIBUV            if LIBWEBSOCKETS_LIBUV
+       select LIBEVENT         if LIBWEBSOCKETS_LIBEVENT
+       select GLIB             if LIBWEBSOCKETS_GLIB
+       prompt "libwebsockets                 "
+       help
+         Libwebsockets is a lightweight pure C library for both
+         websockets clients and servers built to use minimal CPU
+         and memory resources and provide fast throughput in both
+         directions.
+
+if LIBWEBSOCKETS
+
+config LIBWEBSOCKETS_TLS
+       bool
+       prompt "TLS (SSL) support"
+       help
+         Turn on to include TLS (SSL) support.
+
+menuconfig LIBWEBSOCKETS_EVLIB
+       bool
+       prompt "Event library options          "
+       help
+         Turn on to enable various event library plug-ins.
+
+if LIBWEBSOCKETS_EVLIB
+
+config LIBWEBSOCKETS_LIBEV
+       bool
+       prompt "compile with support for libev"
+
+config LIBWEBSOCKETS_LIBUV
+       bool
+       prompt "compile with support for libuv"
+
+config LIBWEBSOCKETS_LIBEVENT
+       bool
+       prompt "compile with support for libevent"
+
+config LIBWEBSOCKETS_GLIB
+       bool
+       prompt "compile with support for glib event loop"
+
+endif
+
+endif
+
+# vim: ft=kconfig noet tw=72
diff --git a/rules/libwebsockets.make b/rules/libwebsockets.make
new file mode 100644
index 000000000..9203b308d
--- /dev/null
+++ b/rules/libwebsockets.make
@@ -0,0 +1,85 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2024 by Ian Abbott <[email protected]>
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_LIBWEBSOCKETS) += libwebsockets
+
+#
+# Paths and names
+#
+LIBWEBSOCKETS_VERSION          := 4.3.3
+LIBWEBSOCKETS_MD5              := c078b08b712316f6302f54a9d05273ae
+LIBWEBSOCKETS                  := libwebsockets-$(LIBWEBSOCKETS_VERSION)
+LIBWEBSOCKETS_SUFFIX           := tar.gz
+LIBWEBSOCKETS_URL              := 
https://github.com/warmcat/libwebsockets/archive/refs/tags/v$(LIBWEBSOCKETS_VERSION).$(LIBWEBSOCKETS_SUFFIX)
+LIBWEBSOCKETS_SOURCE           := 
$(SRCDIR)/$(LIBWEBSOCKETS).$(LIBWEBSOCKETS_SUFFIX)
+LIBWEBSOCKETS_DIR              := $(BUILDDIR)/$(LIBWEBSOCKETS)
+LIBWEBSOCKETS_LICENSE          := MIT AND BSD-2-Clause AND BSD-3-Clause
+LIBWEBSOCKETS_LICENSE_FILES    := 
file://LICENSE;md5=382bfdf329e774859fd401eaf850d29b
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+#
+# cmake
+#
+LIBWEBSOCKETS_CONF_TOOL        := cmake
+LIBWEBSOCKETS_CONF_OPT :=  \
+       $(CROSS_CMAKE_USR) \
+       -DLWS_WITHOUT_DAEMONIZE=OFF \
+       -DLWS_WITH_ZLIB=ON \
+       -DLWS_WITH_SSL=$(call ptx/onoff, PTXCONF_LIBWEBSOCKETS_TLS) \
+       -DLWS_WITH_LIBEV=$(call ptx/onoff, PTXCONF_LIBWEBSOCKETS_LIBEV) \
+       -DLWS_WITH_LIBUV=$(call ptx/onoff, PTXCONF_LIBWEBSOCKETS_LIBUV) \
+       -DLWS_WITH_LIBEVENT=$(call ptx/onoff, PTXCONF_LIBWEBSOCKETS_LIBEVENT) \
+       -DLWS_WITH_GLIB=$(call ptx/onoff, PTXCONF_LIBWEBSOCKETS_GLIB) \
+       -DLWS_WITHOUT_TESTAPPS=ON \
+       -DLWS_WITHOUT_TEST_PING=ON \
+       -DLWS_WITHOUT_TEST_CLIENT=ON \
+       -DLWS_WITHOUT_EXTENSIONS=OFF \
+       -DLWS_WITH_EXTERNAL_POLL=ON \
+       -DLWS_IPV6=$(call ptx/onoff, PTXCONF_GLOBAL_IPV6)
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/libwebsockets.targetinstall:
+       @$(call targetinfo)
+
+       @$(call install_init, libwebsockets)
+       @$(call install_fixup, libwebsockets,PRIORITY,optional)
+       @$(call install_fixup, libwebsockets,SECTION,base)
+       @$(call install_fixup, libwebsockets,AUTHOR,"Ian Abbott 
<[email protected]>")
+       @$(call install_fixup, libwebsockets,DESCRIPTION,missing)
+
+#      libraries
+       @$(call install_lib, libwebsockets, 0, 0, 0644, libwebsockets)
+
+#      plug-in libraries
+ifdef PTXCONF_LIBWEBSOCKETS_LIBEV
+       @$(call install_lib, libwebsockets, 0, 0, 0644, libwebsockets-evlib_ev)
+endif
+ifdef PTXCONF_LIBWEBSOCKETS_LIBUV
+       @$(call install_lib, libwebsockets, 0, 0, 0644, libwebsockets-evlib_uv)
+endif
+ifdef PTXCONF_LIBWEBSOCKETS_LIBEVENT
+       @$(call install_lib, libwebsockets, 0, 0, 0644, 
libwebsockets-evlib_event)
+endif
+ifdef PTXCONF_LIBWEBSOCKETS_GLIB
+       @$(call install_lib, libwebsockets, 0, 0, 0644, 
libwebsockets-evlib_glib)
+endif
+
+       @$(call install_finish, libwebsockets)
+
+       @$(call touch)
+
+# vim: syntax=make
-- 
2.43.0


Reply via email to