dnl ### autoheader templates. ####################################### AH_TEMPLATE([CONFIGINVOCATION], [./configure invocation]) AH_TEMPLATE([DEFPORT], [Socket used to communicate]) AH_TEMPLATE([DEFBASEPORT], [Base socket used for secondary channel]) AH_TEMPLATE([MASTERHOST], [Hostname of console server]) AH_TEMPLATE([CONFIGFILE], [Config file path]) AH_TEMPLATE([PASSWDFILE], [Password file path]) AH_TEMPLATE([LOGFILEPATH], [Logfile path]) AH_TEMPLATE([MAXMEMB], [Number of consoles per child process]) AH_TEMPLATE([CONNECTTIMEOUT], [TCP connection timeout]) AH_TEMPLATE([PIDFILE], [pidfile to write to]) AH_TEMPLATE([USE_LIBWRAP], [use tcp_wrappers libwrap]) AH_TEMPLATE([USE_ANSI_PROTO], [use ansi prototypes/decls]) AH_TEMPLATE([HAVE_POSIX_REGCOMP], [have POSIX regcomp]) AH_TEMPLATE([HAVE_PAM], [have PAM]) dnl ### Normal initialization. ###################################### AC_INIT AC_CONFIG_SRCDIR([conserver/main.c]) AC_CONFIG_HEADER(config.h) AC_DEFINE_UNQUOTED(CONFIGINVOCATION, "$0 $@") dnl ### Set some option defaults. ################################### if test -z "$CFLAGS"; then CFLAGS="-O" fi MKDIR="mkdir -p -m 755" AC_SUBST(MKDIR) dnl ### Custom settings. ############################################ ac_cv_allow_64bit=no AC_MSG_CHECKING(whether to allow 64bit compilation) AC_ARG_WITH(64bit, AC_HELP_STRING([--with-64bit],[Allow 64bit compilation]), [if test "$withval" = yes; then ac_cv_allow_64bit=yes fi]) AC_MSG_RESULT($ac_cv_allow_64bit) AC_MSG_CHECKING(for port number specification) AC_ARG_WITH(port, AC_HELP_STRING([--with-port=PORT],[Specify port number @<:@conserver@:>@]), [if test "$withval" != yes -a "$withval" != no; then AC_DEFINE_UNQUOTED(DEFPORT, "$withval") AC_MSG_RESULT(port '$withval') else AC_DEFINE_UNQUOTED(DEFPORT, "conserver") AC_MSG_RESULT(port 'conserver') fi], [AC_DEFINE_UNQUOTED(DEFPORT, "conserver") AC_MSG_RESULT(port 'conserver')]) AC_MSG_CHECKING(for secondary channel base port) AC_ARG_WITH(base, AC_HELP_STRING([--with-base=PORT], [Base port for secondary channel @<:@0@:>@]), [if test "$withval" != yes -a "$withval" != no; then AC_DEFINE_UNQUOTED(DEFBASEPORT, "$withval") AC_MSG_RESULT(port '$withval') else AC_DEFINE_UNQUOTED(DEFBASEPORT, "0") AC_MSG_RESULT(port '0') fi], [AC_DEFINE_UNQUOTED(DEFBASEPORT, "0") AC_MSG_RESULT(port '0')]) AC_MSG_CHECKING(for master conserver hostname) AC_ARG_WITH(master, AC_HELP_STRING([--with-master=MASTER],[Specify master server hostname @<:@console@:>@]), [if test "$withval" != yes; then AC_DEFINE_UNQUOTED(MASTERHOST, "$withval") AC_MSG_RESULT('$withval') else AC_DEFINE_UNQUOTED(MASTERHOST, "console") AC_MSG_RESULT('console') fi], [AC_DEFINE_UNQUOTED(MASTERHOST, "console") AC_MSG_RESULT('console')]) AC_MSG_CHECKING(for configuration filename) AC_ARG_WITH(cffile, AC_HELP_STRING([--with-cffile=CFFILE],[Specify config filename @<:@conserver.cf@:>@]), [if test "$withval" != yes; then AC_DEFINE_UNQUOTED(CONFIGFILE, "$withval") AC_MSG_RESULT('$sysconfdir/$withval') else AC_DEFINE_UNQUOTED(CONFIGFILE, "conserver.cf") AC_MSG_RESULT('$sysconfdir/conserver.cf') fi], [AC_DEFINE_UNQUOTED(CONFIGFILE, "conserver.cf") AC_MSG_RESULT('$sysconfdir/conserver.cf')]) AC_MSG_CHECKING(for password filename) AC_ARG_WITH(pwdfile, AC_HELP_STRING([--with-pwdfile=PWDFILE],[Specify password filename @<:@conserver.passwd@:>@]), [if test "$withval" != yes; then AC_DEFINE_UNQUOTED(PASSWDFILE, "$withval") AC_MSG_RESULT('$sysconfdir/$withval') else AC_DEFINE_UNQUOTED(PASSWDFILE, "conserver.passwd") AC_MSG_RESULT('$sysconfdir/conserver.passwd') fi], [AC_DEFINE_UNQUOTED(PASSWDFILE, "conserver.passwd") AC_MSG_RESULT('$sysconfdir/conserver.passwd')]) AC_MSG_CHECKING(for log filename) AC_ARG_WITH(logfile, AC_HELP_STRING([--with-logfile=LOGFILE],[Specify log filename @<:@/var/log/conserver@:>@]), [if test "$withval" != yes; then AC_DEFINE_UNQUOTED(LOGFILEPATH, "$withval") AC_MSG_RESULT('$withval') else AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/conserver") AC_MSG_RESULT('/var/log/conserver') fi], [AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/conserver") AC_MSG_RESULT('/var/log/conserver')]) AC_MSG_CHECKING(for PID filename) AC_ARG_WITH(pidfile, AC_HELP_STRING([--with-pidfile=PIDFILE],[Specify PID filepath @<:@/var/run/conserver.pid@:>@]), [if test "$withval" != yes; then AC_DEFINE_UNQUOTED(PIDFILE, "$withval") AC_MSG_RESULT('$withval') else AC_DEFINE_UNQUOTED(PIDFILE, "/var/run/conserver.pid") AC_MSG_RESULT('/var/run/conserver.pid') fi], [AC_DEFINE_UNQUOTED(PIDFILE, "/var/run/conserver.pid") AC_MSG_RESULT('/var/run/conserver.pid')]) AC_MSG_CHECKING(for MAXMEMB setting) AC_ARG_WITH(maxmemb, AC_HELP_STRING([--with-maxmemb=MAXMEMB],[Specify maximum consoles per process @<:@16@:>@]), [if test "$withval" != yes; then AC_DEFINE_UNQUOTED(MAXMEMB, $withval) AC_MSG_RESULT($withval) else AC_DEFINE_UNQUOTED(MAXMEMB, 16) AC_MSG_RESULT(16) fi], [AC_DEFINE_UNQUOTED(MAXMEMB, 16) AC_MSG_RESULT(16)]) AC_MSG_CHECKING(for connect() timeout) AC_ARG_WITH(timeout, AC_HELP_STRING([--with-timeout=TIMEOUT],[Specify connect() timeout in seconds @<:@10@:>@]), [if test "$withval" -gt 0 -o "$withval" -lt 300; then AC_DEFINE_UNQUOTED(CONNECTTIMEOUT, $withval) AC_MSG_RESULT($withval) else AC_DEFINE_UNQUOTED(CONNECTTIMEOUT, 10) AC_MSG_RESULT(10) fi], [AC_DEFINE_UNQUOTED(CONNECTTIMEOUT, 10) AC_MSG_RESULT(10)]) dnl ### Check for compiler et al. ################################### AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET dnl ### Compiler characteristics. ################################## AC_AIX AC_PROG_CC_STDC AC_C_CONST AC_CHECK_SIZEOF(long) if test "$ac_cv_sizeof_long" -gt 4; then if test "$ac_cv_allow_64bit" != "yes"; then AC_MSG_ERROR([cannot build on >32bit systems (to override use --with-64bit)]) else AC_MSG_WARN([building a 64bit version of conserver - good luck!]) fi fi if test "$ac_cv_prog_cc_stdc" != "no"; then AC_DEFINE_UNQUOTED(USE_ANSI_PROTO, 1) fi dnl ### Checks for header files. ################################### AC_HEADER_STDC AC_CHECK_HEADERS(sys/ioctl.h) dnl ### POSIX terminal I/O AC_CHECK_HEADERS(termios.h) if test "$ac_cv_header_termios_h" != "yes"; then dnl ### SysV terminal I/O AC_CHECK_HEADERS(termio.h) if test "$ac_cv_header_termio_h" != "yes"; then dnl ### BSD terminal I/O AC_CHECK_HEADERS(sgtty.h) if test "$ac_cv_header_sgtty_h" != "yes"; then AC_MSG_ERROR([no usable terminal interface detected]) fi fi fi AC_CHECK_HEADERS(unistd.h getopt.h sys/vlimit.h sys/resource.h ttyent.h sys/ttold.h sys/uio.h sys/proc.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) AC_HEADER_TIME AC_HEADER_SYS_WAIT AC_TYPE_MODE_T AC_TYPE_SIGNAL AC_CHECK_TYPE([sig_atomic_t],, AC_DEFINE(sig_atomic_t, volatile int, [Define if does not define sig_atomic_t]), [#include ]) AC_CHECK_TYPE([in_addr_t],[AC_DEFINE(HAVE_IN_ADDR_T,1, [Defined if in_addr_t exists])],,[$ac_includes_default #include ]) AC_CHECK_TYPE([socklen_t],[AC_DEFINE(HAVE_SOCKLEN_T,1, [Defined if socklen_t exists])],,[$ac_includes_default #include ]) dnl ### Check for libraries. ####################################### AC_SEARCH_LIBS(socket,socket) AC_SEARCH_LIBS(gethostbyname,nsl) AC_SEARCH_LIBS(crypt,crypt) AC_SUBST(CONSLIBS) AC_SUBST(CONSCPPFLAGS) AC_SUBST(CONSLDFLAGS) AC_ARG_WITH(libwrap, AC_HELP_STRING([--with-libwrap@<:@=PATH@:>@], [Compile in libwrap (tcp_wrappers) support]), [if test "$withval" != "no"; then if test "$withval" != "yes"; then WRAPCPPFLAGS="-I$withval/include" WRAPLDFLAGS="-L$withval/lib" else WRAPCPPFLAGS="" WRAPLDFLAGS="" fi oCPPFLAGS="$CPPFLAGS" oLDFLAGS="$LDFLAGS" oLIBS="$LIBS" CPPFLAGS="$CPPFLAGS $WRAPCPPFLAGS" LDFLAGS="$LDFLAGS $WRAPLDFLAGS" AC_CHECK_HEADER(tcpd.h, [LIBS="$LIBS -lwrap" AC_MSG_CHECKING(for TCP wrappers library -lwrap) AC_TRY_LINK([#include int allow_severity = 0; int deny_severity = 0; ],[hosts_access((void *)0)], [AC_MSG_RESULT(yes) AC_DEFINE(USE_LIBWRAP) CONSLIBS="$CONSLIBS -lwrap" CONSLDFLAGS="$CONSLDFLAGS $WRAPLDFLAGS" CONSCPPFLAGS="$CONSCPPFLAGS $WRAPCPPFLAGS"], [AC_MSG_RESULT(no)])],) LIBS="$oLIBS" CPPFLAGS="$oCPPFLAGS" LDFLAGS="$oLDFLAGS" fi] ) dnl ### Check for needed functions. ################################ dnl The following basically stollen from the less-358 distribution, but dnl modified for my own purposes AC_MSG_CHECKING(for POSIX regex) AC_ARG_WITH(regex, AC_HELP_STRING([--with-regex], [Use regular expressions in conserver.passwd]), [if test "$withval" = yes; then AC_TRY_RUN([ #include #include main() { regex_t r; regmatch_t rm; char *text = "xabcy"; if (regcomp(&r, "abc", 0)) exit(1); if (regexec(&r, text, 1, &rm, 0)) exit(1); if (rm.rm_so != 1) exit(1); /* check for correct offset */ exit(0); } ],have_posix_regex=yes,have_posix_regex=no,have_posix_regex=unknown) if test $have_posix_regex = yes; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_POSIX_REGCOMP) elif test $have_posix_regex = unknown; then AC_TRY_LINK([ #include #include ], [regex_t *r; regfree(r);], AC_MSG_RESULT(yes) AC_DEFINE(HAVE_POSIX_REGCOMP)) else AC_MSG_RESULT(no) fi else AC_MSG_RESULT(no) fi],[AC_MSG_RESULT(no)]) AC_ARG_WITH(pam, AC_HELP_STRING([--with-pam], [enable PAM support]), [if test "$withval" = yes; then oLIBS="$LIBS" AC_CHECK_HEADER(security/pam_appl.h, [LIBS="$LIBS -lpam" AC_MSG_CHECKING(for PAM library -lpam) AC_TRY_LINK_FUNC([pam_start], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PAM) CONSLIBS="$CONSLIBS -lpam"], [LIBS="$LIBS -ldl" AC_MSG_RESULT(no) AC_MSG_CHECKING(for PAM library -lpam with -ldl) AC_TRY_LINK_FUNC([pam_end], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PAM) CONSLIBS="$CONSLIBS -lpam -ldl"], [AC_MSG_RESULT(no)])])],) LIBS="$oLIBS" fi],) AC_CHECK_FUNCS(getopt strerror getrlimit getsid setsid getuserattr setgroups tcgetpgrp tcsetpgrp tcgetattr tcsetattr tcsendbreak setpgrp getutent setttyent getspnam setlinebuf setvbuf ptsname grantpt unlockpt flock sigaction setsockopt getdtablesize putenv memset memcpy memcmp sysconf getpassphrase getlogin) AC_FUNC_SETPGRP dnl Checks for libbsm functions AC_CHECK_HEADERS(bsm/audit.h) AC_CHECK_LIB(bsm, getaudit) AC_CHECK_FUNC(getaudit, AC_DEFINE(HAVE_GETAUDIT, 1, [Define if libbsm has `getaudit'.])) AC_CHECK_FUNC(getaudit_addr, AC_DEFINE(HAVE_GETAUDIT_ADDR, 1, [Define if libbsm has `getaudit_addr'.])) dnl ### Create output files. ####################################### AC_CONFIG_FILES([Makefile conserver/Makefile conserver.cf/Makefile console/Makefile autologin/Makefile]) AC_OUTPUT