dnl Process this file with autoconf to produce a configure script. echo Configuring CU Sudo version 1.3.5 AC_INIT(sudo.h) AC_CONFIG_HEADER(config.h) dnl dnl Variables that get substituted in the Makefile dnl PROGS="sudo visudo" AC_SUBST(PROGS)dnl LDFLAGS="" AC_SUBST(LDFLAGS)dnl CPPFLAGS="" AC_SUBST(CPPFLAGS)dnl OSDEFS="" AC_SUBST(OSDEFS)dnl OPTIONS="" AC_SUBST(OPTIONS)dnl LIBOBJS="" AC_SUBST(LIBOBJS)dnl TGETPASS="tgetpass.o" AC_SUBST(TGETPASS)dnl MAN_PREFIX='$(prefix)/man' AC_SUBST(MAN_PREFIX)dnl MANTYPE="man" MAN_POSTINSTALL="" AC_SUBST(MAN_POSTINSTALL)dnl AC_SUBST(MANTYPE)dnl dnl dnl Options for --with dnl dnl --with-getpass AC_ARG_WITH(getpass, [ --with-getpass use system getpass(3)], AC_DEFINE(USE_GETPASS) echo 'Using system getpass' TGETPASS="") dnl --with-C2 AC_ARG_WITH(C2, [ --with-C2 enable C2 security (shadow password) support], AC_DEFINE(HAVE_C2_SECURITY) C2=1 echo 'Configuring for C2 security') dnl --with-Skey AC_ARG_WITH(SKEY, [ --with-SKEY enable Skey support (untested)], AC_DEFINE(HAVE_SKEY) SKEY=1 echo 'Configuring for use with Skey') dnl --with-kerb4 AC_ARG_WITH(kerb4, [ --with-kerb4 enable kerberos v4 support], AC_DEFINE(HAVE_KERB4) KERB4=1 echo 'Configuring for use with Kerberos version 4') dnl --with-kerb5 AC_ARG_WITH(kerb5, [ --with-kerb5 enable kerberos v5 support], AC_DEFINE(HAVE_KERB5) KERB4=1 echo 'Configuring for use with Kerberos version 5') dnl --with-AFS AC_ARG_WITH(AFS, [ --with-AFS enable AFS support], AC_DEFINE(HAVE_AFS) AFS=1 echo 'Configuring for use with AFS') dnl --with-csops AC_ARG_WITH(csops, [ --with-csops add CSops standard options], OPTIONS="${OPTIONS} -DUSE_INSULTS -DENV_EDITOR" echo 'CSOps--adding options: USE_INSULTS ENV_EDITOR') dnl dnl If we don't have egrep we can't do anything... dnl AC_CHECK_PROG(EGREPPROG, egrep, egrep, ) if test -z "$EGREPPROG" ; then echo "Sorry, configure requires egrep to run." exit fi dnl dnl C compiler checks dnl AC_PROG_CC AC_PROG_CPP dnl dnl find programs we use dnl AC_CHECK_PROG(UNAMEPROG, uname, uname, ) AC_CHECK_PROG(TRPROG, tr, tr, ) AC_CHECK_PROG(SEDPROG, sed, sed, ) AC_CHECK_PROG(NROFFPROG, nroff, nroff, ) if test -z "$NROFFPROG" ; then MANTYPE="cat" fi dnl dnl is our OS using shadow passwords? dnl XXX - need to add checks for various dnl shadow password schemes after OS checks... dnl if test -z "$C2"; then SUDO_CHECK_SHADOW(AC_DEFINE(HAVE_C2_SECURITY) C2=1) fi dnl dnl what architecture are we on? dnl SUDO_OSTYPE OS=`echo $OS | $TRPROG '[[A-Z]]' '[[a-z]]'` case "$OS" in "sunos") echo "Looks like SunOS 4.x" if test -n "$C2"; then SHADOW_TYPE="SPW_SUNOS4" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi ;; "solaris") echo "Looks like Solaris" if test -n "$C2"; then SHADOW_TYPE="SPW_SVR4" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi ;; "aix") echo "Looks like AIX" AC_DEFINE(_ALL_SOURCE) if test -n "$C2"; then SHADOW_TYPE="SPW_AIX" fi LDFLAGS="${LDFLAGS} -Wl,-bI:./aixcrypt.exp" ;; "hp-ux") echo "Looks like HP-UX" AC_DEFINE(BROKEN_SYSLOG) if test "$OSREV" -lt 9 ; then if test -n "$GCC" ; then LDFLAGS="${LDFLAGS} -static" else LDFLAGS="${LDFLAGS} -Wl,-a,archive" fi fi if test -n "$AFS" ; then LIBS="-lBSD ${LIBS}" elif test "$OSREV" -eq 9 ; then if test -n "$C2"; then SHADOW_TYPE="SPW_HPUX9" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi fi ;; "osf1") echo "Looks like OSF/1" LDFLAGS="${LDFLAGS} -Wl,-no_library_replacement" # C2 security stuff if test -n "$C2" ; then LIBS="${LIBS} -lsecurity -laud" SHADOW_TYPE="SPW_SECUREWARE" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi ;; "irix") echo "Looks like IRIX" # C2 security stuff if test -n "$C2" ; then SHADOW_TYPE="SPW_SVR4" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi # configure doesn't think irix has stdc headers # but it's good enough for sudo AC_DEFINE(STDC_HEADERS) if test -z "$NROFFPROG" ; then MAN_POSTINSTALL='/bin/rm -f $(mandir)/sudo.$(mansect).z ; /usr/bin/pack $(mandir)/sudo.$(mansect)' if test -d /usr/share/catman/local; then MAN_PREFIX="/usr/share/catman/local" else MAN_PREFIX="/usr/catman/local" fi else if test -d "/usr/share/man/local" ; then MAN_PREFIX="/usr/share/man/local" else MAN_PREFIX="/usr/man/local" fi fi ;; "linux") echo "Looks like linux" # C2 security stuff if test -n "$C2" ; then SHADOW_TYPE="SPW_SVR4" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) OSDEFS="${OSDEFS} -DSHADOW_PWD" LIBS="${LIBS} -lshadow" fi ;; "convex") echo "Looks like ConvexOs" AC_DEFINE(_CONVEX_SOURCE) # C2 security stuff if test -n "$C2" ; then OSDEFS="${OSDEFS} -D_AUDIT -D_ACL -DSecureWare" LIBS="${LIBS} -lprot" SHADOW_TYPE="SPW_SECUREWARE" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi ;; "ultrix"*) echo "Looks like ultrix" # C2 security stuff if test -n "$C2" ; then LIBS="${LIBS} -lauth" SHADOW_TYPE="SPW_ULTRIX4" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi ;; "riscos") echo "Looks like RISCos" LIBS="${LIBS} -lsun -lbsd" CPPFLAGS="${CPPFLAGS} -I/usr/include -I/usr/include/bsd" OSDEFS="${OSDEFS} -D_MIPS" ;; "isc") echo "Looks like INTERACTIVE" LIBS="${LIBS} -linet" if test -n "$C2" ; then LIBS="${LIBS} -lsec" SHADOW_TYPE="SPW_SVR4" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi OSDEFS="${OSDEFS} -D_ISC" ;; "unix_sv") echo "Looks like UnixWare" if test -n "$C2" ; then SHADOW_TYPE="SPW_SVR4" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi ;; "sco") echo "Looks like SCO" if test -n "$C2" ; then SHADOW_TYPE="SPW_SECUREWARE" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) LIBS="${LIBS} -lprot -lx" fi ;; "ksr"*) echo "Looks like a KSR (wow, yours is still running?!?)" ;; "next") echo "Looks like NeXTstep" ;; "bsd/386" | "bsd/os") echo "Looks like bsdi BSD/OS" if test -n "$C2" ; then SHADOW_TYPE="SPW_BSD" fi ;; "mtxinu") echo "Looks like mt Xinu MORE/BSD" ;; "4.3bsd") echo "Looks like HP BSD" if test -n "$C2" ; then SHADOW_TYPE="SPW_BSD" fi ;; *"bsd"*) echo "Looks like some kind of BSD" ;; "unknown") echo "I don't recognize your OS, but that's ok" ;; *) echo "Hmmm, I don't recognize $OS offhand, but that's ok" ;; esac dnl dnl search for various shadow password types unless we already know dnl XXX - need to ACDEFINE *something* right??? dnl if test -z "$AFS" -a -z "$KERB4" -a -z "$KERB5" -a -n "$C2" -a -z "$SHADOW_TYPE" then echo "checking for shadow password type..." AC_CHECK_FUNC(getspnam, SHADOW_TYPE="SPW_SVR4", AC_CHECK_FUNC(getprpwuid, SHADOW_TYPE="SPW_SECUREWARE", [test -f /etc/master.passwd && SHADOW_TYPE="SPW_BSD"])) case "$SHADOW_TYPE" in "SPW_SVR4") echo "shadow password type is getspnam (svr4)" ; AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) ;; "SPW_BSD") echo "shadow password type is /etc/master.passwd (BSD)" ;; "SPW_SECUREWARE") echo "shadow password type is etprpwuid (SecureWare)" ; LIBS="${LIBS} -lprot -lx" ; AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) ;; *) echo "unknown" ; echo "Unable to determine shadow passwd type, sudo may not be able to verify passwords" ;; esac fi dnl dnl C compiler checks (to be done after os checks) dnl AC_PROG_GCC_TRADITIONAL AC_C_CONST dnl dnl Program checks dnl AC_PROG_YACC AC_PROG_LEX AC_PROG_INSTALL SUDO_PROG_SENDMAIL SUDO_PROG_PWD SUDO_PROG_MV SUDO_PROG_VI dnl dnl Header file checks dnl AC_HEADER_STDC AC_HEADER_DIRENT AC_HAVE_HEADERS(string.h strings.h unistd.h malloc.h paths.h utime.h sys/sockio.h) dnl ultrix termio/termios are broken if test "$OS" != "ultrix" ; then AC_HAVE_HEADERS(termio.h termios.h) fi dnl dnl typedef checks dnl AC_TYPE_MODE_T AC_TYPE_UID_T SUDO_TYPE_SIZE_T SUDO_TYPE_SSIZE_T SUDO_FULL_VOID SUDO_UID_T_LEN SUDO_SOCK_SA_LEN dnl dnl only set RETSIGTYPE if it is not set already dnl case "$DEFS" in *"RETSIGTYPE"*) ;; *) AC_TYPE_SIGNAL;; esac dnl dnl Function checks dnl AC_CHECK_FUNCS(strchr strrchr memcpy memset sysconf sigaction tzset tcsetattr strcasecmp) AC_CHECK_FUNC(innetgr, AC_DEFINE(HAVE_INNETGR) AC_CHECK_FUNCS(getdomainname)) AC_CHECK_FUNC(getwd, AC_DEFINE(HAVE_GETWD), LIBOBJS="$LIBOBJS getwd.o") AC_CHECK_FUNC(strdup, AC_DEFINE(HAVE_STRDUP), LIBOBJS="$LIBOBJS strdup.o") AC_CHECK_FUNC(lsearch, AC_DEFINE(HAVE_LSEARCH), LIBOBJS="$LIBOBJS lsearch.o") AC_CHECK_FUNC(setenv, AC_DEFINE(HAVE_SETENV), AC_FUNC_CHECK(putenv, AC_DEFINE(HAVE_PUTENV), LIBOBJS="$LIBOBJS putenv.o")) AC_CHECK_FUNC(utime, AC_DEFINE(HAVE_UTIME) SUDO_FUNC_UTIME_POSIX AC_FUNC_UTIME_NULL, LIBOBJS="$LIBOBJS utime.o") dnl dnl if crypt(3) not in libc, look elsewhere dnl AC_CHECK_FUNC(crypt, ,AC_CHECK_LIB(crypt, crypt, , AC_CHECK_LIB(crypt_d, crypt, , AC_CHECK_LIB(crypt, ufc)))) dnl dnl library checks dnl dnl Irix 5.2 (at least) has bugs in -lnsl and -lsocket if test "$OS" != "irix" -o $OSREV -ne 5 ; then AC_CHECK_LIB(nsl, main) AC_CHECK_LIB(socket, main) fi dnl dnl OS-dependent libraries dnl AC_CHECK_LIB(sun, getpwnam) dnl dnl Find kerberos includes and libs or complain dnl if test -n "$KERB4" -o -n "$KERB5" ; then if test -d "/usr/include/kerberosIV" ; then CPPFLAGS="${CPPFLAGS} -I/usr/include/kerberosIV" elif test -d "/usr/local/include/kerberosIV" ; then CPPFLAGS="${CPPFLAGS} -I/usr/local/include/kerberosIV" elif test -d "/usr/kerberos/include" ; then CPPFLAGS="${CPPFLAGS} -I/usr/kerberos/include" else echo "Unable to locate kerberos include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS" fi if test -d "/usr/kerberos/lib" ; then LDFLAGS="${LDFLAGS} -L/usr/kerberos/lib" elif test -d "/usr/lib/kerberos" ; then LDFLAGS="${LDFLAGS} -L/usr/lib/kerberos" elif test -f "/usr/local/lib/libkrb.a" ; then LDFLAGS="${LDFLAGS} -L/usr/local/lib" elif test ! -f "/usr/lib/libkrb.a" ; then echo "Unable to locate kerberos libraries, you will have to edit the Makefile and add -L/path/to/krb/libs to LDFLAGS" fi LIBS="${LIBS} -lkrb -ldes" if test -n "$KERB5" ; then LIBS="${LIBS} -ldes425 -lkrb5 -lcrypto -lcom_err" fi fi dnl dnl extra AFS libs dnl if test -n "$AFS" ; then if test -d "/usr/lib/afs" ; then LDFLAGS="${LDFLAGS} -L/usr/lib/afs" else echo "Unable to locate AFS libraries, you will have to edit the Makefile and add -L/path/to/afs/libs to LDFLAGS" fi LIBS="${LIBS} -lkauth -lprot -lauth -lubik -lrxkad -lsys -ldes -lrx -llwp -lcom_err -laudit -lutil" fi dnl dnl extra Skey lib if test -n "$SKEY" ; then LIBS="${LIBS} -lskey" fi dnl dnl Check for log file location dnl SUDO_LOGFILE dnl dnl Substitute into the Makefiles dnl AC_OUTPUT(Makefile)