view Makefile @ 45:72de9aba5808

Allow any version of PostgreSQL from 12 onwards
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 17 Mar 2025 16:09:36 +0100
parents a4a312be008d
children e4f5fd3b2975
line wrap: on
line source

PORTNAME=	turnserver
PORTVERSION=	4.6.3
CATEGORIES=	net
MASTER_SITES=	http://turnserver.open-sys.org/downloads/extradocs/:xdocs \
		http://coturn.net/turnserver/extradocs/:xdocs
PKGNAMEPREFIX=	fag-
DISTFILES=	turn.extra.docs-2.0.0.1.tar.gz:xdocs

MAINTAINER=	freebsd-dev@dom66.de
COMMENT=	STUN/TURN Server; IPv6, DTLS support; RFCs 5389, 5766, 6062, 6156
WWW=		https://github.com/coturn/coturn

LICENSE=	BSD3CLAUSE
LICENSE_FILE=	${WRKSRC}/LICENSE

LIB_DEPENDS=	libevent.so:devel/libevent

FLAVORS=	default mysql pgsql alldb
FLAVOR?=	${FLAVORS:[1]}

USES=		perl5 pkgconfig shebangfix ssl
SHEBANG_FILES=	examples/scripts/restapi/shared_secret_maintainer.pl examples/scripts/oauth.sh
HAS_CONFIGURE=	yes
CONFIGURE_ENV+=	PTHREAD_LIBS=-pthread TURN_DISABLE_RPATH=1
# MongoDB support is disabled until devel/mongo-c-driver is updated
CONFIGURE_ENV+=	TURN_NO_MONGO=1
TEST_TARGET=	test

USE_GITHUB=	yes
GH_ACCOUNT=	coturn
GH_PROJECT=	coturn

SUB_FILES=	pkg-message
USE_RC_SUBR=	turnserver

CONFLICTS_INSTALL=	turnserver coturn

DESCR=	pkg-descr.${FLAVOR}

default_PKGNAMESUFFIX=
default_CONFLICTS_INSTALL=	${PKGNAMEPREFIX}${PORTNAME}-mysql ${PKGNAMEPREFIX}${PORTNAME}-pgsql ${PKGNAMEPREFIX}${PORTNAME}-alldb

alldb_PKGNAMESUFFIX=		-alldb
alldb_CONFLICTS_INSTALL=	${PKGNAMEPREFIX}${PORTNAME} ${PKGNAMEPREFIX}${PORTNAME}-mysql ${PKGNAMEPREFIX}${PORTNAME}-pgsql

mysql_PKGNAMESUFFIX=		-mysql
mysql_CONFLICTS_INSTALL=	${PKGNAMEPREFIX}${PORTNAME} ${PKGNAMEPREFIX}${PORTNAME}-pgsql ${PKGNAMEPREFIX}${PORTNAME}-alldb
.if ${FLAVOR} == mysql || ${FLAVOR} == alldb
USES+=		mysql
.else
CONFIGURE_ENV+=	TURN_NO_MYSQL=1
.endif

pgsql_PKGNAMESUFFIX=		-pgsql
pgsql_CONFLICTS_INSTALL=	${PKGNAMEPREFIX}${PORTNAME} ${PKGNAMEPREFIX}${PORTNAME}-mysql ${PKGNAMEPREFIX}${PORTNAME}-alldb
.if ${FLAVOR} == pgsql || ${FLAVOR} == alldb
USES+=		pgsql:12+
.else
CONFIGURE_ENV+=	TURN_NO_PQ=1
.endif

MANPAGES=	turnserver.1 turnadmin.1 turnutils.1 turnutils_peer.1 \
		turnutils_stunclient.1 turnutils_uclient.1 coturn.1 \
		turnutils_oauth.1 turnutils_natdiscovery.1

