aboutsummaryrefslogtreecommitdiff
path: root/net/libwebsockets/Makefile
blob: 57b8662eeafbafc7abf9971eb8bb7b96801fbb11 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Created by: Iblis Lin <iblis@hs.ntnu.edu.tw>

PORTNAME=	libwebsockets
DISTVERSIONPREFIX=	v
DISTVERSION=	4.2.2
CATEGORIES=	net devel
MASTER_SITES=	https://libwebsockets.org/git/libwebsockets/snapshot/

MAINTAINER=	ports@FreeBSD.org
COMMENT=	C library for lightweight websocket clients and servers

LICENSE=	MIT
LICENSE_FILE=	${WRKSRC}/LICENSE

USES=		cmake localbase pkgconfig tar:xz
USE_LDCONFIG=	yes

CMAKE_ARGS=	-DLWS_BUILD_HASH:STRING="${BUILDINFO}"
CMAKE_ON=	CMAKE_DISABLE_FIND_PACKAGE_Git \
		LWS_IPV6 LWS_WITH_SSL LWS_WITH_ZLIB \
		LWS_WITHOUT_TESTAPPS LWS_WITHOUT_TEST_SERVER \
		LWS_WITHOUT_TEST_SERVER_EXTPOLL \
		LWS_WITHOUT_TEST_PING LWS_WITHOUT_TEST_CLIENT

OPTIONS_DEFINE=		HTTP_PROXY HTTP2 MQTT PEERLIMITS PLUGINS \
			SECURE_STREAMS SOCKS SQLITE WEBSERVER
OPTIONS_DEFAULT=	HTTP2 MQTT OPENSSL LIBUV
OPTIONS_SUB=		yes

OPTIONS_SINGLE=		SSL
OPTIONS_SINGLE_SSL=	MBEDTLS OPENSSL
OPTIONS_GROUP=		EVLOOP
OPTIONS_GROUP_EVLOOP=	GLIB LIBEV LIBEVENT LIBUV

HTTP_PROXY_DESC=	HTTP proxy support
MQTT_DESC=		MQTT client support
PEERLIMITS_DESC=	Tracking and limiting of resources of peer(s)
PLUGINS_DESC=		Plugins support
SECURE_STREAMS_DESC=	Secure streams protocol API support
SOCKS_DESC=		Allow use of SOCKS5 proxy on client connections
EVLOOP_DESC=		Event loop support
GLIB_DESC=		Events support via Glib
LIBEVENT_DESC=		Asynchronous event notification via libevent
LIBUV_DESC=		Asynchronous I/O support via libuv

HTTP_PROXY_CMAKE_BOOL=	LWS_WITH_HTTP_PROXY
HTTP2_CMAKE_BOOL=	LWS_WITH_HTTP2
MQTT_CMAKE_BOOL=	LWS_ROLE_MQTT
PEERLIMITS_CMAKE_BOOL=	LWS_WITH_PEER_LIMITS
PLUGINS_CMAKE_BOOL=	LWS_WITH_PLUGINS \
			LWS_WITH_PLUGINS_API
SECURE_STREAMS_CMAKE_BOOL=	LWS_WITH_SECURE_STREAMS \
			LWS_WITH_SECURE_STREAMS_PROXY_API
SOCKS_CMAKE_BOOL=	LWS_WITH_SOCKS5
SQLITE_LIB_DEPENDS=	libsqlite3.so:databases/sqlite3
SQLITE_CMAKE_BOOL=	LWS_WITH_SQLITE3
WEBSERVER_CMAKE_BOOL=	LWS_WITH_LWSWS
WEBSERVER_IMPLIES=	PEERLIMITS PLUGINS LIBUV

MBEDTLS_LIB_DEPENDS=	libmbedtls.so:security/mbedtls
MBEDTLS_CMAKE_BOOL=	LWS_WITH_MBEDTLS
OPENSSL_USES=		ssl
OPENSSL_CMAKE_BOOL=	LWS_WITHOUT_BUILTIN_SHA1
# WolfSSL needs to be compiled with --enable-libwebsockets to work
# WOLFSSL_LIB_DEPENDS=	libwolfssl.so:security/wolfssl
# WOLFSSL_CMAKE_BOOL=	LWS_WITH_SSL LWS_WITH_WOLFSSL
# WOLFSSL_CMAKE_ON=	-DLWS_WOLFSSL_INCLUDE_DIRS=${LOCALBASE}/include \
#			-DLWS_WOLFSSL_LIBRARIES=${LOCALBASE}/lib/libwolfssl.so

GLIB_USES=		gnome
GLIB_USE=		GNOME=glib20
GLIB_CMAKE_BOOL=	LWS_WITH_GLIB
LIBEV_LIB_DEPENDS=	libev.so:devel/libev
LIBEV_CMAKE_BOOL=	LWS_WITH_LIBEV
LIBEVENT_LIB_DEPENDS=	libevent.so:devel/libevent
LIBEVENT_CMAKE_BOOL=	LWS_WITH_LIBEVENT
LIBUV_LIB_DEPENDS=	libuv.so:devel/libuv
LIBUV_CMAKE_BOOL=	LWS_WITH_LIBUV

BUILDINFO=	${HOSTARCH}-portbld-${OPSYS:tl}-${OSREL:R}

.include <bsd.port.options.mk>

# Allow usage of LibreSSL via OPENSSL option
.if ${PORT_OPTIONS:MOPENSSL} && ${SSL_DEFAULT} == libressl
CMAKE_ARGS+=            -DLWS_OPENSSL_LIBRARIES='${OPENSSLLIB}/libtls.so;${OPENSSLLIB}/libssl.so;${OPENSSLLIB}/libcrypto.so' -DLWS_OPENSSL_INCLUDE_DIRS=${OPENSSLINC}/ssl
.endif

.include <bsd.port.mk>