1dnl ### autoheader templates ######################################## 2AH_TEMPLATE([CONFIGINVOCATION], [./configure invocation]) 3AH_TEMPLATE([DEFPORT], [Socket used to communicate]) 4AH_TEMPLATE([DEFBASEPORT], [Base socket used for secondary channel]) 5AH_TEMPLATE([MASTERHOST], [Hostname of console server]) 6AH_TEMPLATE([CONFIGFILE], [Config file path]) 7AH_TEMPLATE([CLIENTCONFIGFILE], [Client config file path]) 8AH_TEMPLATE([PASSWDFILE], [Password file path]) 9AH_TEMPLATE([LOGFILEPATH], [Logfile path]) 10AH_TEMPLATE([MAXMEMB], [Number of consoles per child process]) 11AH_TEMPLATE([CONNECTTIMEOUT], [TCP connection timeout]) 12AH_TEMPLATE([PIDFILE], [pidfile to write to]) 13AH_TEMPLATE([USE_LIBWRAP], [use tcp_wrappers libwrap]) 14dnl AH_TEMPLATE([HAVE_POSIX_REGCOMP], [have POSIX regcomp]) 15AH_TEMPLATE([HAVE_PAM], [have PAM support]) 16AH_TEMPLATE([HAVE_OPENSSL], [have openssl support]) 17AH_TEMPLATE([HAVE_GSSAPI], [have gss-api support]) 18AH_TEMPLATE([HAVE_FREEIPMI], [have freeipmi support]) 19AH_TEMPLATE([STRIP_REALM], [retry username without @REALM with gss-api authentication]) 20AH_TEMPLATE([HAVE_DMALLOC], [have dmalloc support]) 21AH_TEMPLATE([HAVE_SA_LEN],[Defined if sa_len member exists in struct sockaddr]) 22AH_TEMPLATE([TRUST_REVERSE_DNS],[Defined if we trust reverse DNS]) 23AH_TEMPLATE([USE_EXTENDED_MESSAGES],[Defined if we produce extended messages]) 24AH_TEMPLATE([USE_UNIX_DOMAIN_SOCKETS],[Defined if we use Unix domain sockets]) 25AH_TEMPLATE([USE_IPV6], [Defined if building with IPv6 support]) 26AH_TEMPLATE([UDSDIR], [Directory for Unix domain sockets]) 27AH_TEMPLATE([FOR_CYCLADES_TS], [Defined if building for a Cyclades TS]) 28AH_TEMPLATE([REQ_SERVER_CERT], [Defined if client requires server SSL certificate]) 29AH_TEMPLATE([TRUST_UDS_CRED], [Defined if we trust credentials from UDS client]) 30 31dnl ### Normal initialization. ###################################### 32AC_INIT([conserver],m4_esyscmd_s([./package/get-version number])) 33AC_PREREQ(2.59) 34AC_CONFIG_SRCDIR([conserver/main.c]) 35AC_CONFIG_HEADER(config.h) 36 37AC_DEFINE_UNQUOTED(CONFIGINVOCATION, "$0 $@") 38 39dnl ### Set some option defaults. ################################### 40if test -z "$CFLAGS"; then 41 CFLAGS="-O" 42fi 43MKDIR="mkdir -p -m 755" 44AC_SUBST(MKDIR) 45 46AC_SUBST(CONSERVER_VERSION, m4_esyscmd_s([./package/get-version number])) 47AC_SUBST(CONSERVER_DATE, m4_esyscmd_s([./package/get-version date])) 48 49 50dnl ### Custom settings. ############################################ 51dnl AC_MSG_CHECKING(whether to allow 64bit compilation) 52dnl AC_ARG_WITH(64bit, 53dnl AC_HELP_STRING([--with-64bit],[Allow 64bit compilation]), 54dnl [case "$withval" in 55dnl yes) 56dnl with_64bit=yes 57dnl ;; 58dnl *) 59dnl with_64bit=no 60dnl ;; 61dnl esac], [with_64bit=no]) 62dnl AC_MSG_RESULT($with_64bit) 63 64AC_MSG_CHECKING(for port number specification) 65AC_ARG_WITH(port, 66 AS_HELP_STRING([--with-port=PORT],[Specify port number @<:@conserver@:>@]), 67 [case "$withval" in 68 yes|no) 69 AC_DEFINE_UNQUOTED(DEFPORT, "conserver") 70 AC_MSG_RESULT(port 'conserver') 71 ;; 72 *) 73 AC_DEFINE_UNQUOTED(DEFPORT, "$withval") 74 AC_MSG_RESULT(port '$withval') 75 ;; 76 esac], 77 [AC_DEFINE_UNQUOTED(DEFPORT, "conserver") 78 AC_MSG_RESULT(port 'conserver')]) 79 80AC_MSG_CHECKING(for secondary channel base port) 81AC_ARG_WITH(base, 82 AS_HELP_STRING([--with-base=PORT], [Base port for secondary channel @<:@0@:>@]), 83 [case "$withval" in 84 yes|no) 85 AC_DEFINE_UNQUOTED(DEFBASEPORT, "0") 86 AC_MSG_RESULT(port '0') 87 ;; 88 *) 89 AC_DEFINE_UNQUOTED(DEFBASEPORT, "$withval") 90 AC_MSG_RESULT(port '$withval') 91 ;; 92 esac], 93 [AC_DEFINE_UNQUOTED(DEFBASEPORT, "0") 94 AC_MSG_RESULT(port '0')]) 95 96AC_MSG_CHECKING(for master conserver hostname) 97AC_ARG_WITH(master, 98 AS_HELP_STRING([--with-master=MASTER],[Specify master server hostname @<:@console@:>@]), 99 [case "$withval" in 100 yes|no) 101 AC_DEFINE_UNQUOTED(MASTERHOST, "console") 102 AC_MSG_RESULT('console') 103 ;; 104 *) 105 AC_DEFINE_UNQUOTED(MASTERHOST, "$withval") 106 AC_MSG_RESULT('$withval') 107 ;; 108 esac], 109 [AC_DEFINE_UNQUOTED(MASTERHOST, "console") 110 AC_MSG_RESULT('console')]) 111 112AC_MSG_CHECKING(for client configuration filename) 113AC_ARG_WITH(ccffile, 114 AS_HELP_STRING([--with-ccffile=CFFILE],[Specify client config filename @<:@SYSCONFDIR/console.cf@:>@]), 115 [case "$withval" in 116 yes|no) 117 AC_DEFINE_UNQUOTED(CLIENTCONFIGFILE, [SYSCONFDIR "/console.cf"]) 118 AC_MSG_RESULT('$sysconfdir/console.cf') 119 ;; 120 [[\\/]]* | ?:[[\\/]]* ) 121 AC_DEFINE_UNQUOTED(CLIENTCONFIGFILE, ["$withval"]) 122 AC_MSG_RESULT('$withval') 123 ;; 124 *) 125 AC_DEFINE_UNQUOTED(CLIENTCONFIGFILE, [SYSCONFDIR "/$withval"]) 126 AC_MSG_RESULT('$sysconfdir/$withval') 127 ;; 128 esac], 129 [AC_DEFINE_UNQUOTED(CLIENTCONFIGFILE, [SYSCONFDIR "/console.cf"]) 130 AC_MSG_RESULT('$sysconfdir/console.cf')]) 131 132AC_MSG_CHECKING(for configuration filename) 133AC_ARG_WITH(cffile, 134 AS_HELP_STRING([--with-cffile=CFFILE],[Specify config filename @<:@SYSCONFDIR/conserver.cf@:>@]), 135 [case "$withval" in 136 yes|no) 137 AC_DEFINE_UNQUOTED(CONFIGFILE, [SYSCONFDIR "/conserver.cf"]) 138 AC_MSG_RESULT('$sysconfdir/conserver.cf') 139 ;; 140 [[\\/]]* | ?:[[\\/]]* ) 141 AC_DEFINE_UNQUOTED(CONFIGFILE, ["$withval"]) 142 AC_MSG_RESULT('$withval') 143 ;; 144 *) 145 AC_DEFINE_UNQUOTED(CONFIGFILE, [SYSCONFDIR "/$withval"]) 146 AC_MSG_RESULT('$sysconfdir/$withval') 147 ;; 148 esac], 149 [AC_DEFINE_UNQUOTED(CONFIGFILE, [SYSCONFDIR "/conserver.cf"]) 150 AC_MSG_RESULT('$sysconfdir/conserver.cf')]) 151 152AC_MSG_CHECKING(for password filename) 153AC_ARG_WITH(pwdfile, 154 AS_HELP_STRING([--with-pwdfile=PWDFILE],[Specify password filename @<:@SYSCONFDIR/conserver.passwd@:>@]), 155 [case "$withval" in 156 yes|no) 157 AC_DEFINE_UNQUOTED(PASSWDFILE, [SYSCONFDIR "/conserver.passwd"]) 158 AC_MSG_RESULT('$sysconfdir/conserver.passwd') 159 ;; 160 [[\\/]]* | ?:[[\\/]]* ) 161 AC_DEFINE_UNQUOTED(PASSWDFILE, ["$withval"]) 162 AC_MSG_RESULT('$withval') 163 ;; 164 *) 165 AC_DEFINE_UNQUOTED(PASSWDFILE, [SYSCONFDIR "/$withval"]) 166 AC_MSG_RESULT('$sysconfdir/$withval') 167 ;; 168 esac], 169 [AC_DEFINE_UNQUOTED(PASSWDFILE, [SYSCONFDIR "/conserver.passwd"]) 170 AC_MSG_RESULT('$sysconfdir/conserver.passwd')]) 171 172AC_MSG_CHECKING(for log filename) 173AC_ARG_WITH(logfile, 174 AS_HELP_STRING([--with-logfile=LOGFILE],[Specify log filename @<:@/var/log/conserver@:>@]), 175 [case "$withval" in 176 yes|no) 177 AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/conserver") 178 AC_MSG_RESULT('/var/log/conserver') 179 ;; 180 *) 181 AC_DEFINE_UNQUOTED(LOGFILEPATH, "$withval") 182 AC_MSG_RESULT('$withval') 183 ;; 184 esac], 185 [AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/conserver") 186 AC_MSG_RESULT('/var/log/conserver')]) 187 188AC_SUBST(PIDFILE) 189AC_MSG_CHECKING(for PID filename) 190AC_ARG_WITH(pidfile, 191 AS_HELP_STRING([--with-pidfile=PIDFILE],[Specify PID filepath @<:@/var/run/conserver.pid@:>@]), 192 [case "$withval" in 193 yes|no) 194 PIDFILE="/var/run/conserver.pid" 195 ;; 196 *) 197 PIDFILE="$withval" 198 ;; 199 esac], 200 [PIDFILE="/var/run/conserver.pid"]) 201AC_DEFINE_UNQUOTED(PIDFILE, "$PIDFILE") 202AC_MSG_RESULT('$PIDFILE') 203 204AC_MSG_CHECKING(for MAXMEMB setting) 205AC_ARG_WITH(maxmemb, 206 AS_HELP_STRING([--with-maxmemb=MAXMEMB],[Specify maximum consoles per process @<:@16@:>@]), 207 [case "$withval" in 208 yes|no) 209 AC_DEFINE_UNQUOTED(MAXMEMB, 16) 210 AC_MSG_RESULT(16) 211 ;; 212 *) 213 if expr "$withval" : '[[0-9]]*$' >/dev/null 2>&1 && 214 test "$withval" -gt 0 -a "$withval" -lt 256; then 215 AC_DEFINE_UNQUOTED(MAXMEMB, $withval) 216 AC_MSG_RESULT($withval) 217 else 218 AC_DEFINE_UNQUOTED(MAXMEMB, 16) 219 AC_MSG_RESULT([value out of bounds (0<x<256) - setting to 16]) 220 fi 221 ;; 222 esac], 223 [AC_DEFINE_UNQUOTED(MAXMEMB, 16) 224 AC_MSG_RESULT(16)]) 225 226AC_MSG_CHECKING(for connect() timeout) 227AC_ARG_WITH(timeout, 228 AS_HELP_STRING([--with-timeout=TIMEOUT],[Specify connect() timeout in seconds @<:@10@:>@]), 229 [if expr "$withval" : '[[0-9]]*$' >/dev/null 2>&1 && 230 test "$withval" -gt 0 -a "$withval" -lt 300; then 231 AC_DEFINE_UNQUOTED(CONNECTTIMEOUT, $withval) 232 AC_MSG_RESULT($withval) 233 else 234 AC_DEFINE_UNQUOTED(CONNECTTIMEOUT, 10) 235 AC_MSG_RESULT([value out of bounds (0<x<300) - setting to 10]) 236 fi], 237 [AC_DEFINE_UNQUOTED(CONNECTTIMEOUT, 10) 238 AC_MSG_RESULT(10)]) 239 240AC_MSG_CHECKING(whether to trust reverse DNS) 241AC_ARG_WITH(trustrevdns, 242 AS_HELP_STRING([--with-trustrevdns],[Trust reverse DNS information]), 243 [case "$withval" in 244 yes) 245 AC_DEFINE(TRUST_REVERSE_DNS) 246 AC_MSG_RESULT(yes) 247 ;; 248 *) 249 AC_MSG_RESULT(no) 250 ;; 251 esac],[AC_MSG_RESULT(no)]) 252 253AC_MSG_CHECKING(whether to display extended messages) 254AC_ARG_WITH(extmsgs, 255 AS_HELP_STRING([--with-extmsgs],[Produce extended messages]), 256 [case "$withval" in 257 yes) 258 AC_DEFINE(USE_EXTENDED_MESSAGES) 259 AC_MSG_RESULT(yes) 260 ;; 261 *) 262 AC_MSG_RESULT(no) 263 ;; 264 esac],[AC_MSG_RESULT(no)]) 265 266use_dash_r=no 267AC_MSG_CHECKING(whether to use -R paths as well as -L) 268AC_ARG_WITH(rpath, 269 AS_HELP_STRING([--with-rpath],[Use -R as well as -L for libraries]), 270 [case "$withval" in 271 yes|no) 272 AC_MSG_RESULT($withval) 273 use_dash_r=$withval 274 ;; 275 *) 276 AC_MSG_RESULT(no) 277 ;; 278 esac], 279 [AC_MSG_RESULT(no)]) 280 281AC_MSG_CHECKING(whether we are building for a Cyclades TS) 282AC_ARG_WITH(cycladests, 283 AS_HELP_STRING([--with-cycladests],[(deprecated - noop) Build for a Cyclades TS]), 284 [case "$withval" in 285 yes) 286 AC_DEFINE(FOR_CYCLADES_TS) 287 AC_MSG_RESULT(yes) 288 ;; 289 *) 290 AC_MSG_RESULT(no) 291 ;; 292 esac],[AC_MSG_RESULT(no)]) 293 294 295dnl ### Check for compiler et al. ################################### 296AC_PROG_CC 297AC_PROG_INSTALL 298AC_PROG_LN_S 299AC_PROG_MAKE_SET 300 301dnl ### Compiler characteristics. ################################## 302AC_AIX 303AC_C_CONST 304 305dnl AC_CHECK_SIZEOF(long) 306dnl if test "$ac_cv_sizeof_long" -gt 4; then 307dnl if test "$with_64bit" != "yes"; then 308dnl AC_MSG_ERROR([cannot build on >32bit systems (to override use --with-64bit)]) 309dnl else 310dnl AC_MSG_WARN([building a 64bit version of conserver - good luck!]) 311dnl fi 312dnl fi 313 314dnl ### Checks for header files. ################################### 315AC_HEADER_STDC 316AC_CHECK_HEADERS(sys/ioctl.h) 317 318AC_SYS_POSIX_TERMIOS 319if test "$ac_cv_sys_posix_termios" != "yes"; then 320 AC_MSG_ERROR([POSIX termios interface required]) 321fi 322 323AC_CHECK_HEADERS(unistd.h getopt.h sys/vlimit.h sys/resource.h ttyent.h sys/ttold.h sys/uio.h sys/ioctl_compat.h usersec.h sys/select.h stropts.h sys/audit.h shadow.h sys/time.h crypt.h sysexits.h types.h sys/sockio.h sys/param.h sys/un.h) 324dnl sys/proc.h needs sys/param.h on openbsd, apparently 325AC_CHECK_HEADERS(sys/proc.h, [], [], 326[#if HAVE_SYS_PARAM_H 327#include <sys/param.h> 328#endif 329]) 330AC_HEADER_TIME 331AC_HEADER_SYS_WAIT 332AC_TYPE_MODE_T 333AC_TYPE_SIGNAL 334AC_TYPE_PID_T 335AC_TYPE_SIZE_T 336AC_TYPE_UID_T 337 338AC_CHECK_TYPE([sig_atomic_t],, 339 AC_DEFINE(sig_atomic_t, volatile int, 340 [Define if <signal.h> does not define sig_atomic_t]), 341 [#include <signal.h>]) 342 343AC_CHECK_TYPE([in_addr_t],[AC_DEFINE(HAVE_IN_ADDR_T,1, 344 [Defined if in_addr_t exists])],,[$ac_includes_default 345#include <netinet/in.h>]) 346AC_CHECK_TYPE([socklen_t],[AC_DEFINE(HAVE_SOCKLEN_T,1, 347 [Defined if socklen_t exists])],,[$ac_includes_default 348#include <sys/socket.h>]) 349 350AC_MSG_CHECKING(for sa_len in struct sockaddr) 351AC_TRY_COMPILE([#include <sys/types.h> 352 #include <sys/socket.h>], 353 [struct sockaddr s; s.sa_len=0;], 354 [AC_MSG_RESULT(yes) 355 AC_DEFINE(HAVE_SA_LEN)], 356 [AC_MSG_RESULT(no)]) 357 358 359dnl ### Host specific checks. ###################################### 360AC_CANONICAL_HOST 361 362case "$host" in 363*-*-hpux*) 364 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED=1" 365 AC_CHECK_LIB(xnet,t_error,,AC_MSG_ERROR([-lxnet needed on HP-UX])) 366 AC_CHECK_LIB(sec,getspnam) 367 AC_CHECK_HEADERS(hpsecurity.h prot.h) 368 AC_CHECK_FUNCS(bigcrypt iscomsec getprpwnam) 369 ;; 370esac 371 372dnl ### Check for libraries. ####################################### 373AC_SEARCH_LIBS(socket,socket) 374AC_SEARCH_LIBS(gethostbyname,nsl) 375AC_SEARCH_LIBS(crypt,crypt) 376 377AC_SUBST(CONSLIBS) 378AC_SUBST(CONSCPPFLAGS) 379AC_SUBST(CONSLDFLAGS) 380 381AC_MSG_CHECKING(whether to use Unix domain sockets) 382cons_with_uds="NO" 383AC_ARG_WITH(uds, 384 AS_HELP_STRING([--with-uds@<:@=DIR@:>@ ], 385 [Use Unix domain sockets for client/server communication @<:@/tmp/conserver@:>@]), 386 [case "$withval" in 387 yes) 388 AC_DEFINE_UNQUOTED(UDSDIR, "/tmp/conserver") 389 AC_DEFINE(USE_UNIX_DOMAIN_SOCKETS) 390 AC_MSG_RESULT([/tmp/conserver]) 391 cons_with_uds="YES" 392 ;; 393 no) 394 AC_MSG_RESULT(no) 395 ;; 396 *) 397 AC_DEFINE_UNQUOTED(UDSDIR, "$withval") 398 AC_DEFINE(USE_UNIX_DOMAIN_SOCKETS) 399 AC_MSG_RESULT('$withval') 400 cons_with_uds="YES" 401 if expr "$withval" : '/' >/dev/null 2>&1; then 402 : 403 else 404 echo "*** WARNING *** you may have better success using a fully-qualified path" 405 echo "*** WARNING *** instead of '$withval'" 406 fi 407 ;; 408 esac 409 410 if test $cons_with_uds = YES; then 411 AC_MSG_CHECKING(whether to trust UDS credentials) 412 AC_ARG_WITH(trust-uds-cred, 413 AS_HELP_STRING([--with-trust-uds-cred],[Trust UDS credentials obtained via socket]), 414 [case "$withval" in 415 yes) 416 AC_TRY_COMPILE([#include <sys/types.h> 417 #include <sys/socket.h>], 418 [ 419struct ucred u; 420u.uid = 0; 421#if !defined(SO_PEERCRED) 422#error "no SO_PEERCRED defined" 423#endif 424 ], 425 [AC_MSG_RESULT(yes) 426 AC_DEFINE(UDS_CRED_STYPE, ucred, [Defined to UDS credential structure name]) 427 AC_DEFINE(UDS_CRED_UID, uid, [Defined to UDS credential structure uid field]) 428 AC_DEFINE(UDS_CRED_SO, SO_PEERCRED, [Defined to UDS credential socket option]) 429 AC_DEFINE(TRUST_UDS_CRED)], 430 [ 431 AC_TRY_COMPILE([#include <sys/types.h> 432 #include <sys/socket.h>], 433 [ 434struct peercred_struct u; 435u.euid = 0; 436#if !defined(SO_PEERID) 437#error "no SO_PEERID defined" 438#endif 439 ], 440 [AC_MSG_RESULT(yes) 441 AC_DEFINE(UDS_CRED_STYPE, peercred_struct, [Defined to UDS credential structure name]) 442 AC_DEFINE(UDS_CRED_UID, euid, [Defined to UDS credential structure uid field]) 443 AC_DEFINE(UDS_CRED_SO, SO_PEERID, [Defined to UDS credential socket option]) 444 AC_DEFINE(TRUST_UDS_CRED)], 445 [AC_MSG_RESULT(no)]) 446 ]) 447 ;; 448 *) 449 AC_MSG_RESULT(no) 450 ;; 451 esac],[AC_MSG_RESULT(no)]) 452 fi 453 ],[AC_MSG_RESULT(no)]) 454 455cons_with_libwrap="NO" 456AC_ARG_WITH(libwrap, 457 AS_HELP_STRING([--with-libwrap@<:@=PATH@:>@], 458 [Compile in libwrap (tcp_wrappers) support]), 459 [if test "$withval" != "no"; then 460 if test "$withval" != "yes"; then 461 WRAPCPPFLAGS="-I$withval/include" 462 if test "$use_dash_r" != "yes"; then 463 WRAPLDFLAGS="-L$withval/lib" 464 else 465 WRAPLDFLAGS="-L$withval/lib -R$withval/lib" 466 fi 467 else 468 WRAPCPPFLAGS="" 469 WRAPLDFLAGS="" 470 fi 471 472 oCPPFLAGS="$CPPFLAGS" 473 oLDFLAGS="$LDFLAGS" 474 oLIBS="$LIBS" 475 476 CPPFLAGS="$CPPFLAGS $WRAPCPPFLAGS" 477 LDFLAGS="$LDFLAGS $WRAPLDFLAGS" 478 479 AC_CHECK_HEADER(tcpd.h, 480 [LIBS="$LIBS -lwrap" 481 AC_MSG_CHECKING(for TCP wrappers library -lwrap) 482 AC_TRY_LINK([#include <tcpd.h> 483 int allow_severity = 0; 484 int deny_severity = 0; 485 ],[hosts_access((void *)0)], 486 [AC_MSG_RESULT(yes) 487 cons_with_libwrap="YES" 488 AC_DEFINE(USE_LIBWRAP) 489 CONSLIBS="$CONSLIBS -lwrap" 490 CONSLDFLAGS="$CONSLDFLAGS $WRAPLDFLAGS" 491 CONSCPPFLAGS="$CONSCPPFLAGS $WRAPCPPFLAGS"], 492 [AC_MSG_RESULT(no) 493 LIBS="$LIBS -lnsl" 494 AC_MSG_CHECKING(for TCP wrappers library -lwrap with -lnsl) 495 AC_TRY_LINK([#include <tcpd.h> 496 int allow_severity = 0; 497 int deny_severity = 0; 498 ],[hosts_access((void *)0)], 499 [AC_MSG_RESULT(yes) 500 cons_with_libwrap="YES" 501 AC_DEFINE(USE_LIBWRAP) 502 CONSLIBS="$CONSLIBS -lwrap -lnsl" 503 CONSLDFLAGS="$CONSLDFLAGS $WRAPLDFLAGS" 504 CONSCPPFLAGS="$CONSCPPFLAGS $WRAPCPPFLAGS"], 505 [AC_MSG_RESULT(no)])])],) 506 LIBS="$oLIBS" 507 CPPFLAGS="$oCPPFLAGS" 508 LDFLAGS="$oLDFLAGS" 509 fi] 510) 511 512cons_with_openssl="NO" 513AC_ARG_WITH(openssl, 514 AS_HELP_STRING([--with-openssl@<:@=PATH@:>@], 515 [Compile in OpenSSL support]), 516 [if test "$withval" != "no"; then 517 if test "$withval" != "yes"; then 518 OPENSSLCPPFLAGS="-I$withval/include" 519 if test "$use_dash_r" != "yes"; then 520 OPENSSLLDFLAGS="-L$withval/lib" 521 else 522 OPENSSLLDFLAGS="-L$withval/lib -R$withval/lib" 523 fi 524 else 525 OPENSSLCPPFLAGS="" 526 OPENSSLLDFLAGS="" 527 fi 528 529 oCPPFLAGS="$CPPFLAGS" 530 oLDFLAGS="$LDFLAGS" 531 oLIBS="$LIBS" 532 have_openssl=no 533 534 CPPFLAGS="$CPPFLAGS $OPENSSLCPPFLAGS" 535 LDFLAGS="$LDFLAGS $OPENSSLLDFLAGS" 536 537 AC_CHECK_HEADER([openssl/ssl.h], 538 [LIBS="$LIBS -lssl -lcrypto" 539 AC_MSG_CHECKING(for openssl libraries -lssl and -lcrypto) 540 AC_TRY_LINK([#include <openssl/ssl.h> 541 ],[SSL_CTX_new(NULL)], 542 [AC_MSG_RESULT(yes) 543 cons_with_openssl="YES" 544 AC_DEFINE(HAVE_OPENSSL) 545 have_openssl=yes], 546 [AC_MSG_RESULT(no)])],) 547 548 if test $have_openssl = no; then 549 LIBS="$oLIBS" 550 CPPFLAGS="$oCPPFLAGS" 551 LDFLAGS="$oLDFLAGS" 552 fi 553 554 AC_MSG_CHECKING(whether to require server cert) 555 AC_ARG_WITH(req-server-cert, 556 AS_HELP_STRING([--with-req-server-cert],[Require server SSL certificate by client]), 557 [case "$withval" in 558 yes) 559 AC_DEFINE(REQ_SERVER_CERT) 560 AC_MSG_RESULT(yes) 561 ;; 562 *) 563 AC_MSG_RESULT(no) 564 ;; 565 esac],[AC_MSG_RESULT(no)]) 566 fi] 567) 568 569cons_with_gssapi="NO" 570cons_strip_realm="NO" 571AC_ARG_WITH(gssapi, 572 AS_HELP_STRING([--with-gssapi@<:@=PATH@:>@], 573 [Compile in GSS-API support]), 574 [if test "$withval" != "no"; then 575 if test "$withval" != "yes"; then 576 GSSAPICPPFLAGS="-I$withval/include" 577 if test "$use_dash_r" != "yes"; then 578 GSSAPILDFLAGS="-L$withval/lib" 579 else 580 GSSAPILDFLAGS="-L$withval/lib -R$withval/lib" 581 fi 582 else 583 GSSAPICPPFLAGS="" 584 GSSAPILDFLAGS="" 585 fi 586 587 oCPPFLAGS="$CPPFLAGS" 588 oLDFLAGS="$LDFLAGS" 589 oLIBS="$LIBS" 590 have_gssapi=no 591 592 CPPFLAGS="$CPPFLAGS $GSSAPICPPFLAGS" 593 LDFLAGS="$LDFLAGS $GSSAPILDFLAGS" 594 595 AC_CHECK_HEADER([gssapi/gssapi.h], 596 [LIBS="$oLIBS -lgssapi" 597 AC_MSG_CHECKING(for gssapi library -lgssapi) 598 AC_TRY_LINK([#include <gssapi/gssapi.h> 599 ],[gss_create_empty_oid_set(NULL, NULL)], 600 [AC_MSG_RESULT(yes) 601 cons_with_gssapi="YES" 602 AC_DEFINE(HAVE_GSSAPI) 603 have_gssapi=yes], 604 [AC_MSG_RESULT(no) 605 LIBS="$oLIBS -lgssglue" 606 AC_MSG_CHECKING(for gssapi library -lgssglue) 607 AC_TRY_LINK([#include <gssapi/gssapi.h> 608 ],[gss_create_empty_oid_set(NULL, NULL)], 609 [AC_MSG_RESULT(yes) 610 cons_with_gssapi="YES" 611 AC_DEFINE(HAVE_GSSAPI) 612 have_gssapi=yes], 613 [AC_MSG_RESULT(no) 614 LIBS="$oLIBS -lgss" 615 AC_MSG_CHECKING(for gssapi library -lgss) 616 AC_TRY_LINK([#include <gssapi/gssapi.h> 617 ],[gss_create_empty_oid_set(NULL, NULL)], 618 [AC_MSG_RESULT(yes) 619 cons_with_gssapi="YES" 620 AC_DEFINE(HAVE_GSSAPI) 621 have_gssapi=yes], 622 [AC_MSG_RESULT(no)])])])],) 623 624 if test $have_gssapi = no; then 625 LIBS="$oLIBS" 626 CPPFLAGS="$oCPPFLAGS" 627 LDFLAGS="$oLDFLAGS" 628 else 629 AC_MSG_CHECKING(whether to fallback to username without @REALM) 630 AC_ARG_WITH(striprealm, 631 AS_HELP_STRING([--with-striprealm],[retry username without @REALM with gss-api authentication]), 632 [case "$withval" in 633 yes) 634 AC_DEFINE(STRIP_REALM) 635 AC_MSG_RESULT(yes) 636 cons_strip_realm="YES" 637 ;; 638 *) 639 AC_MSG_RESULT(no) 640 ;; 641 esac],[AC_MSG_RESULT(no)]) 642 fi 643 fi] 644) 645 646cons_with_freeipmi="NO" 647AC_ARG_WITH(freeipmi, 648 AS_HELP_STRING([--with-freeipmi@<:@=PATH@:>@], 649 [Compile in FreeIPMI support]), 650 [if test "$withval" != "no"; then 651 if test "$withval" != "yes"; then 652 FREEIPMICPPFLAGS="-I$withval/include" 653 if test "$use_dash_r" != "yes"; then 654 FREEIPMILDFLAGS="-L$withval/lib" 655 else 656 FREEIPMILDFLAGS="-L$withval/lib -R$withval/lib" 657 fi 658 else 659 FREEIPMICPPFLAGS="" 660 FREEIPMILDFLAGS="" 661 fi 662 663 oCPPFLAGS="$CPPFLAGS" 664 oLDFLAGS="$LDFLAGS" 665 oLIBS="$LIBS" 666 have_freeipmi=no 667 668 CPPFLAGS="$CPPFLAGS $FREEIPMICPPFLAGS" 669 LDFLAGS="$LDFLAGS $FREEIPMILDFLAGS" 670 671 AC_CHECK_HEADER([ipmiconsole.h], 672 [LIBS="$LIBS -lipmiconsole" 673 AC_MSG_CHECKING(for freeipmi libraries -lipmiconsole) 674 AC_TRY_LINK([#include <ipmiconsole.h> 675 ],[ipmiconsole_ctx_fd(0)], 676 [AC_MSG_RESULT(yes) 677 cons_with_freeipmi="YES" 678 AC_DEFINE(HAVE_FREEIPMI) 679 CONSLIBS="$CONSLIBS -lipmiconsole" 680 have_freeipmi=yes], 681 [AC_MSG_RESULT(no)])],) 682 683 LIBS="$oLIBS" 684 if test $have_freeipmi = no; then 685 CPPFLAGS="$oCPPFLAGS" 686 LDFLAGS="$oLDFLAGS" 687 fi 688 fi] 689) 690 691cons_with_dmalloc="NO" 692AC_ARG_WITH(dmalloc, 693 AS_HELP_STRING([--with-dmalloc@<:@=PATH@:>@], 694 [Compile in dmalloc support]), 695 [if test "$withval" != "no"; then 696 if test "$withval" != "yes"; then 697 DMALLOCCPPFLAGS="-I$withval/include" 698 if test "$use_dash_r" != "yes"; then 699 DMALLOCLDFLAGS="-L$withval/lib" 700 else 701 DMALLOCLDFLAGS="-L$withval/lib -R$withval/lib" 702 fi 703 else 704 DMALLOCCPPFLAGS="" 705 DMALLOCLDFLAGS="" 706 fi 707 708 oCPPFLAGS="$CPPFLAGS" 709 oLDFLAGS="$LDFLAGS" 710 oLIBS="$LIBS" 711 have_dmalloc=no 712 713 CPPFLAGS="$CPPFLAGS $DMALLOCCPPFLAGS" 714 LDFLAGS="$LDFLAGS $DMALLOCLDFLAGS" 715 716 AC_CHECK_HEADER([dmalloc.h], 717 [LIBS="$LIBS -ldmalloc" 718 AC_MSG_CHECKING(for dmalloc libraries -ldmalloc) 719 AC_TRY_LINK([#include <dmalloc.h> 720 ],[dmalloc_debug(0)], 721 [AC_MSG_RESULT(yes) 722 cons_with_dmalloc="YES" 723 AC_DEFINE(HAVE_DMALLOC) 724 have_dmalloc=yes], 725 [AC_MSG_RESULT(no)])],) 726 727 if test $have_dmalloc = no; then 728 LIBS="$oLIBS" 729 CPPFLAGS="$oCPPFLAGS" 730 LDFLAGS="$oLDFLAGS" 731 fi 732 fi] 733) 734 735 736dnl ### Check for needed functions. ################################ 737 738dnl dnl The following basically stollen from the less-358 distribution, but 739dnl dnl modified for my own purposes 740dnl AC_MSG_CHECKING(for POSIX regex) 741dnl AC_ARG_WITH(regex, 742dnl AC_HELP_STRING([--with-regex], 743dnl [Use regular expressions in conserver.passwd]), 744dnl [if test "$withval" = yes; then 745dnl AC_TRY_RUN([ 746dnl #include <sys/types.h> 747dnl #include <regex.h> 748dnl main() { regex_t r; regmatch_t rm; char *text = "xabcy"; 749dnl if (regcomp(&r, "abc", 0)) exit(1); 750dnl if (regexec(&r, text, 1, &rm, 0)) exit(1); 751dnl if (rm.rm_so != 1) exit(1); /* check for correct offset */ 752dnl exit(0); } 753dnl ],have_posix_regex=yes,have_posix_regex=no,have_posix_regex=unknown) 754dnl if test $have_posix_regex = yes; then 755dnl AC_MSG_RESULT(yes) 756dnl AC_DEFINE(HAVE_POSIX_REGCOMP) 757dnl elif test $have_posix_regex = unknown; then 758dnl AC_TRY_LINK([ 759dnl #include <sys/types.h> 760dnl #include <regex.h>], 761dnl [regex_t *r; regfree(r);], 762dnl AC_MSG_RESULT(yes) 763dnl AC_DEFINE(HAVE_POSIX_REGCOMP)) 764dnl else 765dnl AC_MSG_RESULT(no) 766dnl fi 767dnl else 768dnl AC_MSG_RESULT(no) 769dnl fi],[AC_MSG_RESULT(no)]) 770 771cons_with_pam="NO" 772AC_MSG_CHECKING(for PAM support) 773AC_ARG_WITH(pam, 774 AS_HELP_STRING([--with-pam], 775 [Enable PAM support]), 776 [if test "$withval" = yes; then 777 oLIBS="$LIBS" 778 779 AC_CHECK_HEADER(security/pam_appl.h, 780 [LIBS="$LIBS -lpam" 781 AC_MSG_CHECKING(for PAM library -lpam) 782 AC_TRY_LINK_FUNC([pam_start], 783 [AC_MSG_RESULT(yes) 784 cons_with_pam="YES" 785 AC_DEFINE(HAVE_PAM) 786 CONSLIBS="$CONSLIBS -lpam"], 787 [LIBS="$LIBS -ldl" 788 AC_MSG_RESULT(no) 789 AC_MSG_CHECKING(for PAM library -lpam with -ldl) 790 AC_TRY_LINK_FUNC([pam_end], 791 [AC_MSG_RESULT(yes) 792 cons_with_pam="YES" 793 AC_DEFINE(HAVE_PAM) 794 CONSLIBS="$CONSLIBS -lpam -ldl"], 795 [AC_MSG_RESULT(no)])])],) 796 797 LIBS="$oLIBS" 798 else 799 AC_MSG_RESULT(no) 800 fi],[AC_MSG_RESULT(no)]) 801 802cons_with_ipv6="NO" 803AC_MSG_CHECKING(whether to support IPv6) 804AC_ARG_WITH(ipv6, 805 AS_HELP_STRING([--with-ipv6], 806 [(experimental) Use IPv6 for client/server communication]), 807 [case "$withval" in 808 yes) 809 AC_DEFINE(USE_IPV6) 810 AC_MSG_RESULT(yes) 811 cons_with_ipv6="YES" 812 ;; 813 *) 814 AC_MSG_RESULT(no) 815 ;; 816 esac],[AC_MSG_RESULT(no)]) 817 818 819dnl Checks for pty allocation... 820dnl According to the xemacs distribution: 821dnl getpt() is the preferred pty allocation method on glibc systems. 822dnl _getpty() is the preferred pty allocation method on SGI systems. 823dnl grantpt(), unlockpt(), ptsname() are defined by Unix98. 824dnl openpty() is the preferred pty allocation method on BSD and Tru64 systems. 825dnl openpty() might be declared in: 826dnl - pty.h (Tru64 or Linux) 827dnl - libutil.h (FreeBSD) 828dnl - util.h (NetBSD) 829dnl Conserver doesn't support getpt() or _getpt() yet. 830AC_CHECK_HEADERS(pty.h libutil.h util.h) 831AC_CHECK_LIB(util, openpty) 832AC_CHECK_FUNCS(openpty) 833 834AC_CHECK_FUNCS(getopt strerror getrlimit getsid setsid getuserattr setgroups tcgetpgrp tcsetpgrp tcgetattr tcsetattr tcsendbreak setpgrp getutent setttyent getspnam setlinebuf setvbuf ptsname grantpt unlockpt sigaction setsockopt getdtablesize putenv memset memcpy memcmp memmove sysconf getlogin inet_aton setproctitle gettimeofday strlcpy closefrom) 835AC_CHECK_FUNC(strcasecmp, 836 [AC_DEFINE(HAVE_STRCASECMP, 1, [Define if strcasecmp is available])], 837 [AC_CHECK_FUNC(stricmp, 838 [AC_DEFINE(HAVE_STRICMP, 1, [Define if stricmp is available])], 839 [AC_MSG_ERROR([strcasecmp or stricmp must be available])])]) 840 841dnl Checks for libbsm functions 842AC_CHECK_HEADERS(bsm/audit.h) 843AC_CHECK_LIB(bsm, getaudit) 844AC_CHECK_FUNCS(getaudit getaudit_addr) 845 846 847dnl ### Create output files. ####################################### 848AC_CONFIG_FILES([Makefile conserver/Makefile conserver.cf/Makefile console/Makefile autologin/Makefile contrib/chat/Makefile]) 849AC_CONFIG_FILES([conserver/conserver.rc], [chmod +x conserver/conserver.rc]) 850AC_CONFIG_FILES([conserver.cf/conserver.cf.man conserver.cf/conserver.passwd.man conserver/conserver.man console/console.man]) 851AC_OUTPUT 852 853[ 854echo "==============================================================" 855echo " Feature Summary" 856echo "" 857echo " Unix domain sockets (--with-uds) : $cons_with_uds" 858echo " TCP wrappers (--with-libwrap) : $cons_with_libwrap" 859echo " OpenSSL (--with-openssl) : $cons_with_openssl" 860echo " GSS-API (--with-gssapi) : $cons_with_gssapi" 861echo " FreeIPMI (--with-freeipmi) : $cons_with_freeipmi" 862if [ $cons_with_gssapi = "YES" ]; then 863echo " strip @REALM (--with-striprealm): $cons_strip_realm" 864fi 865echo " dmalloc (--with-dmalloc) : $cons_with_dmalloc" 866echo " PAM support (--with-pam) : $cons_with_pam" 867echo " IPv6 support (--with-ipv6) : $cons_with_ipv6" 868echo "" 869echo "==============================================================" 870] 871