1#!/bin/sh 2 3# Proprietary configure script of Coturn project 4 5cleanup() { 6 rm -rf ${TMPCPROGC} 7 rm -rf ${TMPCPROGB} 8 rm -rf ${TH_TMPCPROGC} 9 rm -rf ${TH_TMPCPROGB} 10 rm -rf ${GCM_TMPCPROGC} 11 rm -rf ${GCM_TMPCPROGB} 12 rm -rf ${D_TMPCPROGC} 13 rm -rf ${D_TMPCPROGB} 14 rm -rf ${TMPCADDRPROGO} 15} 16 17testlibraw() { 18 ${CC} ${TMPCPROGC} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -${1} 2>>/dev/null 19 ER=$? 20 if ! [ ${ER} -eq 0 ] ; then 21 ${ECHO_CMD} "Library option -${1} cannot be used" 22 return 0 23 else 24 OSLIBS="${OSLIBS} -${1}" 25 return 1 26 fi 27} 28 29# testpkg pkg1 pkg2 ... 30# If all libraries are found, sets PKG_CFLAGS/PKG_LIBS and returns success. 31# Otherwise, returns failure. 32testpkg() { 33 PKG_LIBS="$($PKGCONFIG --libs "$@" 2>/dev/null)" 34 if [ $? -ne 0 ] ; then 35 return 1 36 fi 37 PKG_CFLAGS="$($PKGCONFIG --cflags "$@")" 38} 39 40# testpkg_db pkg1 pkg2 ... 41# If all libraries are found, adds them to DBCFLAGS/DBLIBS and returns success. 42# Otherwise, returns failure. 43testpkg_db() { 44 testpkg "$@" || return $? 45 DBCFLAGS="${DBCFLAGS} ${PKG_CFLAGS}" 46 DBLIBS="${DBLIBS} ${PKG_LIBS}" 47} 48 49# testpkg_common pkg1 pkg2 ... 50# If all libraries are found, adds them to OSCFLAGS/OSLIBS and returns success. 51# Otherwise, returns failure. 52testpkg_common() { 53 testpkg "$@" || return $? 54 OSCFLAGS="${OSCFLAGS} ${PKG_CFLAGS}" 55 OSLIBS="${OSLIBS} ${PKG_LIBS}" 56} 57 58testlib() { 59 testlibraw l${1} 60} 61 62pthread_testlib() { 63 if [ -n "${PTHREAD_LIBS}" ] ; then 64 OSLIBS="${OSLIBS} ${PTHREAD_LIBS}" 65 return 66 fi 67 68 if [ "$(uname)" = "DragonFly" ] ; then 69 OSLIBS="${OSLIBS} -pthread" 70 TURN_NO_SCTP=1 71 return 72 fi 73 74 if [ -n "$(uname | grep -i bsd)" ] ; then 75 OSLIBS="${OSLIBS} -pthread" 76 return 77 fi 78 79 ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null 80 ER=$? 81 if [ ${ER} -eq 0 ] ; then 82 return 83 fi 84 85 ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -pthread 2>>/dev/null 86 ER=$? 87 if [ ${ER} -eq 0 ] ; then 88 OSLIBS="${OSLIBS} -pthread" 89 return 90 fi 91 92 ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -lpthread 2>>/dev/null 93 ER=$? 94 if [ ${ER} -eq 0 ] ; then 95 OSLIBS="${OSLIBS} -lpthread" 96 return 97 fi 98 99 ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null 100 ER=$? 101 if [ ${ER} -eq 0 ] ; then 102 return 103 fi 104 105 ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} -D_GNU_SOURCE 2>>/dev/null 106 ER=$? 107 if [ ${ER} -eq 0 ] ; then 108 ${ECHO_CMD} "Older GNU pthread library found" 109 OSCFLAGS="${OSCFLAGS} -D_GNU_SOURCE" 110 return 111 fi 112 113 ${ECHO_CMD} "Do not use pthreads" 114 return 1 115} 116 117pthread_testbarriers() { 118 119 ${ECHO_CMD} "pthread_barrier_t barrier;" >> ${TH_TMPCPROGC} 120 ${CC} ${TH_TMPCPROGC} -o ${TH_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null 121 ER=$? 122 if ! [ ${ER} -eq 0 ] ; then 123 ${ECHO_CMD} "pthread barriers not found" 124 OSCFLAGS="${OSCFLAGS} -DTURN_NO_THREAD_BARRIERS" 125 fi 126} 127 128gcm_testlib() { 129 130 if [ -z "${TURN_NO_GCM}" ] ; then 131 ${CC} ${GCM_TMPCPROGC} -o ${GCM_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null 132 ER=$? 133 if [ ${ER} -eq 0 ] ; then 134 return 1 135 else 136 return 0 137 fi 138 else 139 return 0 140 fi 141} 142 143testdaemon() { 144 145 ${CC} ${D_TMPCPROGC} -o ${D_TMPCPROGB} ${OSCFLAGS} ${OSLIBS} 2>>/dev/null 146 ER=$? 147 if [ ${ER} -eq 0 ] ; then 148 OSCFLAGS="${OSCFLAGS} -DTURN_HAS_DAEMON" 149 fi 150} 151 152test_sin_len() { 153 TMPCADDRPROGC=src/client/ns_turn_ioaddr.c 154 ${CC} -c ${OSCFLAGS} -DTURN_HAS_SIN_LEN -Isrc ${TMPCADDRPROGC} -o ${TMPCADDRPROGO} 2>>/dev/null 155 ER=$? 156 if [ ${ER} -eq 0 ] ; then 157 OSCFLAGS="${OSCFLAGS} -DTURN_HAS_SIN_LEN" 158 ${ECHO_CMD} "Sockets code is fine: sin_len field present" 159 else 160 ${CC} -c ${OSCFLAGS} -Isrc ${TMPCADDRPROGC} -o ${TMPCADDRPROGO} 2>>/dev/null 161 ER=$? 162 if [ ${ER} -eq 0 ] ; then 163 ${ECHO_CMD} "Sockets code is fine: no sin_len field present" 164 else 165 ${ECHO_CMD} "WARNING: trial compilation failed: src/client/ns_turn_ioaddr.c" 166 fi 167 fi 168} 169 170######################### 171# Start 172######################### 173 174cleanup 175 176######################### 177# To be set: 178######################### 179 180if [ -z "${ECHO_CMD}" ] ; then 181 ECHO_CMD=echo 182fi 183 184if [ -z "${FIND_CMD}" ] ; then 185 FIND_CMD=find 186fi 187 188if [ -z "${PORTNAME}" ] ; then 189 PORTNAME=turnserver 190fi 191 192######################### 193 194# Installation directory options 195 196ac_prev= 197ac_dashdash= 198for ac_option 199do 200 # If the previous option needs an argument, assign it. 201 if test -n "$ac_prev"; then 202 eval $ac_prev=\$ac_option 203 ac_prev= 204 continue 205 fi 206 207 case $ac_option in 208 *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; 209 *=) ac_optarg= ;; 210 *) ac_optarg=yes ;; 211 esac 212 213 # Accept the important Cygnus configure options, so we can diagnose typos. 214 215 case $ac_dashdash$ac_option in 216 --) 217 ac_dashdash=yes ;; 218 219 -bindir | --bindir | --bindi | --bind | --bin | --bi) 220 ac_prev=BINDIR ;; 221 -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) 222 BINDIR=$ac_optarg ;; 223 224 -localstatedir | --localstatedir | --localstatedi | --localstated | --localstate | --localstat) 225 ac_prev=LOCALSTATEDIR ;; 226 -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* | --localstate=* | --localstat=*) 227 LOCALSTATEDIR=$ac_optarg ;; 228 229 -turndbdir | --turndbdir | --turndbdi | --turndbd | --turndb | --turnd) 230 ac_prev=TURNDBDIR ;; 231 -turndbdir=* | --turndbdir=* | --turndbdi=* | --turndbd=* | --turndb=* | --turnd=*) 232 TURNDBDIR=$ac_optarg ;; 233 234 -datadir | --datadir | --datadi | --datad | -schemadir | --schemadir) 235 ac_prev=SCHEMADIR ;; 236 -datadir=* | --datadir=* | --datadi=* | --datad=* | -schemadir=* | --schemadir=*) 237 SCHEMADIR=$ac_optarg ;; 238 239 -docdir | --docdir | --docdi | --doc | --do | -docsdir | --docsdir | --docsdi | --docs) 240 ac_prev=DOCDIR ;; 241 -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=* | -docsdir=* | --docsdir=* | --docsdi=* | --docs=*) 242 DOCSDIR=$ac_optarg ;; 243 244 -examplesdir | --examplesdir | -examples | --examples) 245 ac_prev=EXAMPLESDIR ;; 246 -examplesdir=* | --examplesdir=* | -examples=* | --examples=*) 247 EXAMPLESDIR=$ac_optarg ;; 248 249 -includedir | --includedir | --includedi | --included | --include \ 250 | --includ | --inclu | --incl | --inc) 251 ac_prev=INCLUDEDIR ;; 252 -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ 253 | --includ=* | --inclu=* | --incl=* | --inc=*) 254 INCLUDEDIR=$ac_optarg ;; 255 256 -turnincludedir | --turnincludedir) 257 ac_prev=TURNINCLUDEDIR ;; 258 -turnincludedir=* | --turnincludedir=*) 259 TURNINCLUDEDIR=$ac_optarg ;; 260 261 -libdir | --libdir | --libdi | --libd) 262 ac_prev=LIBDIR ;; 263 -libdir=* | --libdir=* | --libdi=* | --libd=*) 264 LIBDIR=$ac_optarg ;; 265 266 -mandir | --mandir | --mandi | --mand | --man | --ma | --m | -manprefix | --manprefix) 267 ac_prev=MAXPREFIX ;; 268 -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=* | -manprefix=* | --manprefix=*) 269 MANPREFIX=$ac_optarg ;; 270 271 -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) 272 ac_prev=PREFIX ;; 273 -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) 274 PREFIX=$ac_optarg ;; 275 276 -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ 277 | --syscon | --sysco | --sysc | --sys | --sy | -confdir | --confdir) 278 ac_prev=CONFDIR ;; 279 -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ 280 | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=* | -confdir=* | --confdir=*) 281 CONFDIR=$ac_optarg ;; 282 283 -disable-rpath | --disable-rpath) 284 TURN_DISABLE_RPATH=1 ;; 285 286 esac 287 288done 289 290if test -n "$ac_prev"; then 291 ac_option=--`echo $ac_prev | sed 's/_/-/g'` 292 as_fn_error $? "missing argument to $ac_option" 293fi 294 295############################################# 296 297if [ -z "${PREFIX}" ] ; then 298 299 if [ -z "${prefix}" ] ; then 300 301 SYSTEM=`uname` 302 303 if [ "${SYSTEM}" = "NetBSD" ] ; then 304 # A little tough guy 305 PREFIX=/usr/pkg 306 elif [ "${SYSTEM}" = "SunOS" ] ; then 307 # A fat guy 308 PREFIX=/usr 309 else 310 # An ordinary person 311 PREFIX=/usr/local 312 fi 313 else 314 PREFIX=${prefix} 315 fi 316fi 317 318if [ -z "${BINDIR}" ] ; then 319 if [ -z "${bindir}" ] ; then 320 BINDIR=${PREFIX}/bin 321 else 322 BINDIR=${bindir} 323 fi 324fi 325 326if [ -z "${LOCALSTATEDIR}" ] ; then 327 if [ -z "${localstatedir}" ] ; then 328 329 if [ "${PREFIX}" = "/usr" ] ; then 330 LOCALSTATEDIR=/var 331 else 332 LOCALSTATEDIR=${PREFIX}/var 333 fi 334 335 else 336 LOCALSTATEDIR=${localstatedir} 337 fi 338fi 339 340if [ -z "${CONFDIR}" ] ; then 341 if [ -z "${confdir}" ] ; then 342 CONFDIR=${PREFIX}/etc 343 else 344 CONFDIR=${confdir} 345 fi 346fi 347 348if [ -z "${MANPREFIX}" ] ; then 349 if [ -z "${manprefix}" ] ; then 350 MANPREFIX=${PREFIX} 351 else 352 MANPREFIX=${manprefix} 353 fi 354fi 355 356if [ -z "${EXAMPLESDIR}" ] ; then 357 if [ -z "${examplesdir}" ] ; then 358 EXAMPLESDIR=${PREFIX}/share/examples/${PORTNAME} 359 else 360 EXAMPLESDIR=${examplesdir} 361 fi 362fi 363 364if [ -z "${DOCSDIR}" ] ; then 365 if [ -z "${docsdir}" ] ; then 366 DOCSDIR=${PREFIX}/share/doc/${PORTNAME} 367 else 368 DOCSDIR=${docsdir} 369 fi 370fi 371 372if [ -z "${LIBDIR}" ] ; then 373 if [ -z "${libdir}" ] ; then 374 LIBDIR=${PREFIX}/lib 375 else 376 LIBDIR=${libdir} 377 fi 378fi 379 380if [ -z "${SCHEMADIR}" ] ; then 381 if [ -z "${schemadir}" ] ; then 382 SCHEMADIR=${PREFIX}/share/${PORTNAME} 383 else 384 SCHEMADIR=${schemadir} 385 fi 386fi 387 388if [ -z "${INCLUDEDIR}" ] ; then 389 if [ -z "${includedir}" ] ; then 390 INCLUDEDIR=${PREFIX}/include 391 else 392 INCLUDEDIR=${includedir} 393 fi 394fi 395 396if [ -z "${TURNINCLUDEDIR}" ] ; then 397 if [ -z "${turnincludedir}" ] ; then 398 TURNINCLUDEDIR=${INCLUDEDIR}/turn 399 else 400 TURNINCLUDEDIR=${turnincludedir} 401 fi 402fi 403 404############################################### 405 406if [ -z "${ARCHIVERCMD}" ] ; then 407 ARCHIVERCMD="ar -r" 408fi 409 410if [ -z "${MORECMD}" ]; then 411 MORECMD="cat" 412fi 413 414OSCFLAGS="${CFLAGS}" 415OSLIBS="${LDFLAGS}" 416 417SYSTEM=`uname` 418if [ "${SYSTEM}" = "NetBSD" ] ; then 419 OSCFLAGS="${OSCFLAGS} -I/usr/pkg/include" 420 OSLIBS="-L/usr/pkg/lib ${OSLIBS}" 421 if ! [ -z "${TURN_ACCEPT_RPATH}" ] ; then 422 TURN_RPATH="${TURN_RPATH} -Wl,-rpath,/usr/pkg/lib" 423 fi 424fi 425 426# If acme_redirect does not work, send_data_from_ioa_socket_nbh() probably 427# does not work. Set LIBEV_OK=1 to use a workaround for it. 428if [ -z "${LIBEV_OK}" ]; then 429 LIBEV_OK=1 430 if [ "${SYSTEM}" = "Linux" ]; then 431 OS=$( lsb_release -si 2>/dev/null ) 432 [ "${OS}" = "Ubuntu" ] && LIBEV_OK=0 433 fi 434fi 435[ "${LIBEV_OK}" = "1" ] && OSCFLAGS="${OSCFLAGS} -DLIBEV_OK" 436 437########################### 438# Install shell commands 439########################### 440 441type ginstall 2>>/dev/null 442ER=$? 443if [ ${ER} -eq 0 ] ; then 444 INSTALL_PROGRAM="ginstall" 445 INSTALL_MAN="ginstall" 446 INSTALL_SCRIPT="ginstall" 447 INSTALL_SHARED_LIB="ginstall" 448 INSTALL_STATIC_LIB="ginstall" 449 INSTALL_DATA="ginstall" 450 MKDIR="ginstall -d" 451else 452 type install 2>>/dev/null 453 ER=$? 454 if [ ${ER} -eq 0 ] ; then 455 INSTALL_PROGRAM="install" 456 INSTALL_MAN="install" 457 INSTALL_SCRIPT="install" 458 INSTALL_SHARED_LIB="install" 459 INSTALL_STATIC_LIB="install" 460 INSTALL_DATA="install" 461 MKDIR="install -d" 462 else 463 INSTALL_PROGRAM="cp -pf" 464 INSTALL_MAN="cp -pf" 465 INSTALL_SCRIPT="cp -pf" 466 INSTALL_SHARED_LIB="cp -pf" 467 INSTALL_STATIC_LIB="cp -pf" 468 INSTALL_DATA="cp -pf" 469 MKDIR="mkdir -p" 470 fi 471fi 472 473type pkill 2>>/dev/null 474ER=$? 475if [ ${ER} -eq 0 ] ; then 476 PKILL_PROGRAM="pkill" 477else 478 PKILL_PROGRAM="${ECHO_CMD}" 479fi 480 481INSTALL_DIR="cp -rpf" 482MKBUILDDIR="mkdir -p" 483RMCMD="rm -rf" 484 485type sqlite3 2>>/dev/null 486ER=$? 487if [ ${ER} -eq 0 ] ; then 488 SQLITE_CMD="sqlite3" 489else 490 type sqlite 2>>/dev/null 491 ER=$? 492 if [ ${ER} -eq 0 ] ; then 493 SQLITE_CMD="sqlite" 494 else 495 SQLITE_CMD=${ECHO_CMD} 496 fi 497fi 498 499############################# 500# Adjustments for Solaris 501############################# 502 503SYSTEM=`uname` 504 505if [ "${SYSTEM}" = "SunOS" ] ; then 506# Solaris ? is this you ?! 507 OSCFLAGS="${OSCFLAGS} -D__EXTENSIONS__ -D_XOPEN_SOURCE=500 -DTURN_NO_GETDOMAINNAME" 508 OSLIBS="${OSLIBS} -lnsl" 509 TURN_NO_SCTP=1 510fi 511 512######################### 513# Temporary DIR location: 514######################### 515 516TMPDIR="." 517 518if [ -d /var/tmp ] ; then 519 TMPDIR="/var/tmp" 520elif [ -d /tmp ] ; then 521 TMPDIR=/tmp 522fi 523 524${ECHO_CMD} Use TMP dir ${TMPDIR} 525 526######################### 527# Basic C test programs 528######################### 529 530TMPCADDRPROGO=${TMPDIR}/__test__ccomp_addr_$$.o 531 532TMPCPROG=__test__ccomp__$$ 533TMPCPROGC=${TMPDIR}/${TMPCPROG}.c 534TMPCPROGB=${TMPDIR}/${TMPCPROG} 535 536cat > ${TMPCPROGC} <<! 537#include <stdlib.h> 538int main(int argc, char** argv) { 539 return (int)(argv[argc][0]); 540} 541! 542 543TH_TMPCPROG=__test__ccomp__pthread__$$ 544TH_TMPCPROGC=${TMPDIR}/${TH_TMPCPROG}.c 545TH_TMPCPROGB=${TMPDIR}/${TH_TMPCPROG} 546 547cat > ${TH_TMPCPROGC} <<! 548#include <stdlib.h> 549#include <pthread.h> 550int main(int argc, char** argv) { 551 pthread_mutexattr_settype(0,PTHREAD_MUTEX_RECURSIVE); 552 return (int)pthread_create(0,0,0,0)+(int)(argv[argc][0]); 553} 554 555! 556 557GCM_TMPCPROG=__test__ccomp__gcm__$$ 558GCM_TMPCPROGC=${TMPDIR}/${GCM_TMPCPROG}.c 559GCM_TMPCPROGB=${TMPDIR}/${GCM_TMPCPROG} 560 561cat > ${GCM_TMPCPROGC} <<! 562#include <stdlib.h> 563#include <openssl/ssl.h> 564#include <openssl/evp.h> 565int main(int argc, char** argv) { 566 return (int)EVP_CIPH_GCM_MODE; 567} 568! 569 570D_TMPCPROG=__test__ccomp__daemon__$$ 571D_TMPCPROGC=${TMPDIR}/${D_TMPCPROG}.c 572D_TMPCPROGB=${TMPDIR}/${D_TMPCPROG} 573 574cat > ${D_TMPCPROGC} <<! 575#include <stdlib.h> 576#include <unistd.h> 577int main(int argc, char** argv) { 578 return (int)daemon(0,0)+(int)(argv[argc][0]); 579} 580! 581 582########################## 583# What is our compiler ? 584########################## 585 586if [ -z "${CC}" ] ; then 587 for CC in cc gcc clang; do 588 ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null 589 ER=$? 590 if [ ${ER} -eq 0 ] ; then 591 break 592 fi 593 CC= 594 done 595 596 if [ -z "$CC" ] ; then 597 ${ECHO_CMD} "ERROR: failed to a find working C compiler" 598 cleanup 599 exit 600 fi 601else 602 ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null 603 ER=$? 604 if ! [ ${ER} -eq 0 ] ; then 605 ${ECHO_CMD} "ERROR: cannot use compiler ${CC} properly" 606 cleanup 607 exit 608 fi 609fi 610 611${ECHO_CMD} "Compiler: ${CC}" 612 613if [ -z "${TURN_ACCEPT_RPATH}" ] ; then 614 ${CC} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} -Wl,-rpath,/usr/lib 2>>/dev/null 615 ER=$? 616 if [ ${ER} -eq 0 ] ; then 617 TURN_ACCEPT_RPATH=1 618 fi 619fi 620 621########################## 622# Which pkg-config? 623########################## 624 625if [ -z "$PKGCONFIG" ] ; then 626 for PKGCONFIG in pkgconf pkg-config ; do 627 if type "$PKGCONFIG" 2>/dev/null ; then 628 break 629 fi 630 PKGCONFIG= 631 done 632 633 if [ -z "$PKGCONFIG" ] ; then 634 ${ECHO_CMD} "ERROR: pkg-config not found" 635 cleanup 636 exit 637 fi 638else 639 if ! type "$PKGCONFIG" 2>/dev/null ; then 640 ${ECHO_CMD} "ERROR: cannot use $PKGCONFIG" 641 cleanup 642 exit 643 fi 644fi 645 646${ECHO_CMD} "pkg-config: $PKGCONFIG" 647 648########################### 649# Check if we can use GNU 650# or Clang compiler flags 651########################### 652 653GNUOSCFLAGS="-g ${GNUOSCFLAGS}" 654GNUOSCFLAGS="${GNUOSCFLAGS} -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wcast-qual" 655GNUOSCFLAGS="${GNUOSCFLAGS}" 656 657${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null 658ER=$? 659if ! [ ${ER} -eq 0 ] ; then 660 ${ECHO_CMD} "Hm..." 661 ${CC} -Wall ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null 662 ER=$? 663 if ! [ ${ER} -eq 0 ] ; then 664 ${ECHO_CMD} "Not an ordinary GNU or Clang compiler" 665 else 666 ${ECHO_CMD} "g++ or something..." 667 GNUOSCFLAGS="-g -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wpointer-arith -Wcast-qual" 668 ${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null 669 ER=$? 670 if ! [ ${ER} -eq 0 ] ; then 671 ${ECHO_CMD} "Not an ordinary g++ compiler" 672 GNUOSCFLAGS="-x c++ -g -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wpointer-arith -Wcast-qual" 673 ${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null 674 ER=$? 675 if ! [ ${ER} -eq 0 ] ; then 676 ${ECHO_CMD} "Not an ordinary c++ compiler" 677 else 678 ${ECHO_CMD} "Clang++ compiler ?" 679 OSCFLAGS="${GNUOSCFLAGS} ${OSCFLAGS}" 680 fi 681 else 682 OSCFLAGS="${GNUOSCFLAGS} ${OSCFLAGS}" 683 fi 684 fi 685else 686 OSCFLAGS="${GNUOSCFLAGS} ${OSCFLAGS}" 687fi 688 689########################### 690# Test some general-purpose 691# libraries 692########################### 693 694testlib socket 695testlib rt 696testlib wldap32 697ER=$? 698if ! [ ${ER} -eq 0 ] ; then 699 echo "CYGWIN ?" 700fi 701testlib wldap64 702testlib intl 703testlib nsl 704testlib resolv 705 706########################### 707# Test sockets compilation 708########################### 709 710test_sin_len 711 712########################### 713# Can we use multi-threading ? 714########################### 715 716pthread_testlib 717ER=$? 718if [ ${ER} -ne 0 ] ; then 719 ${ECHO_CMD} "ERROR: Cannot find pthread library functions." 720 exit 721fi 722 723if [ -z ${TURN_NO_THREAD_BARRIERS} ] ; then 724 pthread_testbarriers 725else 726 TURN_NO_THREAD_BARRIERS="-DTURN_NO_THREAD_BARRIERS" 727fi 728 729if [ -z ${TURN_IP_RECVERR} ] ; then 730 ${ECHO_CMD} "Ignore IP_RECVERR" 731else 732 ${ECHO_CMD} "Use IP_RECVERR" 733 TURN_IP_RECVERR="-DTURN_IP_RECVERR" 734 OSCFLAGS="${OSCFLAGS} ${TURN_IP_RECVERR}" 735fi 736 737########################### 738# Can we use daemon ? 739########################### 740 741testdaemon 742 743########################### 744# Test OpenSSL installation 745########################### 746 747if [ -n "${SSL_CFLAGS}" ] && [ -n "${SSL_LIBS}" ]; then 748 ${CC} ${TMPCPROGC} ${SSL_CFLAGS} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} ${SSL_LIBS} 2>>/dev/null 749 ER=$? 750 if ! [ ${ER} -eq 0 ] ; then 751 ${ECHO_CMD} "Private SSL Library option cannot be used" 752 exit 753 else 754 OSCFLAGS="${OSCFLAGS} ${SSL_CFLAGS}" 755 OSLIBS="${OSLIBS} ${SSL_LIBS}" 756 fi 757else 758 if testpkg_common libcrypto; then 759 ${ECHO_CMD} "OpenSSL Crypto lib found." 760 else 761 testlib crypto 762 ER=$? 763 if ! [ ${ER} -eq 0 ] ; then 764 ${ECHO_CMD} "OpenSSL Crypto lib found." 765 else 766 ${ECHO_CMD} "ERROR: OpenSSL Crypto development libraries are not installed properly in required location." 767 ${ECHO_CMD} "Abort." 768 cleanup 769 exit 770 fi 771 fi 772 773 if testpkg_common libssl; then 774 ${ECHO_CMD} "OpenSSL lib found." 775 else 776 testlib ssl 777 ER=$? 778 if ! [ ${ER} -eq 0 ] ; then 779 ${ECHO_CMD} "OpenSSL lib found." 780 else 781 ${ECHO_CMD} "ERROR: OpenSSL development libraries are not installed properly in required location." 782 ${ECHO_CMD} "Abort." 783 cleanup 784 exit 785 fi 786 fi 787fi 788########################### 789# Can we use GCM cipher ? 790########################### 791 792if [ -z ${TURN_NO_GCM} ] ; then 793 794gcm_testlib 795ER=$? 796if [ ${ER} -eq 0 ] ; then 797 ${ECHO_CMD} "WARNING: Cannot find GCM support." 798 ${ECHO_CMD} "Turning GCM off." 799 TURN_NO_GCM="-DTURN_NO_GCM" 800fi 801 802else 803 TURN_NO_GCM="-DTURN_NO_GCM" 804fi 805 806########################### 807# Test Libevent2 setup 808########################### 809if [ -n "${EVENT_CFLAGS}" ] && [ -n "${EVENT_LIBS}" ]; then 810 ${CC} ${TMPCPROGC} ${EVENT_CFLAGS} -o ${TMPCPROGB} ${OSCFLAGS} ${OSLIBS} ${EVENT_LIBS} 2>>/dev/null 811 ER=$? 812 if ! [ ${ER} -eq 0 ] ; then 813 ${ECHO_CMD} "Private Event Library option cannot be used" 814 exit 815 else 816 OSCFLAGS="${OSCFLAGS} ${EVENT_CFLAGS}" 817 OSLIBS="${OSLIBS} ${EVENT_LIBS}" 818 fi 819else 820 if testpkg_common libevent_core libevent_extra libevent_openssl libevent_pthreads || testpkg_common libevent libevent_openssl libevent_pthreads; then 821 ${ECHO_CMD} "Libevent2 runtime found." 822 else 823 ${ECHO_CMD} "ERROR: Libevent2 development libraries are not installed properly in required location." 824 ${ECHO_CMD} "ERROR: may be you have just too old libevent tool - then you have to upgrade it." 825 ${ECHO_CMD} "See the INSTALL file." 826 ${ECHO_CMD} "Abort." 827 cleanup 828 exit 829 fi 830fi 831 832########################### 833# Test Prometheus 834########################### 835 836if [ -z "${TURN_NO_PROMETHEUS}" ] ; then 837 838 testlib prom 839 ER=$? 840 if ! [ ${ER} -eq 0 ] ; then 841 ${ECHO_CMD} "Prometheus lib found." 842 testlib promhttp 843 ER=$? 844 if ! [ ${ER} -eq 0 ] ; then 845 ${ECHO_CMD} "Prometheus http lib found." 846 testlib microhttpd 847 ER=$? 848 if ! [ ${ER} -eq 0 ] ; then 849 ${ECHO_CMD} "Microhttpd lib found." 850 else 851 ${ECHO_CMD} 852 ${ECHO_CMD} "Warning: microhttpd development libraries are not installed properly in required location." 853 ${ECHO_CMD} "Prometheus support will be disabled." 854 ${ECHO_CMD} "See the INSTALL file." 855 ${ECHO_CMD} 856 OSCFLAGS="${OSCFLAGS} -DTURN_NO_PROMETHEUS" 857 fi 858 else 859 ${ECHO_CMD} 860 ${ECHO_CMD} "Warning: Libpromhttp development libraries are not installed properly in required location." 861 ${ECHO_CMD} "Prometheus support will be disabled." 862 ${ECHO_CMD} "See the INSTALL file." 863 ${ECHO_CMD} 864 OSCFLAGS="${OSCFLAGS} -DTURN_NO_PROMETHEUS" 865 fi 866 else 867 ${ECHO_CMD} 868 ${ECHO_CMD} "Warning: Libprom development libraries are not installed properly in required location." 869 ${ECHO_CMD} "Prometheus support will be disabled." 870 ${ECHO_CMD} "See the INSTALL file." 871 ${ECHO_CMD} 872 OSCFLAGS="${OSCFLAGS} -DTURN_NO_PROMETHEUS" 873 fi 874 875else 876 OSCFLAGS="${OSCFLAGS} -DTURN_NO_PROMETHEUS" 877fi 878 879########################### 880# Test libsystemd 881########################### 882 883if [ -z "${TURN_NO_SYSTEMD}" ] ; then 884 if testpkg_common libsystemd; then 885 ${ECHO_CMD} "Systemd library found." 886 else 887 ${ECHO_CMD} "Systemd library not found. Building without systemd support." 888 TURN_NO_SYSTEMD="-DTURN_NO_SYSTEMD" 889 fi 890else 891 TURN_NO_SYSTEMD="-DTURN_NO_SYSTEMD" 892fi 893 894########################### 895# Test SQLite3 setup 896########################### 897 898if [ -z "${TURN_NO_SQLITE}" ] ; then 899 if testpkg_db sqlite3; then 900 ${ECHO_CMD} "SQLite3 library found." 901 else 902 ${ECHO_CMD} "SQLite3 development library not found. Building without SQLite3 support." 903 TURN_NO_SQLITE="-DTURN_NO_SQLITE" 904 fi 905else 906 TURN_NO_SQLITE="-DTURN_NO_SQLITE" 907 SQLITE_CMD=${ECHO_CMD} 908fi 909 910if [ -z "${TURNDBDIR}" ] ; then 911 TURNDBDIR=${LOCALSTATEDIR}/db 912fi 913 914########################### 915# Test PostgreSQL 916########################### 917 918if [ -z "${TURN_NO_PQ}" ] ; then 919 if testpkg_db libpq; then 920 ${ECHO_CMD} "PostgreSQL found." 921 else 922 ${ECHO_CMD} "PostgreSQL not found. Building without PostgreSQL support." 923 TURN_NO_PQ="-DTURN_NO_PQ" 924 fi 925else 926 TURN_NO_PQ="-DTURN_NO_PQ" 927fi 928 929########################### 930# Test MySQL 931########################### 932 933if [ -z "${TURN_NO_MYSQL}" ] ; then 934 if testpkg_db mariadb || testpkg_db mysqlclient ; then 935 ${ECHO_CMD} "MySQL found." 936 else 937 ${ECHO_CMD} "MySQL not found. Building without MySQL support." 938 TURN_NO_MYSQL="-DTURN_NO_MYSQL" 939 fi 940else 941 TURN_NO_MYSQL="-DTURN_NO_MYSQL" 942fi 943 944########################### 945# Test MongoDB 946########################### 947 948if [ -z "${TURN_NO_MONGO}" ] ; then 949 if testpkg_db libmongoc-1.0; then 950 ${ECHO_CMD} "MongoDB found." 951 else 952 ${ECHO_CMD} "MongoDB not found. Building without MongoDB support." 953 TURN_NO_MONGO="-DTURN_NO_MONGO" 954 fi 955else 956 TURN_NO_MONGO="-DTURN_NO_MONGO" 957fi 958 959########################### 960# Test Redis 961########################### 962 963if [ -z "${TURN_NO_HIREDIS}" ] ; then 964 if testpkg_db hiredis; then 965 ${ECHO_CMD} "Hiredis found." 966 else 967 ${ECHO_CMD} "Hiredis not found. Building without hiredis support." 968 TURN_NO_HIREDIS="-DTURN_NO_HIREDIS" 969 fi 970else 971 TURN_NO_HIREDIS="-DTURN_NO_HIREDIS" 972fi 973 974############################### 975# LDCONFIG 976############################### 977 978if [ -z "${LDCONFIG}" ] ; then 979 ISBSD=`uname | grep -i bsd` 980 if [ -z "${ISBSD}" ] ; then 981 ISLINUX=`uname | grep -i linux` 982 if [ -z "${ISLINUX}" ] ; then 983 SYSTEM=`uname` 984 if [ "${SYSTEM}" = "SunOS" ] ; then 985 LDCONFIG="crle -u -l" 986 else 987 LDCONFIG=${ECHO_CMD} 988 fi 989 else 990 LDCONFIG="ldconfig -n" 991 fi 992 else 993 LDCONFIG="ldconfig -m" 994 fi 995fi 996 997############################### 998# SCTP 999############################### 1000 1001if [ -z "${TURN_NO_SCTP}" ] ; then 1002 if [ -z "${TURN_SCTP_INCLUDE}" ] ; then 1003 if [ -f /usr/include/netinet/sctp.h ] ; then 1004 TURN_SCTP_INCLUDE="-DTURN_SCTP_INCLUDE=\"</usr/include/netinet/sctp.h>\"" 1005 fi 1006 else 1007 TURN_SCTP_INCLUDE="-DTURN_SCTP_INCLUDE=\"\\\"${TURN_SCTP_INCLUDE}\\\"\"" 1008 fi 1009else 1010 TURN_NO_SCTP="-DTURN_NO_SCTP" 1011fi 1012 1013############################### 1014# So, what we have now: 1015############################### 1016 1017OSCFLAGS="${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" 1018 1019if ! [ -z "${TURN_ACCEPT_RPATH}" ] ; then 1020 if [ -z "${TURN_DISABLE_RPATH}" ] ; then 1021 TURN_RPATH="${TURN_RPATH} -Wl,-rpath,/usr/local/lib" 1022 OSLIBS="${OSLIBS} ${TURN_RPATH}" 1023 fi 1024fi 1025 1026${ECHO_CMD} PREFIX="${PREFIX}" LOCALSTATEDIR="${LOCALSTATEDIR}" OSLIBS="${OSLIBS}" DBLIBS="${DBLIBS}" OSCFLAGS="${OSCFLAGS}" DBCFLAGS="${DBCFLAGS}" $@ 1027 1028############################### 1029# Make make: 1030############################### 1031 1032${ECHO_CMD} "#################################" > Makefile 1033${ECHO_CMD} "# Generated by configure script #" >> Makefile 1034${ECHO_CMD} "#################################" >> Makefile 1035${ECHO_CMD} "ECHO_CMD = ${ECHO_CMD}" >> Makefile 1036${ECHO_CMD} "CC = ${CC}" >> Makefile 1037${ECHO_CMD} "LDFLAGS += ${OSLIBS}" >> Makefile 1038${ECHO_CMD} "DBLIBS += ${DBLIBS}" >> Makefile 1039${ECHO_CMD} "CFLAGS += ${OSCFLAGS}" >> Makefile 1040${ECHO_CMD} "CPPFLAGS = ${CPPFLAGS}" >> Makefile 1041${ECHO_CMD} "DBCFLAGS += ${DBCFLAGS} ${TURN_NO_PQ} ${TURN_NO_MYSQL} ${TURN_NO_SQLITE} ${TURN_NO_MONGO} ${TURN_NO_HIREDIS} ${TURN_NO_SYSTEMD}" >> Makefile 1042${ECHO_CMD} "#" >> Makefile 1043${ECHO_CMD} "PORTNAME = ${PORTNAME}" >> Makefile 1044${ECHO_CMD} "PREFIX = ${PREFIX}" >> Makefile 1045${ECHO_CMD} "prefix = ${PREFIX}" >> Makefile 1046${ECHO_CMD} "BINDIR = ${BINDIR}" >> Makefile 1047${ECHO_CMD} "bindir = ${BINDIR}" >> Makefile 1048${ECHO_CMD} "LOCALSTATEDIR = ${LOCALSTATEDIR}" >> Makefile 1049${ECHO_CMD} "localstatedir = ${LOCALSTATEDIR}" >> Makefile 1050${ECHO_CMD} "TURNDBDIR = ${TURNDBDIR}" >> Makefile 1051${ECHO_CMD} "turndbdir = ${TURNDBDIR}" >> Makefile 1052${ECHO_CMD} "CONFDIR = ${CONFDIR}" >> Makefile 1053${ECHO_CMD} "confdir = ${CONFDIR}" >> Makefile 1054${ECHO_CMD} "MANPREFIX = ${MANPREFIX}" >> Makefile 1055${ECHO_CMD} "manprefix = ${MANPREFIX}" >> Makefile 1056${ECHO_CMD} "EXAMPLESDIR = ${EXAMPLESDIR}" >> Makefile 1057${ECHO_CMD} "examplesdir = ${EXAMPLESDIR}" >> Makefile 1058${ECHO_CMD} "DOCSDIR = ${DOCSDIR}" >> Makefile 1059${ECHO_CMD} "docsdir = ${DOCSDIR}" >> Makefile 1060${ECHO_CMD} "LIBDIR = ${LIBDIR}" >> Makefile 1061${ECHO_CMD} "libdir = ${LIBDIR}" >> Makefile 1062${ECHO_CMD} "SCHEMADIR = ${SCHEMADIR}" >> Makefile 1063${ECHO_CMD} "schemadir = ${SCHEMADIR}" >> Makefile 1064${ECHO_CMD} "INCLUDEDIR = ${INCLUDEDIR}" >> Makefile 1065${ECHO_CMD} "includedir = ${INCLUDEDIR}" >> Makefile 1066${ECHO_CMD} "TURNINCLUDEDIR = ${TURNINCLUDEDIR}" >> Makefile 1067${ECHO_CMD} "turnincludedir = ${TURNINCLUDEDIR}" >> Makefile 1068${ECHO_CMD} "#" >> Makefile 1069${ECHO_CMD} "ARCHIVERCMD = ${ARCHIVERCMD}" >> Makefile 1070${ECHO_CMD} "MKDIR = ${MKDIR}" >> Makefile 1071${ECHO_CMD} "SQLITE_CMD = ${SQLITE_CMD}" >> Makefile 1072${ECHO_CMD} "INSTALL_PROGRAM = ${INSTALL_PROGRAM}" >> Makefile 1073${ECHO_CMD} "PKILL_PROGRAM = ${PKILL_PROGRAM}" >> Makefile 1074${ECHO_CMD} "INSTALL_MAN = ${INSTALL_MAN}" >> Makefile 1075${ECHO_CMD} "INSTALL_SCRIPT = ${INSTALL_SCRIPT}" >> Makefile 1076${ECHO_CMD} "INSTALL_SHARED_LIB = ${INSTALL_SHARED_LIB}" >> Makefile 1077${ECHO_CMD} "INSTALL_STATIC_LIB = ${INSTALL_STATIC_LIB}" >> Makefile 1078${ECHO_CMD} "INSTALL_DATA = ${INSTALL_DATA}" >> Makefile 1079${ECHO_CMD} "INSTALL_DIR = ${INSTALL_DIR}" >> Makefile 1080${ECHO_CMD} "MKBUILDDIR = ${MKBUILDDIR}" >> Makefile 1081${ECHO_CMD} "RMCMD = ${RMCMD}" >> Makefile 1082${ECHO_CMD} "MORECMD = ${MORECMD}" >> Makefile 1083${ECHO_CMD} "LDCONFIG=${LDCONFIG}" >> Makefile 1084${ECHO_CMD} "################################" >> Makefile 1085${ECHO_CMD} "" >> Makefile 1086cat Makefile.in >> Makefile 1087 1088############################### 1089# End: 1090############################### 1091 1092cleanup 1093 1094${ECHO_CMD} "Makefile created: success." 1095