DOCS=	html TurnNetworks.pdf
PORTREADMEDOCS=	LICENSE README.turnserver README.turnadmin README.turnutils INSTALL
PORTDOCS=	${DOCS} ${PORTREADMEDOCS} postinstall.txt schema.sql schema.mongo.sh \
		schema.userdb.redis schema.stats.redis

_BIN_UTILS=	peer stunclient uclient oauth natdiscovery

_ETC_EXAMPLES=	turnserver.conf turn_client_cert.pem \
		turn_client_pkey.pem turn_server_cert.pem turn_server_pkey.pem
_SCRIPT_EXAMPLES=	peer.sh	oauth.sh pack.sh rfc5769.sh \
	basic/relay.sh basic/dos_attack.sh \
	basic/tcp_client_c2c_tcp_relay.sh basic/udp_c2c_client.sh \
	basic/udp_client.sh basic/tcp_client.sh \
	loadbalance/master_relay.sh loadbalance/slave_relay_1.sh loadbalance/slave_relay_2.sh \
	loadbalance/udp_c2c.sh loadbalance/tcp_c2c_tcp_relay.sh \
	longtermsecure/secure_dtls_client.sh longtermsecure/secure_relay.sh \
	longtermsecure/secure_tls_client_cert.sh longtermsecure/secure_dtls_client_cert.sh \
	longtermsecure/secure_relay_cert.sh \
	longtermsecure/secure_tcp_client_c2c_tcp_relay.sh longtermsecure/secure_tcp_client.sh \
	longtermsecure/secure_tls_client_c2c_tcp_relay.sh longtermsecure/secure_tls_client.sh \
	longtermsecure/secure_udp_c2c.sh longtermsecure/secure_udp_client.sh \
	longtermsecure/secure_sctp_client.sh \
	longtermsecure/secure_dos_attack.sh \
	longtermsecuredb/secure_relay_with_db_psql.sh \
	longtermsecuredb/secure_relay_with_db_mysql.sh \
	longtermsecuredb/secure_relay_with_db_mysql_ssl.sh \
	longtermsecuredb/secure_relay_with_db_mongo.sh \
	longtermsecuredb/secure_relay_with_db_redis.sh \
	longtermsecuredb/secure_relay_with_db_sqlite.sh \
	restapi/secure_relay_secret.sh \
	restapi/secure_relay_secret_with_db_mysql.sh \
	restapi/secure_relay_secret_with_db_psql.sh \
	restapi/secure_relay_secret_with_db_redis.sh \
	restapi/secure_relay_secret_with_db_mongo.sh \
	restapi/secure_relay_secret_with_db_sqlite.sh \
	restapi/secure_udp_client_with_secret.sh \
	restapi/secure_relay_secret_with_db_psql.sh \
	restapi/shared_secret_maintainer.pl \
	selfloadbalance/secure_dos_attack.sh \
	selfloadbalance/secure_relay.sh \
	mobile/mobile_dtls_client.sh \
	mobile/mobile_relay.sh \
	mobile/mobile_tcp_client.sh \
	mobile/mobile_tls_client_c2c_tcp_relay.sh \
	mobile/mobile_udp_client.sh

OPTIONS_DEFINE=	DOCS EXAMPLES REDIS SQLITE PROMETHEUS
OPTIONS_DEFAULT=	REDIS SQLITE
OPTIONS_SUB=	yes

REDIS_DESC=	Redis support for user database and for status and statistics reporting
REDIS_LIB_DEPENDS=	libhiredis.so:databases/hiredis
REDIS_CONFIGURE_ENV_OFF=	TURN_NO_HIREDIS=1

SQLITE_USES=	sqlite
SQLITE_CONFIGURE_ENV_OFF=	TURN_NO_SQLITE=1

PROMETHEUS_DESC=	Prometheus monitoring and alerting support
# We need a Prometheus C client to be linked with (-lprom)
# e.g https://github.com/digitalocean/prometheus-client-c
# If enabled it will be automatically disabled again at configure time.
PROMETHEUS_CONFIGURE_ENV_OFF=	TURN_NO_PROMETHEUS=1

