dnl Process this file with GNU autoconf to produce a configure script. AC_INIT(sudo.h) AC_CONFIG_HEADER(config.h) dnl dnl This won't work before AC_INIT() dnl echo "Configuring CU Sudo version 1.4" dnl dnl Variables that get substituted in the Makefile dnl PROGS="sudo visudo" AC_SUBST(CFLAGS)dnl AC_SUBST(PROGS)dnl SUDO_LDFLAGS="" AC_SUBST(SUDO_LDFLAGS)dnl VISUDO_LDFLAGS="" AC_SUBST(VISUDO_LDFLAGS)dnl SUDO_LIBS="" AC_SUBST(SUDO_LIBS)dnl VISUDO_LIBS="" AC_SUBST(VISUDO_LIBS)dnl CPPFLAGS="" AC_SUBST(CPPFLAGS)dnl OSDEFS="" AC_SUBST(OSDEFS)dnl OPTIONS="" AC_SUBST(OPTIONS)dnl DCE_OBJS="" AC_SUBST(DCE_OBJS)dnl LIBOBJS="" AC_SUBST(LIBOBJS)dnl TGETPASS="tgetpass.o" AC_SUBST(TGETPASS)dnl MANTYPE="man" AC_SUBST(MANTYPE)dnl MAN_POSTINSTALL="" AC_SUBST(MAN_POSTINSTALL)dnl dnl dnl Override default configure dirs... dnl test "$mandir" = '${prefix}/man' && mandir='$(prefix)/man' test "$bindir" = '${exec_prefix}/bin' && bindir='$(exec_prefix)/bin' test "$sbindir" = '${exec_prefix}/sbin' && sbindir='$(exec_prefix)/etc' test "$sysconfdir" = '${prefix}/etc' && sysconfdir='/etc' 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 S/Key support ], AC_DEFINE(HAVE_SKEY) SKEY=1 echo 'Configuring for use with S/Key') dnl --with-SecurID AC_ARG_WITH(SecurID, [ --with-SecurID enable SecurID support], AC_DEFINE(HAVE_SECURID) SECURID=1 echo 'Configuring for use with SecurID') 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-DCE AC_ARG_WITH(DCE, [ --with-DCE enable DCE support], AC_DEFINE(HAVE_DCE) DCE=1 echo 'Configuring for use with DCE') dnl --with-csops AC_ARG_WITH(csops, [ --with-csops add CSOps standard options], OPTIONS="${OPTIONS} -DUSE_INSULTS -DCLASSIC_INSULTS -DCSOPS_INSULTS -DENV_EDITOR" sbindir='$(exec_prefix)/sbin' CSOPS=1 echo 'CSOps--adding options: USE_INSULTS CLASSIC_INSULTS CSOPS_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 AC_ISC_POSIX 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 SUDO_LDFLAGS="${SUDO_LDFLAGS} -Wl,-bI:\$(srcdir)/aixcrypt.exp" ;; "hp-ux") echo "Looks like HP-UX $OSREV" # uncomment this for a statically linked sudo # (XXX - should be an option to configure) #STATIC_SUDO=true if test "$OSREV" -lt 9 ; then AC_DEFINE(BROKEN_SYSLOG) if test -n "$GCC" ; then SUDO_LDFLAGS="${SUDO_LDFLAGS} -static" else SUDO_LDFLAGS="${SUDO_LDFLAGS} -Wl,-a,archive" fi elif test "$OSREV" -eq 9 ; then AC_DEFINE(BROKEN_SYSLOG) if test -n "$STATIC_SUDO" ; then if test -n "$GCC" ; then SUDO_LDFLAGS="${SUDO_LDFLAGS} -static" else SUDO_LDFLAGS="${SUDO_LDFLAGS} -Wl,-a,archive" fi fi # DCE support if test -n "$DCE" ; then # order of libs in 9.X is important. -lc_r must be last SUDO_LIBS="-ldce -lM -lc_r" if test -n "$GCC" ; then CPPFLAGS="${CPPFLAGS} -D_HPUX_SOURCE -D_REENTRANT -I/usr/include/reentrant" else CPPFLAGS="${CPPFLAGS} -Aa -D_HPUX_SOURCE -D_REENTRANT -I/usr/include/reentrant" fi fi # shadow pw support if test -n "$C2"; then SHADOW_TYPE="SPW_HPUX9" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi elif test "$OSREV" -eq 10 ; then if test -n "$STATIC_SUDO" ; then if test -n "$GCC" ; then SUDO_LDFLAGS="${SUDO_LDFLAGS} -static" else SUDO_LDFLAGS="${SUDO_LDFLAGS} -Wl,-a,archive" fi fi # DCE support if test -n "$DCE" ; then # order of libs in 10.0 is important. -ldce must be last # note that gcc has it's own alloca() if test -n "$GCC" ; then SUDO_LIBS="-ldce" CPPFLAGS="${CPPFLAGS} -D_HPUX_SOURCE" else SUDO_LIBS="-lPW -ldce" VISUDO_LIBS="-lPW" CPPFLAGS="${CPPFLAGS} -Aa -D_HPUX_SOURCE" fi fi # shadow pw support if test -n "$C2"; then SHADOW_TYPE="SPW_HPUX9" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) SUDO_LIBS="${SUDO_LIBS} /usr/lib/libsec.1" fi fi # AFS support if test -n "$AFS" ; then SUDO_LIBS="-lBSD ${SUDO_LIBS}" fi ;; "osf1") echo "Looks like OSF/1" SUDO_LDFLAGS="${SUDO_LDFLAGS} -Wl,-no_library_replacement" # C2 security stuff if test -n "$C2" ; then SUDO_LIBS="${SUDO_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 mandir="/usr/share/catman/local" else mandir="/usr/catman/local" fi else if test -d "/usr/share/man/local" ; then mandir="/usr/share/man/local" else mandir="/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" SUDO_LIBS="${SUDO_LIBS} -lshadow" fi ;; "convex") echo "Looks like ConvexOs" AC_DEFINE(_CONVEX_SOURCE) if test -z "$GCC" ; then CFLAGS="${CFLAGS} -D__STDC__" fi # C2 security stuff if test -n "$C2" ; then OSDEFS="${OSDEFS} -D_AUDIT -D_ACL -DSecureWare" SUDO_LIBS="${SUDO_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 SUDO_LIBS="${SUDO_LIBS} -lauth" SHADOW_TYPE="SPW_ULTRIX4" AC_DEFINE_UNQUOTED(SHADOW_TYPE, $SHADOW_TYPE) fi ;; "riscos") echo "Looks like RISCos" SUDO_LIBS="${SUDO_LIBS} -lsun -lbsd" CPPFLAGS="${CPPFLAGS} -I/usr/include -I/usr/include/bsd" OSDEFS="${OSDEFS} -D_MIPS" ;; "isc") echo "Looks like INTERACTIVE" SUDO_LIBS="${SUDO_LIBS} -lcrypt" if test -n "$C2" ; then SUDO_LIBS="${SUDO_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) SUDO_LIBS="${SUDO_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 "$SKEY" -a -z "$SECURID" -a -z "$AFS" -a -z "$KERB4" -a -z "$KERB5" -a -n "$DCE" -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)" ; SUDO_LIBS="${SUDO_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_CHECK_HEADERS(string.h strings.h unistd.h malloc.h paths.h utime.h sys/sockio.h sys/bsdtypes.h) dnl ultrix termio/termios are broken if test "$OS" != "ultrix" ; then AC_CHECK_HEADERS(termio.h) AC_CHECK_HEADERS(termios.h, AC_CHECK_FUNCS(tcgetattr)) 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 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), AC_CHECK_LIB(compat, lsearch, AC_CHECK_HEADER(search.h, AC_DEFINE(HAVE_LSEARCH) SUDO_LIBS="${SUDO_LIBS} -lcompat" ; VISUDO_LIBS="${VISUDO_LIBS} -lcompat", LIBOBJS="$LIBOBJS lsearch.o"), 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, SUDO_LIBS="${SUDO_LIBS} -lcrypt", AC_CHECK_LIB(crypt_d, crypt, SUDO_LIBS="${SUDO_LIBS} -lcrypt_d", AC_CHECK_LIB(crypt, ufc, SUDO_LIBS="${SUDO_LIBS} -lufc")))) dnl dnl library checks dnl dnl Irix doesn't want -lnsl or -lsocket (and Irix 4 needs -lsun) if test "$OS" != "irix" ; then AC_CHECK_LIB(nsl, main, SUDO_LIBS="${SUDO_LIBS} -lnsl") AC_CHECK_LIB(socket, main, SUDO_LIBS="${SUDO_LIBS} -lsocket") elif test "$OSREV" -lt 5 ; then AC_CHECK_LIB(sun, getpwnam, [SUDO_LIBS="${SUDO_LIBS} -lsun" VISUDO_LIBS="${VISUDO_LIBS} -lsun"] ) fi AC_CHECK_LIB(inet, main, SUDO_LIBS="${SUDO_LIBS} -linet") 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 SUDO_LDFLAGS="${SUDO_LDFLAGS} -L/usr/kerberos/lib" elif test -d "/usr/lib/kerberos" ; then SUDO_LDFLAGS="${SUDO_LDFLAGS} -L/usr/lib/kerberos" elif test -f "/usr/local/lib/libkrb.a" ; then SUDO_LDFLAGS="${SUDO_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 SUDO_LDFLAGS' fi SUDO_LIBS="${SUDO_LIBS} -lkrb -ldes" if test -n "$KERB5" ; then SUDO_LIBS="${SUDO_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 SUDO_LDFLAGS="${SUDO_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 SUDO_LDFLAGS' fi SUDO_LIBS="${SUDO_LIBS} -lkauth -lprot -lauth -lubik -lrxkad -lsys -ldes -lrx -llwp -lcom_err -laudit -lutil" fi dnl dnl extra DCE lib dnl if test -n "$DCE" ; then DCE_OBJS="${DCE_OBJS} dce_pwent.o" fi dnl dnl extra Skey lib and includes dnl if test -n "$SKEY" ; then SUDO_LIBS="${SUDO_LIBS} -lskey" if test -f /usr/local/include/skey.h -a -f /usr/local/lib/libskey.a; then CPPFLAGS="${CPPFLAGS} -I/usr/local/include" SUDO_LDFLAGS="${SUDO_LDFLAGS} -L/usr/local/lib" elif test -n "$CSOPS" -a -f /tools/cs/skey/include/skey.h -a -f /tools/cs/skey/lib/libskey.a; then CPPFLAGS="${CPPFLAGS} -I/tools/cs/skey/include" SUDO_LDFLAGS="${SUDO_LDFLAGS} -L/tools/cs/skey/lib" else echo 'Unable to locate libskey.a and/or skey.h, you will have to edit the Makefile and add -L/path/to/skey/lib to SUDO_LDFLAGS and/or -I/path/to/skey.h to CPPFLAGS' fi fi dnl dnl extra SecurID lib + includes if test -n "$SECURID" ; then SUDO_LIBS="${SUDO_LIBS} /usr/ace/sdiclient.a" CPPFLAGS="${CPPFLAGS} -I/usr/ace" fi dnl dnl Check for log file location dnl SUDO_LOGFILE dnl dnl Set exec_prefix dnl test "$exec_prefix" = "NONE" && exec_prefix='$(prefix)' dnl dnl Substitute into the Makefiles dnl AC_OUTPUT(Makefile)