From eeeaf8bcb4feac380d246e3404687de25ee65e24 Mon Sep 17 00:00:00 2001 From: Hristo Venev Date: Tue, 16 Oct 2018 10:07:34 +0100 Subject: Initial commit --- 0000-pkg-config.patch | 1503 ++++++++++++++++++++++++++++++++++++++++++++++ coturn.spec | 159 +++++ turnserver-tmpfiles.conf | 1 + turnserver.service | 26 + turnserver.sysconfig | 1 + 5 files changed, 1690 insertions(+) create mode 100644 0000-pkg-config.patch create mode 100644 coturn.spec create mode 100644 turnserver-tmpfiles.conf create mode 100644 turnserver.service create mode 100644 turnserver.sysconfig diff --git a/0000-pkg-config.patch b/0000-pkg-config.patch new file mode 100644 index 0000000..47a8eaa --- /dev/null +++ b/0000-pkg-config.patch @@ -0,0 +1,1503 @@ +diff --git a/configure b/configure +index bc76478..4b66ebc 100755 +--- a/configure ++++ b/configure +@@ -3,171 +3,48 @@ + # Proprietary configure script of Coturn project + + cleanup() { +- rm -rf ${TMPCPROGC} +- rm -rf ${TMPCPROGB} +- rm -rf ${TH_TMPCPROGC} +- rm -rf ${TH_TMPCPROGB} +- rm -rf ${GCM_TMPCPROGC} +- rm -rf ${GCM_TMPCPROGB} +- rm -rf ${PQ_TMPCPROGC} +- rm -rf ${PQ_TMPCPROGB} +- rm -rf ${MYSQL_TMPCPROGC} +- rm -rf ${MYSQL_TMPCPROGB} +- rm -rf ${MONGO_TMPCPROGC} +- rm -rf ${MONGO_TMPCPROGB} +- rm -rf ${D_TMPCPROGC} +- rm -rf ${D_TMPCPROGB} +- rm -rf ${SQL_TMPCPROGC} +- rm -rf ${SQL_TMPCPROGO} +- rm -rf ${E_TMPCPROGC} +- rm -rf ${E_TMPCPROGO} +- rm -rf ${HR_TMPCPROGC} +- rm -rf ${HR_TMPCPROGB} +- rm -rf ${TMPCADDRPROGO} ++ rm -rf ${TMPCPROGC} ++ rm -rf ${TMPCPROGB} ++ rm -rf ${TH_TMPCPROGC} ++ rm -rf ${TH_TMPCPROGB} ++ rm -rf ${GCM_TMPCPROGC} ++ rm -rf ${GCM_TMPCPROGB} ++ rm -rf ${D_TMPCPROGC} ++ rm -rf ${D_TMPCPROGB} ++ rm -rf ${TMPCADDRPROGO} + } + + testlibraw() { + ${CC} ${TMPCPROGC} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -${1} 2>>/dev/null + ER=$? + if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Library option -${1} cannot be used" +- return 0 +- else +- OSLIBS="${OSLIBS} -${1}" +- return 1 ++ ${ECHO_CMD} "Library option -${1} cannot be used" ++ return 1 + fi +-} + +-testsqlite_comp() { +- SQLITE_LIBS=-lsqlite3 +- ${CC} -c ${SQL_TMPCPROGC} -o ${SQL_TMPCPROGO} ${OSCFLAGS} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "SQLite development is not installed properly" +- return 0 +- else +- DBLIBS="${DBLIBS} ${SQLITE_LIBS}" +- return 1 +- fi ++ OSLIBS="${OSLIBS} -${1}" + } + +-testlibevent2_comp() { +- ${CC} -c ${E_TMPCPROGC} -o ${E_TMPCPROGO} ${OSCFLAGS} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Libevent2 development is not installed properly" +- return 0 +- else +- return 1 +- fi +-} +- +-testhiredis() { +- for inc in ${INCLUDEDIR}/hiredis /usr/local/include/hiredis /usr/hiredis /usr/include/hiredis +- do +- if [ -d ${inc} ] ; then +- HIREDISCFLAGS="${HIREDISCFLAGS} -I${inc}" +- fi +- done +- HIREDISLIBS=-lhiredis +- ${CC} ${HR_TMPCPROGC} -o ${HR_TMPCPROGB} ${OSCFLAGS} ${DBLIBS} ${HIREDISCFLAGS} ${HIREDISLIBS} ${OSLIBS} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} +- ${ECHO_CMD} "HIREDIS DEVELOPMENT LIBRARY (libhiredis.*) AND/OR HEADERS (hiredis/*.h)" +- ${ECHO_CMD} " ARE NOT INSTALLED PROPERLY ON THIS SYSTEM." +- ${ECHO_CMD} " THAT'S OK BUT THE TURN SERVER IS BUILDING WITHOUT REDIS SUPPORT." +- ${ECHO_CMD} +- return 0 +- else +- DBCFLAGS="${DBCFLAGS} ${HIREDISCFLAGS}" +- DBLIBS="${DBLIBS} ${HIREDISLIBS}" +- return 1 ++# testpkg_server pkg1 pkg2 ... ++# If all libraries are found, adds them to DBCFLAGS/DBLIBS and returns success. ++# Otherwise, returns failure. ++testpkg_server() { ++ ADD_LIBS=`$PKGCONFIG --libs "$@" 2>/dev/null` ++ if [ $? -ne 0 ] ; then ++ return 1 + fi ++ DBCFLAGS="${DBCFLAGS} `$PKGCONFIG --cflags "$@"`" ++ DBLIBS="${DBLIBS} $ADD_LIBS" + } + +-testlibpq() { +- POSTCFLAGS="-I${PREFIX}/pgsql/include -I${PREFIX}/include/pgsql/ -I${PREFIX}/include/postgres/ -I${PREFIX}/postgres/include/ -I${PREFIX}/include/postgresql/ -I${PREFIX}/postgresql/include/" +- POSTCFLAGS="${POSTCFLAGS} -I/usr/local/pgsql/include -I/usr/local/include/pgsql/ -I/usr/local/include/postgres/ -I/usr/local/postgres/include/ -I/usr/local/include/postgresql/ -I/usr/local/postgresql/include/" +- POSTCFLAGS="${POSTCFLAGS} -I/usr/pgsql/include -I/usr/include/pgsql/ -I/usr/include/postgres/ -I/usr/postgres/include/ -I/usr/include/postgresql/ -I/usr/postgresql/include/" +- for ilib in ${PREFIX}/pgsql/lib ${PREFIX}/lib/pgsql ${PREFIX}/lib64/pgsql /usr/local/pgsql/lib /usr/local/lib/pgsql /usr/local/lib64/pgsql /usr/pgsql/lib /usr/lib/pgsql /usr/lib64/pgsql ${PREFIX}/postgres/lib ${PREFIX}/lib/postgres ${PREFIX}/lib64/postgres /usr/local/postgres/lib /usr/local/lib/postgres /usr/local/lib64/postgres /usr/postgres/lib /usr/lib/postgres /usr/lib64/postgres ${PREFIX}/postgresql/lib ${PREFIX}/lib/postgresql ${PREFIX}/lib64/postgresql /usr/local/postgresql/lib /usr/local/lib/postgresql /usr/local/lib64/postgresql /usr/postgresql/lib /usr/lib/postgresql /usr/lib64/postgresql +- do +- if [ -d ${ilib} ] ; then +- POSTLIBS="${POSTLIBS} -L${ilib}" +- if ! [ -z "${TURN_ACCEPT_RPATH}" ] ; then +- TURN_RPATH="${TURN_RPATH} -Wl,-rpath,${ilib}" +- fi +- fi +- done +- POSTLIBS="${OSLIBS} ${POSTLIBS} -lpq" +- ${CC} ${PQ_TMPCPROGC} -o ${PQ_TMPCPROGB} ${OSCFLAGS} ${DBCFLAGS} ${POSTCFLAGS} ${DBLIBS} ${POSTLIBS} ${OSLIBS} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} +- ${ECHO_CMD} "POSTGRESQL DEVELOPMENT LIBRARY (libpq.a) AND/OR HEADER (libpq-fe.h)" +- ${ECHO_CMD} " ARE NOT INSTALLED PROPERLY ON THIS SYSTEM." +- ${ECHO_CMD} " THAT'S OK BUT THE TURN SERVER IS BUILDING WITHOUT POSTGRESQL DATABASE SUPPORT." +- ${ECHO_CMD} +- return 0 +- else +- DBCFLAGS="${DBCFLAGS} ${POSTCFLAGS}" +- DBLIBS="${DBLIBS} ${POSTLIBS}" +- return 1 +- fi +-} +- +-testlibmysql() { +- MYSQL_CFLAGS="-I${PREFIX}/mysql/include -I${PREFIX}/include/mysql/" +- MYSQL_CFLAGS="${MYSQL_CFLAGS} -I/usr/local/mysql/include -I/usr/local/include/mysql/" +- MYSQL_CFLAGS="${MYSQL_CFLAGS} -I/usr/mysql/include -I/usr/include/mysql/" +- for ilib in ${PREFIX}/mysql/lib ${PREFIX}/lib/mysql ${PREFIX}/lib64/mysql /usr/local/mysql/lib /usr/local/lib/mysql /usr/local/lib64/mysql /usr/mysql/lib /usr/lib/mysql /usr/lib64/mysql +- do +- if [ -d ${ilib} ] ; then +- MYSQL_LIBS="${MYSQL_LIBS} -L${ilib}" +- if ! [ -z "${TURN_ACCEPT_RPATH}" ] ; then +- TURN_RPATH="${TURN_RPATH} -Wl,-rpath,${ilib}" +- fi +- fi +- done +- MYSQL_LIBS="${OSLIBS} ${MYSQL_LIBS} -lmysqlclient" +- ${CC} ${MYSQL_TMPCPROGC} -o ${MYSQL_TMPCPROGB} ${OSCFLAGS} ${DBCFLAGS} ${DBLIBS} ${MYSQL_CFLAGS} ${MYSQL_LIBS} ${OSLIBS} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} +- ${ECHO_CMD} "MYSQL DEVELOPMENT LIBRARY (libmysqlclient) AND/OR HEADER (mysql.h)" +- ${ECHO_CMD} " ARE NOT INSTALLED PROPERLY ON THIS SYSTEM." +- ${ECHO_CMD} " THAT'S OK BUT THE TURN SERVER IS BUILDING WITHOUT MYSQL DATABASE SUPPORT." +- ${ECHO_CMD} +- return 0 +- else +- DBCFLAGS="${DBCFLAGS} ${MYSQL_CFLAGS}" +- DBLIBS="${DBLIBS} ${MYSQL_LIBS}" +- return 1 +- fi +-} +- +-testlibmongoc() { +- for inc in ${INCLUDEDIR}/libmongoc-1.0 ${INCLUDEDIR}/libbson-1.0 /usr/local/include/libmongoc-1.0 /usr/local/include/libbson-1.0 /usr/libmongoc-1.0 /usr/libbson-1.0 /usr/include/libbson-1.0/ /usr/include/libmongoc-1.0/ +- do +- if [ -d ${inc} ] ; then +- MONGO_CFLAGS="${MONGO_CFLAGS} -I${inc}" +- fi +- done +- MONGO_LIBS="-lmongoc-1.0 -lbson-1.0" +- ${CC} ${MONGO_TMPCPROGC} -o ${MONGO_TMPCPROGB} ${OSCFLAGS} ${DBCFLAGS} ${DBLIBS} ${MONGO_CFLAGS} ${MONGO_LIBS} ${OSLIBS} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} +- ${ECHO_CMD} "MONGODB DEVELOPMENT LIBRARIES (libmongoc-1.0 and libbson-1.0) AND/OR HEADER (mongoc.h)" +- ${ECHO_CMD} " ARE NOT INSTALLED PROPERLY ON THIS SYSTEM." +- ${ECHO_CMD} " THAT'S OK BUT THE TURN SERVER IS BUILDING WITHOUT MONGODB SUPPORT." +- ${ECHO_CMD} +- return 0 +- else +- DBCFLAGS="${DBCFLAGS} ${MONGO_CFLAGS}" +- DBLIBS="${DBLIBS} ${MONGO_LIBS}" +- return 1 ++# Like testpkg_server, but adds flags to OSCFLAGS/OSLIBS ++testpkg_common() { ++ ADD_LIBS=`$PKGCONFIG --libs "$@" 2>/dev/null` ++ if [ $? -ne 0 ] ; then ++ return 1 + fi ++ OSCFLAGS="${OSCFLAGS} `$PKGCONFIG --cflags "$@"`" ++ OSLIBS="${OSLIBS} $ADD_LIBS" + } + + testlib() { +@@ -175,61 +52,48 @@ testlib() { + } + + pthread_testlib() { ++ if [ -n "${PTHREAD_LIBS}" ] ; then ++ OSLIBS="${OSLIBS} ${PTHREAD_LIBS}" ++ return ++ fi + +- SYSTEM=`uname` ++ if [ `uname` = "DragonFly" ] ; then ++ OSLIBS="${OSLIBS} -pthread" ++ TURN_NO_SCTP=1 ++ return ++ fi + +- if [ "${SYSTEM}" = "DragonFly" ] ; then +- OSLIBS="${OSLIBS} -pthread" +- TURN_NO_SCTP=1 ++ if [ -n `uname | grep -i bsd` ] ; then ++ OSLIBS="${OSLIBS} -pthread" ++ return + fi + +- ISBSD=`uname | grep -i bsd` +- if ! [ -z "${ISBSD}" ] ; then +- OSLIBS="${OSLIBS} -pthread" ++ ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>/dev/null ++ if [ $? -eq 0 ] ; then ++ return + fi + +- if [ -z "${PTHREAD_LIBS}" ] ; then +- ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null +- ER=$? +- if [ ${ER} -eq 0 ] ; then +- return 1 +- else +- ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -pthread 2>>/dev/null +- ER=$? +- if [ ${ER} -eq 0 ] ; then +- OSLIBS="${OSLIBS} -pthread" +- return 1 +- else +- ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -lpthread 2>>/dev/null +- ER=$? +- if [ ${ER} -eq 0 ] ; then +- OSLIBS="${OSLIBS} -lpthread" +- return 1 +- fi +- fi +- fi +- else +- OSLIBS="${OSLIBS} ${PTHREAD_LIBS}" ++ ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -pthread 2>/dev/null ++ if [ $? -eq 0 ] ; then ++ OSLIBS="${OSLIBS} -pthread" ++ return + fi +- + +- ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null +- ER=$? +- if [ ${ER} -eq 0 ] ; then +- return 1 +- else +- ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -D_GNU_SOURCE 2>>/dev/null +- ER=$? +- if [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Older GNU pthread library found" +- OSCFLAGS="${OSCFLAGS} -D_GNU_SOURCE" +- return 1 +- else +- ${ECHO_CMD} "Do not use pthreads" +- fi ++ ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -lpthread 2>/dev/null ++ if [ $? -eq 0 ] ; then ++ OSLIBS="${OSLIBS} -lpthread" ++ return ++ fi ++ ++ ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -pthread -D_GNU_SOURCE 2>/dev/null ++ if [ $? -eq 0 ] ; then ++ ${ECHO_CMD} "Older GNU pthread library found" ++ OSCFLAGS="${OSLIBS} -D_GNU_SOURCE" ++ OSLIBS="${OSLIBS} -pthread" ++ return + fi +- +- return 0 ++ ++ return 1 + } + + pthread_testbarriers() { +@@ -238,33 +102,23 @@ pthread_testbarriers() { + ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null + ER=$? + if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "pthread barriers not found" +- OSCFLAGS="${OSCFLAGS} -DTURN_NO_THREAD_BARRIERS" ++ ${ECHO_CMD} "pthread barriers not found" ++ OSCFLAGS="${OSCFLAGS} -DTURN_NO_THREAD_BARRIERS" ++ return 1 + fi + } + + gcm_testlib() { +- +- if [ -z "${TURN_NO_GCM}" ] ; then +- ${CC} ${GCM_TMPCPROGC} -o ${GCM_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null +- ER=$? +- if [ ${ER} -eq 0 ] ; then +- return 1 +- else +- return 0 +- fi +- else +- return 0 +- fi ++ ${CC} ${GCM_TMPCPROGC} -o ${GCM_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>/dev/null + } + + testdaemon() { + +- ${CC} ${D_TMPCPROGC} -o ${D_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null +- ER=$? +- if [ ${ER} -eq 0 ] ; then +- OSCFLAGS="${OSCFLAGS} -DTURN_HAS_DAEMON" +- fi ++ ${CC} ${D_TMPCPROGC} -o ${D_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null ++ ER=$? ++ if [ ${ER} -eq 0 ] ; then ++ OSCFLAGS="${OSCFLAGS} -DTURN_HAS_DAEMON" ++ fi + } + + test_sin_len() { +@@ -272,16 +126,16 @@ test_sin_len() { + ${CC} -c ${OSCFLAGS} -DTURN_HAS_SIN_LEN -Isrc ${TMPCADDRPROGC} -o ${TMPCADDRPROGO} 2>>/dev/null + ER=$? + if [ ${ER} -eq 0 ] ; then +- OSCFLAGS="${OSCFLAGS} -DTURN_HAS_SIN_LEN" +- ${ECHO_CMD} "Sockets code is fine: sin_len field present" ++ OSCFLAGS="${OSCFLAGS} -DTURN_HAS_SIN_LEN" ++ ${ECHO_CMD} "Sockets code is fine: sin_len field present" + else +- ${CC} -c ${OSCFLAGS} -Isrc ${TMPCADDRPROGC} -o ${TMPCADDRPROGO} 2>>/dev/null +- ER=$? +- if [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Sockets code is fine: no sin_len field present" +- else +- ${ECHO_CMD} "WARNING: trial compilation failed: src/client/ns_turn_ioaddr.c" +- fi ++ ${CC} -c ${OSCFLAGS} -Isrc ${TMPCADDRPROGC} -o ${TMPCADDRPROGO} 2>>/dev/null ++ ER=$? ++ if [ ${ER} -eq 0 ] ; then ++ ${ECHO_CMD} "Sockets code is fine: no sin_len field present" ++ else ++ ${ECHO_CMD} "WARNING: trial compilation failed: src/client/ns_turn_ioaddr.c" ++ fi + fi + } + +@@ -296,15 +150,15 @@ cleanup + ######################### + + if [ -z "${ECHO_CMD}" ] ; then +- ECHO_CMD=echo ++ ECHO_CMD=echo + fi + + if [ -z "${FIND_CMD}" ] ; then +- FIND_CMD=find ++ FIND_CMD=find + fi + + if [ -z "${PORTNAME}" ] ; then +- PORTNAME=turnserver ++ PORTNAME=turnserver + fi + + ######################### +@@ -315,237 +169,229 @@ ac_prev= + ac_dashdash= + for ac_option + do +- # If the previous option needs an argument, assign it. +- if test -n "$ac_prev"; then +- eval $ac_prev=\$ac_option +- ac_prev= +- continue +- fi +- +- case $ac_option in +- *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; +- *=) ac_optarg= ;; +- *) ac_optarg=yes ;; +- esac +- +- # Accept the important Cygnus configure options, so we can diagnose typos. +- +- case $ac_dashdash$ac_option in +- --) +- ac_dashdash=yes ;; +- +- -bindir | --bindir | --bindi | --bind | --bin | --bi) +- ac_prev=BINDIR ;; +- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) +- BINDIR=$ac_optarg ;; +- +- -localstatedir | --localstatedir | --localstatedi | --localstated | --localstate | --localstat) +- ac_prev=LOCALSTATEDIR ;; +- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* | --localstate=* | --localstat=*) +- LOCALSTATEDIR=$ac_optarg ;; +- +- -turndbdir | --turndbdir | --turndbdi | --turndbd | --turndb | --turnd) +- ac_prev=TURNDBDIR ;; +- -turndbdir=* | --turndbdir=* | --turndbdi=* | --turndbd=* | --turndb=* | --turnd=*) +- TURNDBDIR=$ac_optarg ;; +- +- -datadir | --datadir | --datadi | --datad | -schemadir | --schemadir) +- ac_prev=SCHEMADIR ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | -schemadir=* | --schemadir=*) +- SCHEMADIR=$ac_optarg ;; +- +- -docdir | --docdir | --docdi | --doc | --do | -docsdir | --docsdir | --docsdi | --docs) +- ac_prev=DOCDIR ;; +- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=* | -docsdir=* | --docsdir=* | --docsdi=* | --docs=*) +- DOCSDIR=$ac_optarg ;; +- +- -examplesdir | --examplesdir | -examples | --examples) +- ac_prev=EXAMPLESDIR ;; +- -examplesdir=* | --examplesdir=* | -examples=* | --examples=*) +- EXAMPLESDIR=$ac_optarg ;; +- +- -includedir | --includedir | --includedi | --included | --include \ +- | --includ | --inclu | --incl | --inc) +- ac_prev=INCLUDEDIR ;; +- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ +- | --includ=* | --inclu=* | --incl=* | --inc=*) +- INCLUDEDIR=$ac_optarg ;; +- +- -turnincludedir | --turnincludedir) +- ac_prev=TURNINCLUDEDIR ;; +- -turnincludedir=* | --turnincludedir=*) +- TURNINCLUDEDIR=$ac_optarg ;; +- +- -libdir | --libdir | --libdi | --libd) +- ac_prev=LIBDIR ;; +- -libdir=* | --libdir=* | --libdi=* | --libd=*) +- LIBDIR=$ac_optarg ;; +- +- -mandir | --mandir | --mandi | --mand | --man | --ma | --m | -manprefix | --manprefix) +- ac_prev=MAXPREFIX ;; +- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=* | -manprefix=* | --manprefix=*) +- MANPREFIX=$ac_optarg ;; +- +- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) +- ac_prev=PREFIX ;; +- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) +- PREFIX=$ac_optarg ;; +- +- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ +- | --syscon | --sysco | --sysc | --sys | --sy | -confdir | --confdir) +- ac_prev=CONFDIR ;; +- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ +- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=* | -confdir=* | --confdir=*) +- CONFDIR=$ac_optarg ;; +- +- -disable-rpath | --disable-rpath) +- TURN_DISABLE_RPATH=1 ;; +- +- esac +- ++ # If the previous option needs an argument, assign it. ++ if test -n "$ac_prev"; then ++ eval $ac_prev=\$ac_option ++ ac_prev= ++ continue ++ fi ++ ++ case $ac_option in ++ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *=) ac_optarg= ;; ++ *) ac_optarg=yes ;; ++ esac ++ ++ # Accept the important Cygnus configure options, so we can diagnose typos. ++ ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; ++ ++ -bindir | --bindir | --bindi | --bind | --bin | --bi) ++ ac_prev=BINDIR ;; ++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ++ BINDIR=$ac_optarg ;; ++ ++ -localstatedir | --localstatedir | --localstatedi | --localstated | --localstate | --localstat) ++ ac_prev=LOCALSTATEDIR ;; ++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* | --localstate=* | --localstat=*) ++ LOCALSTATEDIR=$ac_optarg ;; ++ ++ -turndbdir | --turndbdir | --turndbdi | --turndbd | --turndb | --turnd) ++ ac_prev=TURNDBDIR ;; ++ -turndbdir=* | --turndbdir=* | --turndbdi=* | --turndbd=* | --turndb=* | --turnd=*) ++ TURNDBDIR=$ac_optarg ;; ++ ++ -datadir | --datadir | --datadi | --datad | -schemadir | --schemadir) ++ ac_prev=SCHEMADIR ;; ++ -datadir=* | --datadir=* | --datadi=* | --datad=* | -schemadir=* | --schemadir=*) ++ SCHEMADIR=$ac_optarg ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do | -docsdir | --docsdir | --docsdi | --docs) ++ ac_prev=DOCDIR ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=* | -docsdir=* | --docsdir=* | --docsdi=* | --docs=*) ++ DOCSDIR=$ac_optarg ;; ++ ++ -examplesdir | --examplesdir | -examples | --examples) ++ ac_prev=EXAMPLESDIR ;; ++ -examplesdir=* | --examplesdir=* | -examples=* | --examples=*) ++ EXAMPLESDIR=$ac_optarg ;; ++ ++ -includedir | --includedir | --includedi | --included | --include \ ++ | --includ | --inclu | --incl | --inc) ++ ac_prev=INCLUDEDIR ;; ++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ ++ | --includ=* | --inclu=* | --incl=* | --inc=*) ++ INCLUDEDIR=$ac_optarg ;; ++ ++ -turnincludedir | --turnincludedir) ++ ac_prev=TURNINCLUDEDIR ;; ++ -turnincludedir=* | --turnincludedir=*) ++ TURNINCLUDEDIR=$ac_optarg ;; ++ ++ -libdir | --libdir | --libdi | --libd) ++ ac_prev=LIBDIR ;; ++ -libdir=* | --libdir=* | --libdi=* | --libd=*) ++ LIBDIR=$ac_optarg ;; ++ ++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m | -manprefix | --manprefix) ++ ac_prev=MAXPREFIX ;; ++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=* | -manprefix=* | --manprefix=*) ++ MANPREFIX=$ac_optarg ;; ++ ++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ++ ac_prev=PREFIX ;; ++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ++ PREFIX=$ac_optarg ;; ++ ++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ ++ | --syscon | --sysco | --sysc | --sys | --sy | -confdir | --confdir) ++ ac_prev=CONFDIR ;; ++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ ++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=* | -confdir=* | --confdir=*) ++ CONFDIR=$ac_optarg ;; ++ ++ -disable-rpath | --disable-rpath) ++ TURN_DISABLE_RPATH=1 ;; ++ ++ esac ++ + done + + if test -n "$ac_prev"; then +- ac_option=--`echo $ac_prev | sed 's/_/-/g'` +- as_fn_error $? "missing argument to $ac_option" ++ ac_option=--`echo $ac_prev | sed 's/_/-/g'` ++ as_fn_error $? "missing argument to $ac_option" + fi + + ############################################# + + if [ -z "${PREFIX}" ] ; then + +- if [ -z "${prefix}" ] ; then +- +- SYSTEM=`uname` +- +- if [ "${SYSTEM}" = "NetBSD" ] ; then +- # A little tough guy +- PREFIX=/usr/pkg +- elif [ "${SYSTEM}" = "SunOS" ] ; then +- # A fat guy +- PREFIX=/usr +- else +- # An ordinary person +- PREFIX=/usr/local +- fi +- else +- PREFIX=${prefix} +- fi ++ if [ -z "${prefix}" ] ; then ++ ++ SYSTEM=`uname` ++ ++ if [ "${SYSTEM}" = "NetBSD" ] ; then ++ # A little tough guy ++ PREFIX=/usr/pkg ++ elif [ "${SYSTEM}" = "SunOS" ] ; then ++ # A fat guy ++ PREFIX=/usr ++ else ++ # An ordinary person ++ PREFIX=/usr/local ++ fi ++ else ++ PREFIX=${prefix} ++ fi + fi + + if [ -z "${BINDIR}" ] ; then + if [ -z "${bindir}" ] ; then +- BINDIR=${PREFIX}/bin ++ BINDIR=${PREFIX}/bin + else +- BINDIR=${bindir} ++ BINDIR=${bindir} + fi + fi + + if [ -z "${LOCALSTATEDIR}" ] ; then + if [ -z "${localstatedir}" ] ; then +- +- if [ "${PREFIX}" = "/usr" ] ; then +- LOCALSTATEDIR=/var +- else +- LOCALSTATEDIR=${PREFIX}/var +- fi +- ++ ++ if [ "${PREFIX}" = "/usr" ] ; then ++ LOCALSTATEDIR=/var ++ else ++ LOCALSTATEDIR=${PREFIX}/var ++ fi ++ + else +- LOCALSTATEDIR=${localstatedir} ++ LOCALSTATEDIR=${localstatedir} + fi + fi + + if [ -z "${CONFDIR}" ] ; then + if [ -z "${confdir}" ] ; then +- CONFDIR=${PREFIX}/etc ++ CONFDIR=${PREFIX}/etc + else +- CONFDIR=${confdir} ++ CONFDIR=${confdir} + fi + fi + + if [ -z "${MANPREFIX}" ] ; then + if [ -z "${manprefix}" ] ; then +- MANPREFIX=${PREFIX} ++ MANPREFIX=${PREFIX} + else +- MANPREFIX=${manprefix} ++ MANPREFIX=${manprefix} + fi + fi + + if [ -z "${EXAMPLESDIR}" ] ; then + if [ -z "${examplesdir}" ] ; then +- EXAMPLESDIR=${PREFIX}/share/examples/${PORTNAME} ++ EXAMPLESDIR=${PREFIX}/share/examples/${PORTNAME} + else +- EXAMPLESDIR=${examplesdir} ++ EXAMPLESDIR=${examplesdir} + fi + fi + + if [ -z "${DOCSDIR}" ] ; then + if [ -z "${docsdir}" ] ; then +- DOCSDIR=${PREFIX}/share/doc/${PORTNAME} ++ DOCSDIR=${PREFIX}/share/doc/${PORTNAME} + else +- DOCSDIR=${docsdir} ++ DOCSDIR=${docsdir} + fi + fi + + if [ -z "${LIBDIR}" ] ; then + if [ -z "${libdir}" ] ; then +- LIBDIR=${PREFIX}/lib ++ LIBDIR=${PREFIX}/lib + else +- LIBDIR=${libdir} ++ LIBDIR=${libdir} + fi + fi + + if [ -z "${SCHEMADIR}" ] ; then + if [ -z "${schemadir}" ] ; then +- SCHEMADIR=${PREFIX}/share/${PORTNAME} ++ SCHEMADIR=${PREFIX}/share/${PORTNAME} + else +- SCHEMADIR=${schemadir} ++ SCHEMADIR=${schemadir} + fi + fi + + if [ -z "${INCLUDEDIR}" ] ; then + if [ -z "${includedir}" ] ; then +- INCLUDEDIR=${PREFIX}/include ++ INCLUDEDIR=${PREFIX}/include + else +- INCLUDEDIR=${includedir} ++ INCLUDEDIR=${includedir} + fi + fi + + if [ -z "${TURNINCLUDEDIR}" ] ; then + if [ -z "${turnincludedir}" ] ; then +- TURNINCLUDEDIR=${INCLUDEDIR}/turn ++ TURNINCLUDEDIR=${INCLUDEDIR}/turn + else +- TURNINCLUDEDIR=${turnincludedir} ++ TURNINCLUDEDIR=${turnincludedir} + fi + fi + + ############################################### + + if [ -z "${ARCHIVERCMD}" ] ; then +- ARCHIVERCMD="ar -r" ++ ARCHIVERCMD="ar -r" + fi + + if [ -z "${MORECMD}" ]; then +- MORECMD="cat" ++ MORECMD="cat" + fi + +-OSCFLAGS="-I${INCLUDEDIR} -I${PREFIX}/include/ -I/usr/local/include ${CFLAGS}" ++OSCFLAGS="${CFLAGS}" + OSLIBS="${LDFLAGS}" +-for ilib in ${PREFIX}/lib/event2/ ${PREFIX}/lib/ /usr/local/lib/event2/ /usr/local/lib/ ${PREFIX}/lib64/event2/ ${PREFIX}/lib64/ /usr/local/lib64/event2/ /usr/local/lib64/ +-do +- if [ -d ${ilib} ] ; then +- OSLIBS="${OSLIBS} -L${ilib}" +- TURN_RPATH="${TURN_RPATH} -Wl,-rpath,${ilib}" +- fi +-done + +-SYSTEM=`uname` +-if [ "${SYSTEM}" = "NetBSD" ] ; then +- OSCFLAGS="${OSCFLAGS} -I/usr/pkg/include" +- OSLIBS="-L/usr/pkg/lib ${OSLIBS}" +- if ! [ -z "${TURN_ACCEPT_RPATH}" ] ; then +- TURN_RPATH="${TURN_RPATH} -Wl,-rpath,/usr/pkg/lib" +- fi ++if [ `uname` = "NetBSD" ] ; then ++ OSCFLAGS="${OSCFLAGS} -I/usr/pkg/include" ++ OSLIBS="-L/usr/pkg/lib ${OSLIBS}" ++ if ! [ -z "${TURN_ACCEPT_RPATH}" ] ; then ++ TURN_RPATH="${TURN_RPATH} -Wl,-rpath,/usr/pkg/lib" ++ fi + fi + + ########################### +@@ -555,41 +401,41 @@ fi + type ginstall 2>>/dev/null + ER=$? + if [ ${ER} -eq 0 ] ; then +- INSTALL_PROGRAM="ginstall" +- INSTALL_MAN="ginstall" +- INSTALL_SCRIPT="ginstall" +- INSTALL_SHARED_LIB="ginstall" +- INSTALL_STATIC_LIB="ginstall" +- INSTALL_DATA="ginstall" +- MKDIR="ginstall -d" ++ INSTALL_PROGRAM="ginstall" ++ INSTALL_MAN="ginstall" ++ INSTALL_SCRIPT="ginstall" ++ INSTALL_SHARED_LIB="ginstall" ++ INSTALL_STATIC_LIB="ginstall" ++ INSTALL_DATA="ginstall" ++ MKDIR="ginstall -d" + else +- type install 2>>/dev/null +- ER=$? +- if [ ${ER} -eq 0 ] ; then +- INSTALL_PROGRAM="install" +- INSTALL_MAN="install" +- INSTALL_SCRIPT="install" +- INSTALL_SHARED_LIB="install" +- INSTALL_STATIC_LIB="install" +- INSTALL_DATA="install" +- MKDIR="install -d" +- else +- INSTALL_PROGRAM="cp -pf" +- INSTALL_MAN="cp -pf" +- INSTALL_SCRIPT="cp -pf" +- INSTALL_SHARED_LIB="cp -pf" +- INSTALL_STATIC_LIB="cp -pf" +- INSTALL_DATA="cp -pf" +- MKDIR="mkdir -p" +- fi ++ type install 2>>/dev/null ++ ER=$? ++ if [ ${ER} -eq 0 ] ; then ++ INSTALL_PROGRAM="install" ++ INSTALL_MAN="install" ++ INSTALL_SCRIPT="install" ++ INSTALL_SHARED_LIB="install" ++ INSTALL_STATIC_LIB="install" ++ INSTALL_DATA="install" ++ MKDIR="install -d" ++ else ++ INSTALL_PROGRAM="cp -pf" ++ INSTALL_MAN="cp -pf" ++ INSTALL_SCRIPT="cp -pf" ++ INSTALL_SHARED_LIB="cp -pf" ++ INSTALL_STATIC_LIB="cp -pf" ++ INSTALL_DATA="cp -pf" ++ MKDIR="mkdir -p" ++ fi + fi + + type pkill 2>>/dev/null + ER=$? + if [ ${ER} -eq 0 ] ; then +- PKILL_PROGRAM="pkill" ++ PKILL_PROGRAM="pkill" + else +- PKILL_PROGRAM="${ECHO_CMD}" ++ PKILL_PROGRAM="${ECHO_CMD}" + fi + + INSTALL_DIR="cp -rpf" +@@ -604,9 +450,9 @@ else + type sqlite 2>>/dev/null + ER=$? + if [ ${ER} -eq 0 ] ; then +- SQLITE_CMD="sqlite" ++ SQLITE_CMD="sqlite" + else +- SQLITE_CMD=${ECHO_CMD} ++ SQLITE_CMD=${ECHO_CMD} + fi + fi + +@@ -614,10 +460,8 @@ fi + # Adjustments for Solaris + ############################# + +-SYSTEM=`uname` +- +-if [ "${SYSTEM}" = "SunOS" ] ; then +-# Solaris ? is this you ?! ++if [ `uname` = "SunOS" ] ; then ++ # Solaris ? is this you ?! + OSCFLAGS="${OSCFLAGS} -D__EXTENSIONS__ -D_XOPEN_SOURCE=500 -DTURN_NO_GETDOMAINNAME" + OSLIBS="${OSLIBS} -lnsl" + TURN_NO_SCTP=1 +@@ -630,9 +474,9 @@ fi + TMPDIR="." + + if [ -d /var/tmp ] ; then +- TMPDIR="/var/tmp" ++ TMPDIR="/var/tmp" + elif [ -d /tmp ] ; then +- TMPDIR=/tmp ++ TMPDIR=/tmp + fi + + ${ECHO_CMD} Use TMP dir ${TMPDIR} +@@ -693,83 +537,6 @@ int main(int argc, char** argv) { + } + ! + +-E_TMPCPROG=__test__ccomp__libevent2__$$ +-E_TMPCPROGC=${TMPDIR}/${E_TMPCPROG}.c +-E_TMPCPROGO=${TMPDIR}/${E_TMPCPROG}.o +- +-cat > ${E_TMPCPROGC} < +-#include +-int main(int argc, char** argv) { +- return (int)(argv[argc][0]); +-} +-! +- +-SQL_TMPCPROG=__test__ccomp__sqlite__$$ +-SQL_TMPCPROGC=${TMPDIR}/${SQL_TMPCPROG}.c +-SQL_TMPCPROGO=${TMPDIR}/${SQL_TMPCPROG}.o +- +-cat > ${SQL_TMPCPROGC} < +-#include +-int main(int argc, char** argv) { +- return (int)(argv[argc][0]); +-} +-! +- +-HR_TMPCPROG=__test__ccomp__hiredis__$$ +-HR_TMPCPROGC=${TMPDIR}/${HR_TMPCPROG}.c +-HR_TMPCPROGB=${TMPDIR}/${HR_TMPCPROG} +- +-cat > ${HR_TMPCPROGC} < +-#include +-#include +-int main(int argc, char** argv) { +- redisAsyncHandleRead(NULL); +- return (int)(argv[argc][0]); +-} +-! +- +-PQ_TMPCPROG=__test__ccomp__libpq__$$ +-PQ_TMPCPROGC=${TMPDIR}/${PQ_TMPCPROG}.c +-PQ_TMPCPROGB=${TMPDIR}/${PQ_TMPCPROG} +- +-cat > ${PQ_TMPCPROGC} < +-#include +-int main(int argc, char** argv) { +- return (argc+(PQprotocolVersion(NULL))+(int)(argv[0][0])); +-} +-! +- +-MYSQL_TMPCPROG=__test__ccomp__libmysql__$$ +-MYSQL_TMPCPROGC=${TMPDIR}/${MYSQL_TMPCPROG}.c +-MYSQL_TMPCPROGB=${TMPDIR}/${MYSQL_TMPCPROG} +- +-cat > ${MYSQL_TMPCPROGC} < +-#include +-int main(int argc, char** argv) { +- return (argc+ +- (int)(mysql_real_connect(NULL, NULL, NULL, NULL, NULL, 0, NULL, 0)!=0)+ +- (int)(argv[0][0])); +-} +-! +- +-MONGO_TMPCPROG=__test__ccomp__libmongoc__$$ +-MONGO_TMPCPROGC=${TMPDIR}/${MONGO_TMPCPROG}.c +-MONGO_TMPCPROGB=${TMPDIR}/${MONGO_TMPCPROG} +- +-cat > ${MONGO_TMPCPROGC} < +-int main(int argc, char** argv) { +- return (argc+ +- (int)(mongoc_client_new("mongodb://localhost:27017")!=0)+ +- (int)(argv[0][0])); +-} +-! +- + ########################## + # What is our compiler ? + ########################## +@@ -777,20 +544,30 @@ int main(int argc, char** argv) { + if [ -z "${CC}" ] ; then + CC=cc + ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- CC=gcc +- ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- CC=clang +- ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- CC=unknown +- fi +- fi +- fi ++ ER=$? ++ if ! [ ${ER} -eq 0 ] ; then ++ CC=gcc ++ ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null ++ ER=$? ++ if ! [ ${ER} -eq 0 ] ; then ++ CC=clang ++ ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null ++ ER=$? ++ if ! [ ${ER} -eq 0 ] ; then ++ ${ECHO_CMD} "ERROR: Failed to a find working C compiler" ++ cleanup ++ exit ++ fi ++ fi ++ fi ++else ++ ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null ++ ER=$? ++ if ! [ ${ER} -eq 0 ] ; then ++ ${ECHO_CMD} "ERROR: cannot use compiler ${CC} properly" ++ cleanup ++ exit ++ fi + fi + + ${ECHO_CMD} "Compiler: ${CC}" +@@ -799,18 +576,37 @@ if [ -z "${TURN_ACCEPT_RPATH}" ] ; then + ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} -Wl,-rpath,/usr/lib 2>>/dev/null + ER=$? + if [ ${ER} -eq 0 ] ; then +- TURN_ACCEPT_RPATH=1 ++ TURN_ACCEPT_RPATH=1 + fi + fi + +-${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null +-ER=$? +-if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "ERROR: cannot use compiler ${CC} properly" +- cleanup +- exit ++########################## ++# Which pkg-config? ++########################## ++ ++if [ -z "$PKGCONFIG" ] ; then ++ for PKGCONFIG in pkgconf pkg-config ; do ++ if type "$PKGCONFIG" 2>/dev/null ; then ++ break ++ fi ++ PKGCONFIG= ++ done ++ ++ if [ -z "$PKGCONFIG" ] ; then ++ ${ECHO_CMD} "ERROR: pkg-config not found" ++ cleanup ++ exit ++ fi ++else ++ if ! type "$PKGCONFIG" 2>/dev/null ; then ++ ${ECHO_CMD} "ERROR: cannot use $PKGCONFIG" ++ cleanup ++ exit ++ fi + fi + ++${ECHO_CMD} "pkg-config: $PKGCONFIG" ++ + ########################### + # Check if we can use GNU + # or Clang compiler flags +@@ -827,26 +623,26 @@ if ! [ ${ER} -eq 0 ] ; then + ${CC} -Wall ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null + ER=$? + if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Not an ordinary GNU or Clang compiler" ++ ${ECHO_CMD} "Not an ordinary GNU or Clang compiler" + else +- ${ECHO_CMD} "g++ or something..." +- GNUOSCFLAGS="-g -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wpointer-arith -Wcast-qual" +- ${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Not an ordinary g++ compiler" +- GNUOSCFLAGS="-x c++ -g -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wpointer-arith -Wcast-qual" +- ${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Not an ordinary c++ compiler" +- else +- ${ECHO_CMD} "Clang++ compiler ?" +- OSCFLAGS="${GNUOSCFLAGS} ${OSCFLAGS}" +- fi +- else +- OSCFLAGS="${GNUOSCFLAGS} ${OSCFLAGS}" +- fi ++ ${ECHO_CMD} "g++ or something..." ++ GNUOSCFLAGS="-g -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wpointer-arith -Wcast-qual" ++ ${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null ++ ER=$? ++ if ! [ ${ER} -eq 0 ] ; then ++ ${ECHO_CMD} "Not an ordinary g++ compiler" ++ GNUOSCFLAGS="-x c++ -g -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wpointer-arith -Wcast-qual" ++ ${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null ++ ER=$? ++ if ! [ ${ER} -eq 0 ] ; then ++ ${ECHO_CMD} "Not an ordinary c++ compiler" ++ else ++ ${ECHO_CMD} "Clang++ compiler ?" ++ OSCFLAGS="${GNUOSCFLAGS} ${OSCFLAGS}" ++ fi ++ else ++ OSCFLAGS="${GNUOSCFLAGS} ${OSCFLAGS}" ++ fi + fi + else + OSCFLAGS="${GNUOSCFLAGS} ${OSCFLAGS}" +@@ -854,14 +650,12 @@ fi + + ########################### + # Test some general-purpose +-# libraries ++# libraries + ########################### + + testlib socket + testlib rt +-testlib wldap32 +-ER=$? +-if ! [ ${ER} -eq 0 ] ; then ++if testlib wldap32; then + echo "CYGWIN ?" + fi + testlib wldap64 +@@ -879,25 +673,24 @@ test_sin_len + # Can we use multi-threading ? + ########################### + +-pthread_testlib +-ER=$? +-if [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "ERROR: Cannot find pthread library functions." +- exit ++if ! pthread_testlib ; then ++ ${ECHO_CMD} "ERROR: Cannot find pthread library functions." ++ cleanup ++ exit + fi + +-if [ -z ${TURN_NO_THREAD_BARRIERS} ] ; then +- pthread_testbarriers +-else +- TURN_NO_THREAD_BARRIERS="-DTURN_NO_THREAD_BARRIERS" ++if [ -z ${TURN_NO_THREAD_BARRIERS} ] ; then ++ pthread_testbarriers ++else ++ TURN_NO_THREAD_BARRIERS="-DTURN_NO_THREAD_BARRIERS" + fi + +-if [ -z ${TURN_IP_RECVERR} ] ; then +- ${ECHO_CMD} "Ignore IP_RECVERR" +-else +- ${ECHO_CMD} "Use IP_RECVERR" +- TURN_IP_RECVERR="-DTURN_IP_RECVERR" +- OSCFLAGS="${OSCFLAGS} ${TURN_IP_RECVERR}" ++if [ -z ${TURN_IP_RECVERR} ] ; then ++ ${ECHO_CMD} "Ignore IP_RECVERR" ++else ++ ${ECHO_CMD} "Use IP_RECVERR" ++ TURN_IP_RECVERR="-DTURN_IP_RECVERR" ++ OSCFLAGS="${OSCFLAGS} ${TURN_IP_RECVERR}" + fi + + ########################### +@@ -910,10 +703,8 @@ testdaemon + # Test OpenSSL installation + ########################### + +-testlib crypto +-ER=$? +-if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Crypto SSL lib found." ++if testpkg_common libcrypto; then ++ ${ECHO_CMD} "OpenSSL Crypto lib found." + else + ${ECHO_CMD} "ERROR: OpenSSL Crypto development libraries are not installed properly in required location." + ${ECHO_CMD} "Abort." +@@ -921,10 +712,8 @@ else + exit + fi + +-testlib ssl +-ER=$? +-if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "SSL lib found." ++if testpkg_common libssl; then ++ ${ECHO_CMD} "OpenSSL SSL found." + else + ${ECHO_CMD} "ERROR: OpenSSL development libraries are not installed properly in required location." + ${ECHO_CMD} "Abort." +@@ -936,88 +725,40 @@ fi + # Can we use GCM cipher ? + ########################### + +-if [ -z ${TURN_NO_GCM} ] ; then +- +-gcm_testlib +-ER=$? +-if [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "WARNING: Cannot find GCM support." +- ${ECHO_CMD} "Turning GCM off." +- TURN_NO_GCM="-DTURN_NO_GCM" +-fi +- ++if [ -z ${TURN_NO_GCM} ] ; then ++ if ! gcm_testlib ; then ++ ${ECHO_CMD} "WARNING: Cannot find GCM support." ++ ${ECHO_CMD} "Turning GCM off." ++ TURN_NO_GCM="-DTURN_NO_GCM" ++ fi + else +- TURN_NO_GCM="-DTURN_NO_GCM" ++ TURN_NO_GCM="-DTURN_NO_GCM" + fi + + ########################### + # Test Libevent2 setup + ########################### +-testlibevent2_comp +-ER=$? +-if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Libevent2 development found." ++ ++if testpkg_common libevent_core libevent_extra libevent_pthreads || testpkg_common libevent libevent_pthreads; then ++ ${ECHO_CMD} "Libevent2 runtime found." + else +- ${ECHO_CMD} "ERROR: Libevent2 development libraries are not installed properly in required location." +- ${ECHO_CMD} "ERROR: may be you have just too old libevent tool - then you have to upgrade it." ++ ${ECHO_CMD} "ERROR: Libevent2 runtime libraries not found or not compiled with threads support." + ${ECHO_CMD} "See the INSTALL file." + ${ECHO_CMD} "Abort." + cleanup + exit + fi + +-testlib event_core +-ER=$? +-if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Libevent2 runtime found." +- testlib event_extra +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Libevent2 runtime 'extra' found." +- else +- ${ECHO_CMD} "ERROR: Libevent2 'extra' runtime library is not installed properly in required location." +- ${ECHO_CMD} "See the INSTALL file." +- ${ECHO_CMD} "Abort." +- cleanup +- exit +- fi +-else +- testlib event +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Libevent2 runtime found (old style)." ++if [ -z "${TURN_NO_TLS}" ] ; then ++ if testpkg_server libevent_openssl; then ++ ${ECHO_CMD} "Libevent2 OpenSSL found." + else +- ${ECHO_CMD} "ERROR: Libevent2 runtime libraries are not installed properly in required location." +- ${ECHO_CMD} "See the INSTALL file." +- ${ECHO_CMD} "Abort." +- cleanup +- exit ++ ${ECHO_CMD} "ERROR: Libevent2 development libraries are not compiled with OpenSSL support." ++ ${ECHO_CMD} "TLS will be disabled." ++ TURN_NO_TLS="-DTURN_NO_TLS" + fi +-fi +- +-if [ -z "${TURN_NO_TLS}" ] ; then +- +- testlib event_openssl +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Libevent2 openssl found." +- else +- ${ECHO_CMD} "ERROR: Libevent2 development libraries are not compiled with OpenSSL support." +- ${ECHO_CMD} "TLS will be disabled." +- TURN_NO_TLS="-DTURN_NO_TLS" +- fi +- +-else +- TURN_NO_TLS="-DTURN_NO_TLS" +-fi +- +-testlib event_pthreads +-ER=$? +-if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Libevent2 pthreads found." + else +- ${ECHO_CMD} "ERROR: Libevent2 development libraries are not compiled with threads support." +- exit ++ TURN_NO_TLS="-DTURN_NO_TLS" + fi + + ########################### +@@ -1025,41 +766,19 @@ fi + ########################### + + if [ -z "${TURN_NO_SQLITE}" ] ; then +- +- testlib sqlite3 +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "SQLite library found." +- else +- ${ECHO_CMD} "SQLite3 development library cannot be found." +- TURN_NO_SQLITE="-DTURN_NO_SQLITE" +- fi +- +- if [ -z "${TURN_NO_SQLITE}" ] ; then +- testsqlite_comp +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "SQLite development found." +- else +- ${ECHO_CMD} "SQLite development libraries are not installed properly in required location." +- TURN_NO_SQLITE="-DTURN_NO_SQLITE" +- fi +- fi +- +- if ! [ -z "${TURN_NO_SQLITE}" ] ; then +- ${ECHO_CMD} +- ${ECHO_CMD} "SQLite DEVELOPMENT LIBRARY (libsqlite3) AND/OR HEADER (sqlite3.h)" +- ${ECHO_CMD} " ARE NOT INSTALLED PROPERLY ON THIS SYSTEM." +- ${ECHO_CMD} " THAT'S OK BUT THE TURN SERVER IS BUILDING WITHOUT SQLITE SUPPORT." +- ${ECHO_CMD} +- fi ++ if testpkg_server sqlite3; then ++ ${ECHO_CMD} "SQLite library found." ++ else ++ ${ECHO_CMD} "SQLite3 development library cannot be found. Building without SQLite3 support." ++ TURN_NO_SQLITE="-DTURN_NO_SQLITE" ++ fi + else +- TURN_NO_SQLITE="-DTURN_NO_SQLITE" +- SQLITE_CMD=${ECHO_CMD} ++ TURN_NO_SQLITE="-DTURN_NO_SQLITE" ++ SQLITE_CMD=${ECHO_CMD} + fi + + if [ -z "${TURNDBDIR}" ] ; then +- TURNDBDIR=${LOCALSTATEDIR}/db ++ TURNDBDIR=${LOCALSTATEDIR}/db + fi + + ########################### +@@ -1067,16 +786,14 @@ fi + ########################### + + if [ -z "${TURN_NO_PQ}" ] ; then +- +- testlibpq +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "PostgreSQL found." +- else +- TURN_NO_PQ="-DTURN_NO_PQ" +- fi ++ if testpkg_server libpq; then ++ ${ECHO_CMD} "PostgreSQL found." ++ else ++ ${ECHO_CMD} "PostgreSQL development library cannot be found. Building without PostgreSQL support." ++ TURN_NO_PQ="-DTURN_NO_PQ" ++ fi + else +- TURN_NO_PQ="-DTURN_NO_PQ" ++ TURN_NO_PQ="-DTURN_NO_PQ" + fi + + ########################### +@@ -1084,16 +801,14 @@ fi + ########################### + + if [ -z "${TURN_NO_MYSQL}" ] ; then +- +- testlibmysql +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "MySQL found." +- else +- TURN_NO_MYSQL="-DTURN_NO_MYSQL" +- fi ++ if testpkg_server mariadb || testpkg_server mysqlclient ; then ++ ${ECHO_CMD} "MySQL found." ++ else ++ ${ECHO_CMD} "MySQL development library cannot be found. Building without MySQL support." ++ TURN_NO_MYSQL="-DTURN_NO_MYSQL" ++ fi + else +- TURN_NO_MYSQL="-DTURN_NO_MYSQL" ++ TURN_NO_MYSQL="-DTURN_NO_MYSQL" + fi + + ########################### +@@ -1101,16 +816,14 @@ fi + ########################### + + if [ -z "${TURN_NO_MONGO}" ] ; then +- +- testlibmongoc +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "MongoDB found." +- else +- TURN_NO_MONGO="-DTURN_NO_MONGO" +- fi ++ if testpkg_server libmongoc-1.0; then ++ ${ECHO_CMD} "MongoDB found." ++ else ++ ${ECHO_CMD} "MongoDB development library cannot be found. Building without MongoDB support." ++ TURN_NO_MONGO="-DTURN_NO_MONGO" ++ fi + else +- TURN_NO_MONGO="-DTURN_NO_MONGO" ++ TURN_NO_MONGO="-DTURN_NO_MONGO" + fi + + ########################### +@@ -1118,19 +831,14 @@ fi + ########################### + + if [ -z "${TURN_NO_HIREDIS}" ] ; then +- +- testhiredis +- +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Hiredis found." +- else +- TURN_NO_HIREDIS="-DTURN_NO_HIREDIS" +- fi +- ++ if testpkg_server hiredis; then ++ ${ECHO_CMD} "Hiredis found." ++ else ++ ${ECHO_CMD} "Hiredis development library cannot be found. Building without Redis support." ++ TURN_NO_HIREDIS="-DTURN_NO_HIREDIS" ++ fi + else +- TURN_NO_HIREDIS="-DTURN_NO_HIREDIS" +- ++ TURN_NO_HIREDIS="-DTURN_NO_HIREDIS" + fi + + ############################### +@@ -1138,22 +846,21 @@ fi + ############################### + + if [ -z "${LDCONFIG}" ] ; then +- ISBSD=`uname | grep -i bsd` +- if [ -z "${ISBSD}" ] ; then +- ISLINUX=`uname | grep -i linux` +- if [ -z "${ISLINUX}" ] ; then +- SYSTEM=`uname` +- if [ "${SYSTEM}" = "SunOS" ] ; then +- LDCONFIG="crle -u -l" +- else +- LDCONFIG=${ECHO_CMD} +- fi +- else +- LDCONFIG="ldconfig -n" +- fi +- else +- LDCONFIG="ldconfig -m" +- fi ++ ISBSD=`uname | grep -i bsd` ++ if [ -z "${ISBSD}" ] ; then ++ ISLINUX=`uname | grep -i linux` ++ if [ -z "${ISLINUX}" ] ; then ++ if [ `uname` = "SunOS" ] ; then ++ LDCONFIG="crle -u -l" ++ else ++ LDCONFIG=${ECHO_CMD} ++ fi ++ else ++ LDCONFIG="ldconfig -n" ++ fi ++ else ++ LDCONFIG="ldconfig -m" ++ fi + fi + + ############################### +@@ -1162,11 +869,11 @@ fi + + if [ -z "${TURN_NO_SCTP}" ] ; then + if [ -z "${TURN_SCTP_INCLUDE}" ] ; then +- if [ -f /usr/include/netinet/sctp.h ] ; then +- TURN_SCTP_INCLUDE="-DTURN_SCTP_INCLUDE=\"\"" +- fi ++ if [ -f /usr/include/netinet/sctp.h ] ; then ++ TURN_SCTP_INCLUDE="-DTURN_SCTP_INCLUDE=\"\"" ++ fi + else +- TURN_SCTP_INCLUDE="-DTURN_SCTP_INCLUDE=\"\\\"${TURN_SCTP_INCLUDE}\\\"\"" ++ TURN_SCTP_INCLUDE="-DTURN_SCTP_INCLUDE=\"\\\"${TURN_SCTP_INCLUDE}\\\"\"" + fi + else + TURN_NO_SCTP="-DTURN_NO_SCTP" +@@ -1179,10 +886,10 @@ fi + OSCFLAGS="${OSCFLAGS} ${TURN_NO_SCTP} ${TURN_SCTP_INCLUDE} ${TURN_NO_THREAD_BARRIERS} ${TURN_NO_DTLS} ${TURN_NO_GCM} ${TURN_NO_TLS} -DINSTALL_PREFIX=${PREFIX} -DTURNDB=${TURNDBDIR}/turndb" + + if ! [ -z "${TURN_ACCEPT_RPATH}" ] ; then +- if [ -z "${TURN_DISABLE_RPATH}" ] ; then +- TURN_RPATH="${TURN_RPATH} -Wl,-rpath,/usr/local/lib" +- OSLIBS="${OSLIBS} ${TURN_RPATH}" +- fi ++ if [ -z "${TURN_DISABLE_RPATH}" ] ; then ++ TURN_RPATH="${TURN_RPATH} -Wl,-rpath,/usr/local/lib" ++ OSLIBS="${OSLIBS} ${TURN_RPATH}" ++ fi + fi + + ${ECHO_CMD} PREFIX="${PREFIX}" LOCALSTATEDIR="${LOCALSTATEDIR}" OSLIBS="${OSLIBS}" DBLIBS="${DBLIBS}" OSCFLAGS="${OSCFLAGS}" DBCFLAGS="${DBCFLAGS}" $@ diff --git a/coturn.spec b/coturn.spec new file mode 100644 index 0000000..f4b296b --- /dev/null +++ b/coturn.spec @@ -0,0 +1,159 @@ +%bcond_without sqlite +%bcond_with postgresql +%bcond_with mysql +%bcond_with mongodb +%bcond_with redis + +Name: coturn +Version: 4.5.0.8 +Release: 1%{?dist} +Summary: TURN server + +License: BSD +URL: https://github.com/coturn/coturn +Source0: https://github.com/coturn/coturn/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source10: turnserver.sysconfig +Source11: turnserver.service +Source12: turnserver-tmpfiles.conf +Patch0: 0000-pkg-config.patch + +BuildRequires: gcc +BuildRequires: libevent-devel >= 2.0 +BuildRequires: openssl-devel +BuildRequires: systemd-devel +%if %{with sqlite} +BuildRequires: sqlite-devel +%endif +%if %{with postgresql} +BuildRequires: postgresql-devel +%endif +%if %{with mysql} +BuildRequires: mariadb-devel +%endif +%if %{with mongodb} +BuildRequires: mongo-c-driver-devel +%endif +%if %{with redis} +BuildRequires: hiredis-devel +%endif + +%description +The TURN Server is a VoIP media traffic NAT traversal server and gateway. It can be used as a general-purpose network traffic TURN server and gateway, too. + +%package static +Summary: ... +%description static +... + +%package utils +Summary: ... +%description utils +... + +%package server +Requires(pre): shadow-utils +Summary: ... +%description server +... + +%package examples +Summary: ... +%description examples +... + +%prep +%setup -q +%patch0 -p1 + +%build +CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \ +CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \ +FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ; \ +TURN_NO_SQLITE=%{!?with_sqlite:1} \ +TURN_NO_PQ=%{!?with_postgresql:1} \ +TURN_NO_MYSQL=%{!?with_mysql:1} \ +TURN_NO_MONGO=%{!?with_mongodb:1} \ +TURN_NO_HIREDIS=%{!?with_redis:1} \ +./configure \ + --prefix=%{_prefix} \ + --bindir=%{_bindir} \ + --sysconfdir=%{_sysconfdir} \ + --docdir=%{_docdir}/turnserver \ + --datadir=%{_datadir}/turnserver \ + --examplesdir=%{_docdir}/turnserver/examples \ + --includedir=%{_includedir} \ + --libdir=%{_libdir} \ + --libexecdir=%{_libexecdir} \ + --localstatedir=%{_localstatedir} \ + --mandir=%{_datadir} \ + --turndbdir=%{_localstatedir}/lib/turnserver \ + --disable-rpath + +make %{?_smp_mflags} + + +%install +%make_install +rm %{buildroot}%{_docdir}/turnserver/{schema.mongo.sh,schema.sql,schema.stats.redis,schema.userdb.redis} +mv %{buildroot}%{_sysconfdir}/turnserver.conf{.default,} +diff -q %{buildroot}%{_bindir}/{turnserver,turnadmin} +ln -f %{buildroot}%{_bindir}/{turnserver,turnadmin} +%if %{with sqlite} +rm %{buildroot}%{_localstatedir}/lib/turnserver/turndb +%endif + +install -Dm0644 %SOURCE10 %{buildroot}%{_sysconfdir}/sysconfig/turnserver +install -Dm0644 %SOURCE11 %{buildroot}%{_unitdir}/turnserver.service +install -Dm0644 %SOURCE12 %{buildroot}%{_tmpfilesdir}/turnserver.conf + +chmod a-x %{buildroot}%{_mandir}/*/* +chmod a-x %{buildroot}%{_libdir}/*.a + +%pre server +getent group turnserver >/dev/null 2>&1 || groupadd -r turnserver 2>&1 || : +getent passwd turnserver >/dev/null 2>&1 || useradd -r -l -g turnserver -G turnserver -d %{_localstatedir}/lib/turnserver -s /sbin/nologin -c "coturn TURN server" turnserver >/dev/null 2>&1 || : + +%post server +systemd-tmpfiles --create >/dev/null 2>&1 || : +%systemd_post turnserver.service + +%preun server +%systemd_preun turnserver.service + +%postun server +%systemd_postun turnserver.service + +%files static +%{_includedir}/turn +%{_libdir}/libturnclient.a + +%files utils +%{_bindir}/turnutils_natdiscovery +%{_bindir}/turnutils_oauth +%{_bindir}/turnutils_peer +%{_bindir}/turnutils_stunclient +%{_bindir}/turnutils_uclient +%{_mandir}/man1/turnutils.1.gz +%{_mandir}/man1/turnutils_natdiscovery.1.gz +%{_mandir}/man1/turnutils_oauth.1.gz +%{_mandir}/man1/turnutils_peer.1.gz +%{_mandir}/man1/turnutils_stunclient.1.gz +%{_mandir}/man1/turnutils_uclient.1.gz + +%files server +%attr (0644, root, root) %config(noreplace) %{_sysconfdir}/turnserver.conf +%{_bindir}/turnadmin +%{_bindir}/turnserver +%{_datadir}/turnserver +%{_docdir}/turnserver +%exclude %{_docdir}/turnserver/examples +%{_mandir}/man1/coturn.1.gz +%{_mandir}/man1/turnadmin.1.gz +%{_mandir}/man1/turnserver.1.gz +%attr (0750, turnserver, turnserver) %dir /var/lib/turnserver +%config(noreplace) %{_sysconfdir}/sysconfig/turnserver +%{_unitdir}/turnserver.service +%{_tmpfilesdir}/turnserver.conf + +%files examples +%{_docdir}/turnserver/examples diff --git a/turnserver-tmpfiles.conf b/turnserver-tmpfiles.conf new file mode 100644 index 0000000..049d0e3 --- /dev/null +++ b/turnserver-tmpfiles.conf @@ -0,0 +1 @@ +d /run/turnserver 0750 turnserver turnserver - diff --git a/turnserver.service b/turnserver.service new file mode 100644 index 0000000..20ff461 --- /dev/null +++ b/turnserver.service @@ -0,0 +1,26 @@ +[Unit] +Description=turnserver +Documentation=man:coturn(1) man:turnadmin(1) man:turnserver(1) +After=syslog.target network.target + +[Service] +User=turnserver +Group=turnserver +Type=forking +EnvironmentFile=/etc/sysconfig/turnserver +PIDFile=/run/turnserver/turnserver.pid +ExecStart=/usr/bin/turnserver -o --pidfile /run/turnserver/turnserver.pid -c /etc/turnserver.conf $EXTRA_OPTIONS +ExecStopPost=/usr/bin/rm -f /run/turnserver/turnserver.pid +Restart=on-abort +StandardOutput=journal + +LimitCORE=infinity +LimitNOFILE=999999 +LimitNPROC=60000 +LimitRTPRIO=infinity +LimitRTTIME=7000000 +CPUSchedulingPolicy=other +UMask=0007 + +[Install] +WantedBy=multi-user.target diff --git a/turnserver.sysconfig b/turnserver.sysconfig new file mode 100644 index 0000000..1d02ff0 --- /dev/null +++ b/turnserver.sysconfig @@ -0,0 +1 @@ +EXTRA_OPTIONS="" -- cgit