do-install:
	${INSTALL_PROGRAM} ${WRKSRC}/bin/turnserver ${STAGEDIR}${PREFIX}/bin/turnserver
	${INSTALL_PROGRAM} ${WRKSRC}/bin/turnadmin ${STAGEDIR}${PREFIX}/bin/turnadmin
.for f in ${_BIN_UTILS}
	${INSTALL_PROGRAM} ${WRKSRC}/bin/turnutils_${f} ${STAGEDIR}${PREFIX}/bin/
.endfor
	(cd ${WRKSRC}/man/man1 && ${INSTALL_MAN} ${MANPAGES} \
		${STAGEDIR}${PREFIX}/share/man/man1)
	${MKDIR} ${STAGEDIR}${DATADIR}
	(cd ${WRKSRC}/turndb && ${INSTALL_DATA} schema.sql schema.userdb.redis \
		schema.stats.redis testsqldbsetup.sql ${STAGEDIR}${DATADIR})
	(cd ${WRKSRC}/turndb && ${INSTALL_SCRIPT} testredisdbsetup.sh schema.mongo.sh \
		testmongosetup.sh ${STAGEDIR}${DATADIR})
	${INSTALL_DATA} ${WRKSRC}/lib/libturnclient.a ${STAGEDIR}${PREFIX}/lib
	${INSTALL_DATA} ${WRKSRC}/examples/etc/turnserver.conf \
		${STAGEDIR}${PREFIX}/etc/turnserver.conf.default
	${MKDIR} ${STAGEDIR}${PREFIX}/include/turn
	(cd ${WRKSRC}/include/turn && ${COPYTREE_SHARE} "client ns_turn_defs.h" \
		${STAGEDIR}${PREFIX}/include/turn)

do-install-SQLITE-on:
	${MKDIR} ${STAGEDIR}/var/lib/turn
	${INSTALL_DATA} ${WRKSRC}/sqlite/turndb ${STAGEDIR}/var/lib/turn/turndb.sample

do-install-EXAMPLES-on:
.for dir in basic loadbalance longtermsecure longtermsecuredb mobile restapi selfloadbalance
	${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/scripts/${dir}
.endfor
	${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/etc
	${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/var/db
	${INSTALL_DATA} ${WRKSRC}/examples/scripts/readme.txt \
		${STAGEDIR}${EXAMPLESDIR}/scripts
	(cd ${WRKSRC}/examples/etc && ${INSTALL_DATA} ${_ETC_EXAMPLES} \
		${STAGEDIR}${EXAMPLESDIR}/etc)
	(cd ${WRKSRC}/examples/var/db && ${INSTALL_DATA} turndb ${STAGEDIR}${EXAMPLESDIR}/var/db)
.for f in ${_SCRIPT_EXAMPLES}
	${INSTALL_SCRIPT} ${WRKSRC}/examples/scripts/${f} \
		${STAGEDIR}${EXAMPLESDIR}/scripts/${f}
.endfor

do-install-DOCS-on:
	${MKDIR} ${STAGEDIR}${DOCSDIR}
	(cd ${WRKDIR}/turndocs/docs && ${COPYTREE_SHARE} "${DOCS}" ${STAGEDIR}${DOCSDIR})
	(cd ${WRKSRC} && ${INSTALL_DATA} ${PORTREADMEDOCS} ${STAGEDIR}${DOCSDIR})
	${INSTALL_DATA} ${PKGMESSAGE} ${STAGEDIR}${DOCSDIR}/postinstall.txt
	(cd ${WRKSRC}/turndb && ${INSTALL_DATA} schema.sql schema.mongo.sh \
		schema.userdb.redis schema.stats.redis ${STAGEDIR}${DOCSDIR})

.include <bsd.port.mk>