307 lines
10 KiB
Plaintext
307 lines
10 KiB
Plaintext
dnl configure.in for cvs
|
|
AC_INIT(src/cvs.h)
|
|
AC_PREREQ(2.13)
|
|
AC_PREFIX_PROGRAM(cvs)
|
|
AC_CONFIG_HEADER(config.h src/options.h)
|
|
|
|
AC_PROG_AWK
|
|
AC_PROG_CC
|
|
AC_PROG_INSTALL
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_RANLIB
|
|
AC_PROG_YACC
|
|
|
|
AC_PATH_PROG(perl_path, perl, no)
|
|
AC_PATH_PROG(csh_path, csh, no)
|
|
|
|
AC_SYS_INTERPRETER
|
|
if test X"$ac_cv_sys_interpreter" != X"yes" ; then
|
|
# silly trick to avoid problems in AC macros...
|
|
ac_msg='perl scripts using #! may not be invoked properly'
|
|
AC_MSG_WARN($ac_msg)
|
|
fi
|
|
|
|
AC_AIX
|
|
AC_MINIX
|
|
AC_ISC_POSIX
|
|
if test "$ISC" = yes; then
|
|
CFLAGS="$CFLAGS -D_SYSV3"
|
|
LIBS="-lcrypt $LIBS"
|
|
fi
|
|
|
|
AC_HEADER_DIRENT
|
|
AC_HEADER_STDC
|
|
AC_HEADER_SYS_WAIT
|
|
AC_CHECK_HEADERS(errno.h unistd.h string.h memory.h utime.h fcntl.h ndbm.h \
|
|
limits.h sys/file.h \
|
|
sys/param.h sys/select.h sys/time.h sys/timeb.h \
|
|
io.h direct.h sys/bsdtypes.h sys/resource.h)
|
|
AC_HEADER_STAT
|
|
AC_HEADER_TIME
|
|
|
|
AC_C_CONST
|
|
AC_TYPE_UID_T
|
|
AC_TYPE_MODE_T
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_SIZE_T
|
|
AC_TYPE_SIGNAL
|
|
|
|
AC_STRUCT_ST_BLKSIZE
|
|
AC_REPLACE_FUNCS(mkdir rename strstr dup2 strerror valloc waitpid memmove strtoul)
|
|
AC_CHECK_FUNCS(fchmod fsync ftime mktemp putenv vprintf ftruncate timezone getpagesize initgroups fchdir sigaction sigprocmask sigvec sigsetmask sigblock tempnam tzset readlink wait3)
|
|
|
|
dnl
|
|
dnl The CVS coding standard (as specified in HACKING) is that if it exists
|
|
dnl in SunOS4 and ANSI, we use it. CVS itself, of course, therefore doesn't
|
|
dnl need HAVE_* defines for such functions, but diff wants them.
|
|
dnl
|
|
AC_DEFINE(HAVE_STRCHR)
|
|
AC_DEFINE(HAVE_MEMCHR)
|
|
|
|
dnl
|
|
dnl AC_FUNC_VFORK is rather baroque. It seems to be rather more picky
|
|
dnl than, say, the Single Unix Specification (version 2), which simplifies
|
|
dnl a lot of cases by saying that the child process can't set any variables
|
|
dnl (thus avoiding problems with register allocation) or call any functions
|
|
dnl (thus avoiding problems with whether file descriptors are shared).
|
|
dnl It would be nice if we could just write to the Single Unix Specification.
|
|
dnl I think the only way to do redirection this way is by doing it in the
|
|
dnl parent, and then undoing it afterwards (analogous to windows-NT/run.c).
|
|
dnl That would appear to have a race condition if the user hits ^C (or
|
|
dnl some other signal) at the wrong time, as main_cleanup will try to use
|
|
dnl stdout/stderr. So maybe we are stuck with AC_FUNC_VFORK.
|
|
dnl
|
|
AC_FUNC_VFORK
|
|
AC_FUNC_CLOSEDIR_VOID
|
|
|
|
dnl
|
|
dnl Check for shadow password support.
|
|
dnl
|
|
dnl We used to try to determine whether shadow passwords were actually in
|
|
dnl use or not, but the code has been changed to work right reguardless,
|
|
dnl so we can go back to a simple check.
|
|
AC_SEARCH_LIBS(getspnam, sec gen, AC_DEFINE(HAVE_GETSPNAM))
|
|
|
|
AC_FUNC_UTIME_NULL
|
|
AC_SYS_LONG_FILE_NAMES
|
|
|
|
AC_FUNC_FNMATCH
|
|
if test "$ac_cv_func_fnmatch_works" = no; then
|
|
LIBOBJS="$LIBOBJS fnmatch.o"
|
|
fi
|
|
|
|
# Try to find connect and gethostbyname.
|
|
AC_SEARCH_LIBS(connect, xnet socket inet, AC_DEFINE(HAVE_CONNECT))
|
|
AC_SEARCH_LIBS(gethostbyname, netinet nsl)
|
|
|
|
dnl
|
|
dnl set $(KRB4) from --with-krb4=value -- WITH_KRB4
|
|
dnl
|
|
dnl If you change this, keep in mind that some systems have a bogus
|
|
dnl libkrb in the system libraries, so --with-krb4=value needs to
|
|
dnl override the system -lkrb.
|
|
dnl
|
|
KRB4=/usr/kerberos
|
|
define(WITH_KRB4,[
|
|
AC_ARG_WITH([krb4],
|
|
[ --with-krb4=value set default \$(KRB4) from value],
|
|
[KRB4=$withval],
|
|
)dnl
|
|
echo "default place for krb4 is $KRB4"
|
|
AC_SUBST(KRB4)])dnl
|
|
WITH_KRB4
|
|
|
|
krb_h=
|
|
AC_MSG_CHECKING([for krb.h])
|
|
if test "$cross_compiling" != yes && test -r $KRB4/include/krb.h; then
|
|
hold_cflags=$CFLAGS
|
|
CFLAGS="$CFLAGS -I$KRB4/include"
|
|
AC_TRY_LINK([#include <krb.h>],[int i;],
|
|
[krb_h=yes krb_incdir=$KRB4/include],
|
|
[CFLAGS=$hold_cflags
|
|
AC_TRY_LINK([#include <krb.h>],[int i;],
|
|
[krb_h=yes krb_incdir=])])
|
|
CFLAGS=$hold_cflags
|
|
else
|
|
AC_TRY_LINK([#include <krb.h>],[int i;],
|
|
[krb_h=yes krb_incdir=])
|
|
fi
|
|
if test -z "$krb_h"; then
|
|
AC_TRY_LINK([#include <krb.h>],[int i;],
|
|
[krb_h=yes krb_incdir=],
|
|
[if test "$cross_compiling" != yes && test -r $KRB4/include/kerberosIV/krb.h; then
|
|
hold_cflags=$CFLAGS
|
|
CFLAGS="$CFLAGS -I$KRB4/include/kerberosIV"
|
|
AC_TRY_LINK([#include <krb.h>],[int i;],
|
|
[krb_h=yes krb_incdir=$KRB4/include/kerberosIV])
|
|
CFLAGS=$hold_cflags
|
|
fi])
|
|
fi
|
|
AC_MSG_RESULT($krb_h)
|
|
|
|
includeopt=
|
|
AC_SUBST(includeopt)
|
|
if test -n "$krb_h"; then
|
|
krb_lib=
|
|
if test "$cross_compiling" != yes && test -r $KRB4/lib/libkrb.a; then
|
|
hold_ldflags=$LDFLAGS
|
|
LDFLAGS="-L${KRB4}/lib $LDFLAGS"
|
|
AC_CHECK_LIB(krb,printf,[krb_lib=yes krb_libdir=${KRB4}/lib],
|
|
[LDFLAGS=$hold_ldflags
|
|
# Using open here instead of printf so we don't
|
|
# get confused by the cached value for printf from above.
|
|
AC_CHECK_LIB(krb,open,[krb_lib=yes krb_libdir=])])
|
|
LDFLAGS=$hold_ldflags
|
|
else
|
|
AC_CHECK_LIB(krb,printf,[krb_lib=yes krb_libdir=])
|
|
fi
|
|
if test -n "$krb_lib"; then
|
|
AC_DEFINE(HAVE_KERBEROS)
|
|
test -n "${krb_libdir}" && LIBS="${LIBS} -L${krb_libdir}"
|
|
LIBS="${LIBS} -lkrb"
|
|
# Put -L${krb_libdir} in LDFLAGS temporarily so that it appears before
|
|
# -ldes in the command line. Don't do it permanently so that we honor
|
|
# the user's setting for LDFLAGS
|
|
hold_ldflags=$LDFLAGS
|
|
test -n "${krb_libdir}" && LDFLAGS="$LDFLAGS -L${krb_libdir}"
|
|
AC_CHECK_LIB(des,printf,[LIBS="${LIBS} -ldes"])
|
|
LDFLAGS=$hold_ldflags
|
|
if test -n "$krb_incdir"; then
|
|
includeopt="${includeopt} -I$krb_incdir"
|
|
fi
|
|
fi
|
|
fi
|
|
AC_CHECK_FUNCS(krb_get_err_text)
|
|
|
|
dnl
|
|
dnl Use --with-gssapi=DIR to enable GSSAPI support.
|
|
dnl
|
|
GSSAPI=/usr/cygnus/kerbnet
|
|
define(WITH_GSSAPI,[
|
|
AC_ARG_WITH([gssapi],
|
|
[ --with-gssapi=value GSSAPI directory],
|
|
[GSSAPI=$withval],
|
|
)dnl
|
|
echo "default place for GSSAPI is $GSSAPI"
|
|
AC_SUBST(GSSAPI)])dnl
|
|
WITH_GSSAPI
|
|
|
|
hold_cppflags=$CPPFLAGS
|
|
CPPFLAGS="$CPPFLAGS -I$GSSAPI/include "
|
|
AC_CHECK_HEADERS(krb5.h gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h)
|
|
CPPFLAGS=$hold_cppflags
|
|
|
|
if test "$ac_cv_header_krb5_h" = "yes" &&
|
|
(test "$ac_cv_header_gssapi_h" = "yes" ||
|
|
test "$ac_cv_header_gssapi_gssapi_h" = "yes"); then
|
|
AC_DEFINE(HAVE_GSSAPI)
|
|
includeopt="${includeopt} -I$GSSAPI/include"
|
|
# FIXME: This is ugly, but these things don't seem to be standardized.
|
|
if test "$ac_cv_header_gssapi_h" = "yes"; then
|
|
LIBS="$LIBS -L$GSSAPI/lib -lgssapi -lkrb5 -lasn1 -ldes -lroken"
|
|
else
|
|
LIBS="$LIBS -L$GSSAPI/lib -lgssapi_krb5 -lkrb5 -lcrypto -lcom_err"
|
|
fi
|
|
save_CPPFLAGS=$CPPFLAGS
|
|
CPPFLAGS="-I$GSSAPI/include $CPPFLAGS"
|
|
if test "$ac_cv_header_gssapi_h" = "yes"; then
|
|
AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
|
|
else
|
|
AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE))
|
|
fi
|
|
CPPFLAGS=$save_CPPFLAGS
|
|
# This is necessary on Irix 5.3, in order to link against libkrb5 --
|
|
# there, an_to_ln.o refers to things defined only in -lgen.
|
|
AC_CHECK_LIB(gen, compile)
|
|
fi
|
|
|
|
dnl
|
|
dnl Use --with-encryption to turn on encryption support
|
|
dnl
|
|
AC_ARG_ENABLE(encryption,
|
|
[ --enable-encryption enable encryption support],
|
|
[case "${enableval}" in
|
|
yes) encryption=true ;;
|
|
no) encryption=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for encryption option) ;;
|
|
esac],
|
|
[encryption=false])
|
|
if test "$encryption" = "true"; then
|
|
AC_DEFINE(ENCRYPTION)
|
|
fi
|
|
|
|
AC_CHECK_FUNC(gethostname, :, LIBOBJS="$LIBOBJS hostname.o")
|
|
|
|
# Check for options requesting client and server feature. If none are
|
|
# given and we have connect(), we want the full client & server arrangement.
|
|
AC_ARG_ENABLE(client,
|
|
[ --enable-client include code for running as a remote client (default)
|
|
--disable-client don't include remote client code],
|
|
[if test "$enable_client" = yes; then
|
|
AC_DEFINE(CLIENT_SUPPORT)
|
|
fi],
|
|
[if test "$ac_cv_search_connect" != no; then
|
|
AC_DEFINE(CLIENT_SUPPORT)
|
|
fi])
|
|
AC_ARG_ENABLE(server,
|
|
[ --enable-server include code for running as a server (default)
|
|
--disable-server don't include server code],
|
|
[if test "$enable_server" = yes; then
|
|
AC_DEFINE(SERVER_SUPPORT)
|
|
fi],
|
|
[if test "$ac_cv_search_connect" != no; then
|
|
AC_DEFINE(SERVER_SUPPORT)
|
|
enable_server=yes
|
|
fi])
|
|
|
|
dnl The auth server needs to be able to check passwords against passwd
|
|
dnl file entries, so we only #define AUTH_SERVER_SUPPORT if we can
|
|
dnl find the crypt function.
|
|
|
|
if test "$enable_server" = yes; then
|
|
AC_SEARCH_LIBS(crypt, crypt, AC_DEFINE(HAVE_CRYPT) AC_DEFINE(AUTH_SERVER_SUPPORT))
|
|
fi # enable_server
|
|
|
|
dnl For the moment we will assume that all systems which have
|
|
dnl the unixyness to run configure are unixy enough to do the
|
|
dnl PreservePermissions stuff. I have this sinking feeling that
|
|
dnl things won't be that simple, before long.
|
|
AC_DEFINE(PRESERVE_PERMISSIONS_SUPPORT)
|
|
|
|
dnl On cygwin32, we configure like a Unix system, but we use the
|
|
dnl Windows support code in lib/fncase.c to handle the case
|
|
dnl insensitive file system. We also need some support libraries. We
|
|
dnl do this at the end so that the new libraries are added at the end
|
|
dnl of LIBS.
|
|
AC_CACHE_CHECK(for cygwin32, ccvs_cv_sys_cygwin32,
|
|
[AC_TRY_COMPILE([], [return __CYGWIN32__;],
|
|
ccvs_cv_sys_cygwin32=yes, ccvs_cv_sys_cygwin32=no)])
|
|
if test $ccvs_cv_sys_cygwin32 = yes; then
|
|
LIBOBJS="$LIBOBJS fncase.o"
|
|
LIBS="$LIBS -ladvapi32"
|
|
|
|
dnl On Windows you can only change file times if you can write to
|
|
dnl the file. cygwin32 should really handle this for us, but as of
|
|
dnl January 1998 it doesn't.
|
|
AC_DEFINE(UTIME_EXPECTS_WRITABLE)
|
|
|
|
dnl On Windows we must use setmode to change between binary and text
|
|
dnl mode.
|
|
AC_DEFINE(USE_SETMODE_STDOUT)
|
|
AC_DEFINE(HAVE_SETMODE)
|
|
fi
|
|
|
|
test -f src/options.h && (
|
|
AC_MSG_WARN(saving ./src/options.h in ./src/options.h-SAVED)
|
|
AC_MSG_WARN(You may wish to check that local options have not been lost.)
|
|
AC_MSG_WARN(Do not re-run ./configure or ./config.status until you have....)
|
|
cp ./src/options.h ./src/options.h-SAVED
|
|
)
|
|
|
|
AC_OUTPUT(Makefile lib/Makefile src/Makefile zlib/Makefile diff/Makefile doc/Makefile \
|
|
man/Makefile tools/Makefile \
|
|
contrib/Makefile \
|
|
windows-NT/Makefile windows-NT/SCC/Makefile \
|
|
os2/Makefile emx/Makefile vms/Makefile \
|
|
stamp-h)
|