diff options
Diffstat (limited to 'contrib/cvs/configure.in')
-rw-r--r-- | contrib/cvs/configure.in | 1172 |
1 files changed, 1172 insertions, 0 deletions
diff --git a/contrib/cvs/configure.in b/contrib/cvs/configure.in new file mode 100644 index 0000000..8c83397 --- /dev/null +++ b/contrib/cvs/configure.in @@ -0,0 +1,1172 @@ +dnl configure.in for cvs +AC_INIT([Concurrent Versions System (CVS)],[1.11.22.1], + [bug-cvs@nongnu.org],[cvs]) +AC_CONFIG_SRCDIR(src/cvs.h) +AM_INIT_AUTOMAKE([gnu 1.7.9 dist-bzip2 no-define]) +AC_PREREQ(2.60) + +AC_PREFIX_PROGRAM(cvs) +AM_CONFIG_HEADER(config.h) +AM_MAINTAINER_MODE + +AC_PROG_CC +AM_PROG_CC_C_O + +dnl FIXME the next three calls should be avoided according to autoconf +dnl philosophy. for example, AC_CHECK_LIB should be used to look for crypt. +dnl +dnl These are here instead of later because they want to be called before +dnl anything that calls a C compiler. +AC_AIX +AC_MINIX + +# Find the posix library needed on INTERACTIVE UNIX (ISC) +dnl +dnl From the Autoconf 2.53 manual (AC_ISC_POSIX): +dnl +dnl For INTERACTIVE UNIX (ISC), add `-lcposix' to output variable +dnl `LIBS' if necessary for POSIX facilities. Call this after +dnl `AC_PROG_CC' and before any other macros that use POSIX +dnl interfaces. INTERACTIVE UNIX is no longer sold, and Sun says that +dnl they will drop support for it on 2006-07-23, so this macro is +dnl becoming obsolescent. +dnl +AC_SEARCH_LIBS([strerror], [cposix]) + +dnl +dnl Autoconf stopped setting $ISC sometime before 2.53 +dnl +dnl If this is still important, someone should come up with a generic test +dnl for whether _SYSV3 needs to be defined. Removed code below: +dnl +dnl if test "$ISC" = yes; then +dnl CFLAGS="$CFLAGS -D_SYSV3" +dnl # And I don't like this... In theory it should be found later if server is +dnl # enabled, but maybe something on INTERACTIVE UNIX (ISC) we didn't ask to +dnl # link with crypt tries? Anyhow, the autoconf manual says we can delete +dnl # this ISC stuff on or after 2006-07-23 when Sun discontinues support and +dnl # ISC becomes obsolescent, but I suppose that is probably a matter of +dnl # opinion. +dnl # +dnl # N.B. The reason for doing this is that some moron decided to put a stub +dnl # for crypt in libc that always returns NULL. Without this here, the later +dnl # check will find the stub instead of the real thing, resulting in a server +dnl # that can't process crypted passwords correctly. +dnl +dnl # again, if we have to try and reenable this for ISC, someone should come +dnl # up with a generic test that figures out whether crypt is good or not - +dnl # Is it always returning NULL? +dnl LIBS="-lcrypt $LIBS" +dnl fi +dnl +dnl FIXME - This has been broken for at least a few months anyhow, so I'm +dnl removing the crypt lib define above, but the correct fix would be to +dnl provide a CRYPT_WORKS macro or the like that gets called sometime after +dnl the AC_SEARCH_LIBS call that normally finds crypt, and if crypt doesn't +dnl work, the macro should be retried with LIBS="-lcrypt $LIBS" forced. +dnl + +AC_PROG_RANLIB +AC_PROG_YACC +AC_PROG_LN_S +AC_EXEEXT + +AC_PATH_PROG(PERL, perl, no) +AC_PATH_PROG(CSH, csh, no) +# for contrib/rcs2log.sh & src/cvsbug.in. +AC_PATH_PROG(MKTEMP, mktemp, mktemp) +if test x"$MKTEMP" = xmktemp; then + MKTEMP_SH_FUNCTION=$srcdir/mktemp.sh +else + MKTEMP_SH_FUNCTION=/dev/null +fi +AC_SUBST_FILE(MKTEMP_SH_FUNCTION) +# for src/cvsbug.in +AC_PATH_PROG(SENDMAIL, sendmail, no, [$PATH:/usr/sbin:/usr/lib]) +# For diff/util.c +AC_PATH_PROG(PR, pr, no) +if test x"$PR" != xno; then + AC_DEFINE_UNQUOTED([PR_PROGRAM], ["$PR"], [Path to the pr utility]) +fi + +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +dnl FIXME I pulled this default list from sanity.sh. Perhaps these lists +dnl can be stored in one location? +dnl +dnl Yeah, put the value in a variable add it to the substitution list +dnl then have configure create sanity.sh from sanity.sh.in... +glocs="$PATH:/usr/local/bin:/usr/contrib/bin:/usr/gnu/bin:/local/bin:/local/gnu/bin:/gnu/bin" +AC_PATH_PROGS(ROFF, groff roff, $missing_dir/missing roff, $glocs) +AC_PATH_PROG(PS2PDF, ps2pdf, $missing_dir/missing ps2pdf) +AC_PATH_PROG(TEXI2DVI, texi2dvi, $missing_dir/missing texi2dvi) + +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 + +# BSD's logo is a devil for a reason, hey? +AC_CACHE_CHECK(for BSD VPATH bug in make, ccvs_cv_bsd_make_vpath_bug, +[if test ! -d ac_test_dir ; then + AC_TRY_COMMAND([mkdir ac_test_dir]) +fi +cat >conftestmake <<EOF +VPATH = ac_test_dir +ac_test_target: ac_test_dep + echo BSD VPATH bug present >&2 +ac_test_dep: ac_test_dep_dep +EOF +touch ac_test_dir/ac_test_dep_dep +touch ac_test_dir/ac_test_dep +touch ac_test_target +# Don't know why, but the following test doesn't work under FreeBSD 4.2 +# without this sleep command +sleep 1 +if AC_TRY_COMMAND([make -f conftestmake 2>&1 >/dev/null |grep ^BSD\ VPATH\ bug\ present\$ >/dev/null]) ; then + ccvs_cv_bsd_make_vpath_bug=yes +else + ccvs_cv_bsd_make_vpath_bug=no +fi +AC_TRY_COMMAND([rm -rf ac_test_dir ac_test_target conftestmake])]) +# We also don't need to worry about the bug when $srcdir = $builddir +AM_CONDITIONAL(MAKE_TARGETS_IN_VPATH, \ + test $ccvs_cv_bsd_make_vpath_bug = no \ + || test $srcdir = .) + +AC_HEADER_DIRENT +AC_HEADER_STDC +AC_HEADER_SYS_WAIT +AC_CHECK_HEADERS(\ + errno.h \ + direct.h \ + fcntl.h \ + fnmatch.h \ + io.h \ + limits.h \ + memory.h \ + ndbm.h \ + string.h \ + syslog.h \ + sys/bsdtypes.h \ + sys/file.h \ + sys/param.h \ + sys/resource.h \ + sys/select.h \ + sys/time.h \ + sys/timeb.h \ + unistd.h \ + utime.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_CHECK_MEMBERS([struct stat.st_blksize]) +AC_CHECK_MEMBERS([struct stat.st_rdev]) + +AC_REPLACE_FUNCS(\ + dup2 \ + ftruncate \ + gethostname \ + memmove \ + mkdir \ + rename \ + strerror \ + strstr \ + strtoul\ + valloc \ + waitpid \ +) + + + +dnl +dnl Begin GNULIB stuff. +dnl +gl_XSIZE + +dnl We always want to use the GNULIB getpass, so define its name to something +dnl that won't conflict with system declarations. +AC_DEFINE([getpass], [cvs_getpass], + [We want to always use the GNULIB version of getpass which we have in lib, + so define getpass to something that won't conflict with any existing system + declarations.]) + +dnl +dnl End GNULIB stuff. +dnl + + + +AC_CHECK_FUNCS(\ + fchdir \ + fchmod \ + fsync \ + ftime \ + geteuid \ + getgroups \ + getopt \ + getpagesize \ + gettimeofday \ + initgroups \ + login \ + logout \ + mknod \ + mkstemp \ + mktemp \ + putenv \ + readlink \ + regcomp \ + regerror \ + regexec \ + regfree \ + sigaction \ + sigblock \ + sigprocmask \ + sigsetmask \ + sigvec \ + tempnam \ + timezone \ + tzset \ + vprintf \ + wait3 \ +) +# we only need one of the following +AC_CHECK_FUNCS([\ + nanosleep \ + usleep \ + select \ +], [break]) + +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, 1, +[Define if you have strchr (always for CVS).]) +AC_DEFINE(HAVE_MEMCHR, 1, +[Define if you have memchr (always for CVS).]) + +dnl +dnl Force lib/regex.c to use malloc instead of messing around with alloca +dnl and define the old re_comp routines that we use. +dnl +AC_DEFINE(REGEX_MALLOC, 1, +[Define to force lib/regex.c to use malloc instead of alloca.]) +AC_DEFINE(_REGEX_RE_COMP, 1, +[Define to force lib/regex.c to define re_comp et al.]) +dnl +dnl AC_FUNC_FORK([]) 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_FORK([]). +dnl +AC_FUNC_FORK([]) +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, 1, +[Define if you have the getspnam function.])) + +AC_FUNC_UTIME_NULL +AC_SYS_LONG_FILE_NAMES + +AC_FUNC_FNMATCH +if test "$ac_cv_func_fnmatch_works" = no; then + AC_LIBOBJ(fnmatch) + AC_CONFIG_LINKS(lib/fnmatch.h:lib/fnmatch.h.in) + AC_LIBSOURCE(fnmatch.h.in) +fi + +# Try to find connect and gethostbyname. +AC_CHECK_LIB(nsl, main) +AC_SEARCH_LIBS(connect, xnet socket inet, + AC_DEFINE(HAVE_CONNECT, 1, +[Define if you have the connect function.])) +dnl no need to search nsl for gethostbyname here since we should have +dnl just added libnsl above if we found it. +AC_SEARCH_LIBS(gethostbyname, netinet) + + +dnl +dnl begin --with-* +dnl + +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], + AC_HELP_STRING( + [--with-krb4], + [Kerberos 4 directory (default /usr/kerberos)]), + [KRB4=$with_krb4], +)dnl +AC_MSG_CHECKING([for KRB4 in $KRB4]) +AC_MSG_RESULT([]) +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=]) + AC_CHECK_FUNC(krb_recvauth,[krb_lib=yes krb_libdir=]) + fi + if test -n "$krb_lib"; then + AC_DEFINE([HAVE_KERBEROS], 1, + [Define if you have MIT Kerberos version 4 available.]) + test -n "${krb_libdir}" && LIBS="${LIBS} -L${krb_libdir}" + # 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"]) + AC_CHECK_LIB(krb,krb_recvauth) + AC_CHECK_LIB(krb4,krb_recvauth) + 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 WITH_GSSAPI is external +dnl +dnl TODO - I tried to put these in alphabetical order, but ACX_WITH_GSSAPI +dnl fails unless called after the KRB4 stuff. I don't know why. +dnl +ACX_WITH_GSSAPI + + +dnl +dnl begin --with-editor +dnl +dnl Set the default editor to use for log messages +dnl + +AC_ARG_VAR( + [EDITOR], + [The text editor CVS will use by default for log messages.]) + +# Let the confiscator request a specific editor +AC_ARG_WITH( + [editor], + AC_HELP_STRING( + [--with-editor], + [The default text editor CVS should use for log messages + (default autoselects)]), , + [with_editor=yes]) + +# If --with-editor was supplied with an argument, let it override $EDITOR from +# the user's environment. We need to unset EDITOR here because AC_CHECK_PROGS +# will let the value of EDITOR ride when it is set rather than searching. We +# ignore the --without-editor case since it will be caught below. +if test -n "$EDITOR" && test yes != $with_editor; then + AS_UNSET([EDITOR]) +fi + +# Set the default when --with-editor wasn't supplied or when it was supplied +# without an argument. +if test yes = $with_editor; then + with_editor="vim vi emacs nano pico edit" +fi + +if echo $with_editor |grep ^/ >/dev/null; then + # If $with_editor is an absolute path, issue a warning if the executable + # doesn't exist or isn't usable, but then trust the user and use it + # regardless + EDITOR=$with_editor + AC_MSG_CHECKING([for an editor]) + AC_MSG_RESULT([$EDITOR]) + if ! test -f $with_editor \ + || ! test -x $with_editor; then + # warn the user that they may encounter problems + AC_MSG_WARN([\`$with_editor' is not a path to an executable file]) + fi +elif test no != "${with_editor}"; then + # Search for an editor + AC_CHECK_PROGS([EDITOR], [$with_editor], [no]) + if test no = "${EDITOR}"; then + AC_MSG_ERROR([ + Failed to find a text file editor. CVS cannot be compiled + without a default log message editor. Searched for + \`$with_editor'. Try \`configure --with-editor'.]) + fi +else + AC_MSG_ERROR([ + CVS cannot be compiled without a default log message editor. + Try \`configure --with-editor'.]) +fi + +dnl FIXME - Using --without-editor will probably break a compile at +dnl the moment, but maybe it is reasonable for someone to want to +dnl compile a CVS executable that refuses to run if no $EDITOR, +dnl $CVS_EDITOR, or -e option is specified? Making a preliminary +dnl design decision in this direction, subject to discussion. +dnl +dnl Still don't know if the above would be useful, but we shouldn't +dnl be able to get here any longer without $EDITOR defined due to the +dnl error checking above. +AC_DEFINE_UNQUOTED( + [EDITOR_DFLT], ["$EDITOR"], + [The default editor to use, if one does not specify the "-e" option + to cvs, or does not have an EDITOR environment variable. If this + is not set to an absolute path to an executable, use the shell to + find where the editor actually is. This allows sites with + /usr/bin/vi or /usr/ucb/vi to work equally well (assuming that their + PATH is reasonable).]) + +dnl +dnl done finding an editor +dnl +dnl end --with-editor +dnl + +dnl +dnl begin --with-ssh +dnl + +# What remote shell transport should the :extssh: client cvs default to using? +AC_ARG_WITH( + [ssh], + AC_HELP_STRING( + [--with-ssh], + [The default remote shell CVS will use for :extssh: transport + (default autodetects)]), , + [with_ssh="ssh lshc ssh2"]) + +if test no = "$with_ssh"; then + AC_MSG_WARN([Failed to find usable remote shell. Using 'ssh'.]) + with_ssh=ssh +elif test yes = "$with_ssh"; then + # Make --with-ssh mean the same thing as --with-ssh=ssh + with_ssh=ssh +fi + +if echo $with_ssh |grep ^/ >/dev/null; then + # If $with_ssh is an absolute path, issue a warning if the executable + # doesn't exist or isn't usable, but then trust the user and use it + # regardless + with_default_ssh=$with_ssh + AC_MSG_CHECKING([for a remote shell]) + if ! test -f $with_ssh \ + || ! test -x $with_ssh; then + # warn the user that they may encounter problems + AC_MSG_WARN([$with_ssh is not a path to an executable file]) + fi +else + # Search for a remote shell + AC_CHECK_PROGS([with_default_ssh], [$with_ssh], "ssh") +fi + +AC_DEFINE_UNQUOTED( + [SSH_DFLT], ["$with_default_ssh"], + [The default remote shell to use, if one does not specify the + CVS_SSH environment variable.]) +dnl done with finding a default CVS_SSH value +dnl +dnl end --with-ssh +dnl + + +dnl +dnl begin --with-rsh +dnl +dnl Many sites no longer desire the use of "rsh" as the default +dnl remote shell program. They typically favor "ssh" as the default + +# What remote shell transport should our client cvs default to using? +AC_ARG_WITH( + [rsh], + AC_HELP_STRING( + [--with-rsh], + [The default remote shell CVS will use for :ext: transport + (default autodetects)]), , + dnl `remsh' is only useful on HP-UX, where `rsh' is the `restricted shell' + dnl and `remsh' is the remote shell, but look for it first since it + dnl probably won't exist on any platform where it shouldn't be preferred + dnl to `rsh'. + [with_rsh="remsh rsh ssh lshc ssh2"]) + +if test no = "$with_rsh"; then + AC_MSG_WARN([Failed to find usable remote shell. Using 'rsh'.]) + with_rsh=rsh +elif test yes = "$with_rsh"; then + # Make --with-rsh mean the same thing as --with-rsh=rsh + with_rsh=rsh +fi + +if echo $with_rsh |grep ^/ >/dev/null; then + # If $with_rsh is an absolute path, issue a warning if the executable + # doesn't exist or isn't usable, but then trust the user and use it + # regardless + with_default_rsh=$with_rsh + AC_MSG_CHECKING([for a remote shell]) + if ! test -f $with_rsh \ + || ! test -x $with_rsh; then + # warn the user that they may encounter problems + AC_MSG_WARN([$with_rsh is not a path to an executable file]) + fi +else + # Search for a remote shell + AC_CHECK_PROGS([with_default_rsh], [$with_rsh], "rsh") +fi + +AC_DEFINE_UNQUOTED( + [RSH_DFLT], ["$with_default_rsh"], + [The default remote shell to use, if one does not specify the + CVS_RSH environment variable.]) +dnl done with finding a default CVS_RSH value +dnl +dnl end --with-rsh +dnl + + +dnl +dnl Find a temporary directory +dnl +AC_ARG_WITH( + [tmpdir], + AC_HELP_STRING( + [--with-tmpdir], + [The temporary directory CVS should use as a default + (default autoselects)])) + +AC_MSG_CHECKING([for temporary directory]) +if test -z "$with_tmpdir" || test yes = "$with_tmpdir"; then + for with_tmpdir in /tmp /var/tmp no; do + if test -d "$with_tmpdir" && test -x "$with_tmpdir" \ + && test -w "$with_tmpdir" && test -r "$with_tmpdir"; then + break + fi + done + if test no = "$with_tmpdir"; then + AC_MSG_WARN([Failed to find usable temporary directory. Using '/tmp'.]) + with_tmpdir=/tmp + fi + AC_MSG_RESULT([$with_tmpdir]) +elif ! echo "$with_tmpdir" |grep '^[[\\/]]'; then + AC_MSG_RESULT([$with_tmpdir]) + AC_MSG_ERROR([--with-tmpdir requires an absolute path.]) +elif ! test -d "$with_tmpdir" || ! test -x "$with_tmpdir" \ + || ! test -w "$with_tmpdir" || ! test -r "$with_tmpdir"; then + AC_MSG_RESULT([$with_tmpdir]) + AC_MSG_WARN( + [User supplied temporary directory ('$with_tmpdir') does not + exist or lacks sufficient permissions for read/write.]) +fi + +AC_DEFINE_UNQUOTED( + [TMPDIR_DFLT], ["$with_tmpdir"], + [Directory used for storing temporary files, if not overridden by + environment variables or the -T global option. There should be little + need to change this (-T is a better mechanism if you need to use a + different directory for temporary files).]) + +dnl +dnl done finding tmpdir +dnl + + +dnl +dnl Get default umask +dnl + +AC_ARG_WITH( + [umask], + AC_HELP_STRING( + [--with-umask], + [Set the umask CVS will use by default in the repository (default 002)])) + +if test -z "$with_umask" || test yes = "$with_umask"; then + with_umask=002 +elif test no = "$with_umask"; then + with_umask=000 +fi + +AC_DEFINE_UNQUOTED( + [UMASK_DFLT], [$with_umask], + [The default umask to use when creating or otherwise setting file or + directory permissions in the repository. Must be a value in the + range of 0 through 0777. For example, a value of 002 allows group + rwx access and world rx access; a value of 007 allows group rwx + access but no world access. This value is overridden by the value + of the CVSUMASK environment variable, which is interpreted as an + octal number.]) + +dnl +dnl Done setting default umask +dnl + +dnl +dnl Set CVS Administrator Group +dnl +AC_ARG_WITH( + [cvs-admin-group], + AC_HELP_STRING( + [--with-cvs-admin-group=GROUP], + [The CVS admin command is restricted to the members of this group. + If this group does not exist, all users are allowed to run CVS admin. + To disable the CVS admin command for all users, create an empty group + by specifying the --with-cvs-admin-group= option. To disable access + control for CVS admin, run configure with the --without-cvs-admin-group + option. (default 'cvsadmin')]), , + [with_cvs_admin_group=cvsadmin]) + +if test yes = "$with_cvs_admin_group"; then + with_cvs_admin_group=cvsadmin +fi +if test no != "$with_cvs_admin_group"; then + dnl FIXME We should warn if the group doesn't exist + AC_DEFINE_UNQUOTED( + [CVS_ADMIN_GROUP], ["$with_cvs_admin_group"], + [The CVS admin command is restricted to the members of the group + CVS_ADMIN_GROUP. If this group does not exist, all users are + allowed to run CVS admin. To disable the CVS admin command for + all users, create an empty CVS_ADMIN_GROUP by running configure + with the --with-cvs-admin-group= option. To disable access control + for CVS admin, run configure with the --without-cvs-admin-group + option in order to comment out the define below.]) +fi + +dnl +dnl Done setting CVS Administrator Group +dnl + +dnl +dnl end --with-* +dnl + + +dnl +dnl Set the NDBM library to use. +dnl +dnl XXX - FIXME - FIXME - FIXME - XXX +dnl +dnl This is very bad. It should really autodetect an appropriate NDBM library +dnl and, if it doesn't find one, decide to use MY_NDBM. I'm am defining +dnl this here since this is no worse than it worked when it was in options.h +dnl and I am cleaning out options.h so that the Windows version of CVS will +dnl compile properly for the next release. +dnl +dnl That's why this option is in the --with-* section rather than the +dnl --enable-* section. +dnl +dnl XXX - FIXME - FIXME - FIXME - XXX +dnl +AC_ARG_ENABLE( + [cvs-ndbm], + AC_HELP_STRING( + [--enable-cvs-ndbm], + [Use the NDBM library distributed with CVS rather than attempting to use + a system NDBM library. Disabling this may not work. (default)]), , + [enable_cvs_ndbm=yes]) +if test no != "$enable_cvs_ndbm"; then + AC_DEFINE( + [MY_NDBM], [1], + [By default, CVS stores its modules and other such items in flat + text files (MY_NDBM enables this). Turning off MY_NDBM causes CVS + to look for a system-supplied ndbm database library and use it + instead. That may speed things up, but the default setting + generally works fine too.]) +fi + +dnl +dnl Done selecting NDBM library. +dnl + + +dnl +dnl begin --enables +dnl + + +dnl Allow mmap for the buffer routine replacements to be disabled in +dnl case of problems. + +AC_ARG_ENABLE( + [mmap], + AC_HELP_STRING( + [--disable-mmap], + [Don't mmap RCS files])) + +if test no != "$enable_mmap"; then + AC_FUNC_MMAP +fi + +# 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], + AC_HELP_STRING( + [--enable-client], + [Include code for running as a remote client (default)]), , + [if test "$ac_cv_search_connect" != no; then + enable_client=yes + fi]) +if test no != "$enable_client"; then + AC_DEFINE( + [CLIENT_SUPPORT], [1], + [Define if you want CVS to be able to be a remote repository client.]) +fi + +AC_ARG_ENABLE( + [password-authenticated-client], + AC_HELP_STRING( + [--enable-password-authenticated-client], + [Enable pserver as a remote access method in the CVS client + (default)])) + +if test no != "$enable_password_authenticated_client"; then + if test no != "$enable_client"; then + AC_DEFINE( + [AUTH_CLIENT_SUPPORT], [1], + [Enable AUTH_CLIENT_SUPPORT to enable pserver as a remote access + method in the CVS client (default)]) + else + AC_MSG_WARN( + [--enable-password-authenticated-client is meaningless with + the CVS client disabled (--disable-client)]) + fi +fi + + +dnl +dnl Give the confiscator control over whether the server code is compiled +dnl +AC_ARG_ENABLE( + [server], + AC_HELP_STRING( + [--enable-server], + [Include code for running as a server (default)]), , + [if test "$ac_cv_search_connect" != no; then + enable_server=yes + fi]) + +if test no != "$enable_server"; then + AC_DEFINE( + [SERVER_SUPPORT], [1], + [Define if you want CVS to be able to serve repositories to remote + clients.]) + + dnl + 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. + dnl + AC_SEARCH_LIBS( + [crypt], [crypt], + [AC_DEFINE( + [HAVE_CRYPT], [1], + [Define if you have the crypt function.]) + AC_DEFINE( + [AUTH_SERVER_SUPPORT], [1], + [Define if you want to use the password authenticated server.])dnl + ])dnl AC_SEARCH_LIBS + + dnl + dnl Allow the configurer to enable server flowcontrol. Read the help + dnl strings below for a full explanation. + dnl + AC_ARG_ENABLE( + [server-flow-control], + AC_HELP_STRING( + [--enable-server-flow-control], + [If you are working with a large remote repository and a 'cvs + checkout' is swamping your network and memory, define these to + enable flow control. You may optionally pass a low water mark + in bytes and a high water mark in bytes, separated by commas. + (default is enabled 1M,2M)]), + [if test yes = $enable_server_flow_control; then + enable_server_flow_control=1M,2M + fi], + [enable_server_flow_control=1M,2M]) + if test no != $enable_server_flow_control; then + ccvs_lwm=`expr "$enable_server_flow_control" : '\(.*\),'` + ccvs_hwm=`expr "$enable_server_flow_control" : '.*,\(.*\)'` + ccvs_lwm_E=`expr "$ccvs_lwm" : '[[0-9]][[0-9]]*\(.*\)'` + ccvs_lwm=`expr "$ccvs_lwm" : '\([[0-9]][[0-9]]*\)'` + test "" != "$ccvs_lwm" || ccvs_lwm_E="?" + case $ccvs_lwm_E in + G) ccvs_lwm="$ccvs_lwm * 1024 * 1024 * 1024";; + M) ccvs_lwm="$ccvs_lwm * 1024 * 1024";; + k) ccvs_lwm="$ccvs_lwm * 1024";; + b | '') ;; + *) AC_MSG_ERROR([Can't parse argument to --enable-server-flow-control + ('$enable_server_flow_control') as <lwm>,<hwm>]) + esac + ccvs_hwm_E=`expr "$ccvs_hwm" : '[[0-9]][[0-9]]*\(.*\)'` + ccvs_hwm=`expr "$ccvs_hwm" : '\([[0-9]][[0-9]]*\).*'` + test "" != "$ccvs_hwm" || ccvs_hwm_E="?" + case $ccvs_hwm_E in + G) ccvs_hwm="$ccvs_hwm * 1024 * 1024 * 1024";; + M) ccvs_hwm="$ccvs_hwm * 1024 * 1024";; + k) ccvs_hwm="$ccvs_hwm * 1024";; + b | '') ccvs_hwm="$ccvs_hwm";; + *) AC_MSG_ERROR([Can't parse argument to --enable-server-flow-control + ('$enable_server_flow_control') as <lwm>,<hwm>]) + esac + + AC_DEFINE( + [SERVER_FLOWCONTROL], [1], + [If you are working with a large remote repository and a 'cvs + checkout' is swamping your network and memory, define these to + enable flow control. You will end up with even less probability of + a consistent checkout (see Concurrency in cvs.texinfo), but CVS + doesn't try to guarantee that anyway. The master server process + will monitor how far it is getting behind, if it reaches the high + water mark, it will signal the child process to stop generating + data when convenient (ie: no locks are held, currently at the + beginning of a new directory). Once the buffer has drained + sufficiently to reach the low water mark, it will be signalled to + start again.]) + AC_DEFINE_UNQUOTED( + [SERVER_LO_WATER], [($ccvs_lwm)], + [The low water mark in bytes for server flow control. Required if + SERVER_FLOWCONTROL is defined, and useless otherwise.]) + AC_DEFINE_UNQUOTED( + [SERVER_HI_WATER], [($ccvs_hwm)], + [The high water mark in bytes for server flow control. Required if + SERVER_FLOWCONTROL is defined, and useless otherwise.]) + fi # enable_server_flow_control +fi # enable_server + + +dnl +dnl begin --enable-case-sensitivity +dnl + +AC_ARG_ENABLE( + [case-sensitivity], + AC_HELP_STRING( + [--enable-case-sensitivity], + [Force CVS to expect a case sensitive file system. Enabling this on a case + insensitive system should have little effect on the server or client + operation, though client users may ocassionally be suprised that the CVS + server appears to be case sensitive. Disabling this for a case sensitive + server disables server support for case insensitive clients, which can + confuse all users of case insensitive clients contacting the server. + Disabling this for a case sensitive client will cause the client to ask + servers to behave case insensitively, which could cause confusion for + users, but also probably no real harm. (default autoselects based on the + case sensitivity of the file system containing the current working + directory)]), + [case "$enable_case_sensitivity" in + yes | no | auto) ;; + *) + AC_MSG_ERROR([Unrecognized argument to --enable-case-sensitivity: \`$enable_case_sensitivity'. Acceptable values are \`yes', \`no', and \`auto'.]) + ;; + esac], + [enable_case_sensitivity=auto]) + +acx_forced=' (forced)' +AC_MSG_CHECKING([for a case sensitive file system]) +if test $enable_case_sensitivity = auto; then + dnl + dnl Check for a case insensitive filesystem, like Mac OS X and Windows have. + dnl + AC_CACHE_VAL([acx_cv_case_sensitive], + [ rm -f ac_TEST_filenames_CASE_sensitive + echo foo >ac_test_filenames_case_sensitive + if test -f ac_TEST_filenames_CASE_sensitive; then + acx_cv_case_sensitive=no + else + acx_cv_case_sensitive=yes + fi + rm ac_test_filenames_case_sensitive + ]) + enable_case_sensitivity=$acx_cv_case_sensitive + acx_forced= +fi +AC_MSG_RESULT([$enable_case_sensitivity$acx_forced]) +if test $enable_case_sensitivity = no; then + AC_DEFINE([FILENAMES_CASE_INSENSITIVE], [1], + [Define if this executable will be running on case insensitive + file systems. In the client case, this means that it will request + that the server pretend to be case insensitive if it isn't + already.]) + dnl Compile fncase.c (containing fncase() & fncmp()) to handle file name + dnl comparisons on case insensitive filesystems. + AC_LIBOBJ(fncase) +fi + +dnl +dnl end --enable-case-sensitivity +dnl + + +dnl +dnl begin --enable-encryption +dnl + +dnl +dnl Use --enable-encryption to turn on encryption support, but ignore this +dnl option unless either client or server is enabled. +dnl +AC_ARG_ENABLE( + [encryption], + AC_HELP_STRING( + [--enable-encryption], + [Enable encryption support (disabled by default)]), , + [enable_encryption=no]) +if test "$enable_encryption" = yes; then + if test no != "$with_client" || test no != "$with_server"; then + AC_DEFINE( + [ENCRYPTION], [1], + [Define to enable encryption support.]) + else + AC_MSG_WARN( + [--enable-encryption is meaningless when neither the CVS client + nor the CVS server is enabled (--disable-client and --disable-server).]) + fi +fi + +dnl +dnl end --enable-encryption +dnl + + +dnl +dnl begin --enable-force-editor +dnl + +AC_ARG_ENABLE( + [force-editor], + AC_HELP_STRING( + [--enable-force-editor], + [When committing or importing files, you must enter a log message. + Normally, you can do this either via the -m flag on the command + line, the -F flag on the command line, or an editor will be started + for you. If you like to use logging templates (the rcsinfo file + within the $CVSROOT/CVSROOT directory), you might want to force + people to use the editor even if they specify a message with -m or + -F. --enable-force-editor will cause the -m or -F message to be + appended to the temp file when the editor is started. (disabled + by default)]), , + [enable_force_editor=no]) + +if test yes = "$enable_force_editor"; then + AC_DEFINE( + [FORCE_USE_EDITOR], [1], + [When committing or importing files, you must enter a log message. + Normally, you can do this either via the -m flag on the command + line, the -F flag on the command line, or an editor will be started + for you. If you like to use logging templates (the rcsinfo file + within the $CVSROOT/CVSROOT directory), you might want to force + people to use the editor even if they specify a message with -m or + -F. Enabling FORCE_USE_EDITOR will cause the -m or -F message to be + appended to the temp file when the editor is started.]) +fi + +dnl +dnl end --enable-force-editor +dnl + + +dnl +dnl begin --enable-rootcommit +dnl + +dnl +dnl I don't like this here, but I don't really like options.h, either. +dnl Besides, this is causing some problems currently when compiling under +dnl Windows and moving it here should avoid the issue (the wrong options.h +dnl is being used). +dnl +dnl I don't like making this a runtime option either. I think I just don't +dnl like making it easy to get to, but putting it here goes along with the +dnl Autoconf ideal. +dnl +AC_ARG_ENABLE( + [rootcommit], + AC_HELP_STRING( + [--enable-rootcommit], + [Allow the root user to commit files (disabled by default)]), , + [enable_rootcommit=no]) +if test "$enable_rootcommit" = no; then + AC_DEFINE( + [CVS_BADROOT], [1], + [When committing a permanent change, CVS and RCS make a log entry of + who committed the change. If you are committing the change logged + in as "root" (not under "su" or other root-priv giving program), + CVS/RCS cannot determine who is actually making the change. + + As such, by default, CVS prohibits changes committed by users + logged in as "root". You can disable checking by passing the + "--enable-rootcommit" option to configure or by commenting out the + lines below.]) +fi + +dnl +dnl end --enable-rootcommit +dnl + + + +dnl +dnl end --enable-* +dnl + + + +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. +dnl AC_DEFINE(PRESERVE_PERMISSIONS_SUPPORT, 1, +dnl [Define if this system supports chown(), link(), and friends.]) + +dnl On cygwin32, we configure like a Unix system, but we need some support +dnl libraries. We do this at the end so that the new libraries are added at +dnl the end of LIBS. +dnl +dnl FIXME: We should be trying to meet the autoconf ideal of checking for +dnl the properties of the system rather than the name of the os here. In other +dnl words, we should check the case sensitivty of the system and then for +dnl the support functions we are using and which library we find them in. +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 + 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, 1, +[Define if utime requires write access to the file (true on Windows, +but not Unix).]) + + dnl On Windows we must use setmode to change between binary and text + dnl mode. This probably doesn't really require two macro definitions + AC_DEFINE(USE_SETMODE_STDOUT, 1, +[Define if setmode is required when writing binary data to stdout.]) + AC_DEFINE(HAVE_SETMODE, 1, +[Define if the diff library should use setmode for binary files.]) +fi + +dnl associate the setting of the execute bit with the individual scripts +AC_CONFIG_FILES(contrib/check_cvs, [chmod +x contrib/check_cvs]) +AC_CONFIG_FILES(contrib/clmerge, [chmod +x contrib/clmerge]) +AC_CONFIG_FILES(contrib/cln_hist, [chmod +x contrib/cln_hist]) +AC_CONFIG_FILES(contrib/commit_prep, [chmod +x contrib/commit_prep]) +AC_CONFIG_FILES(contrib/cvs_acls, [chmod +x contrib/cvs_acls]) +AC_CONFIG_FILES(contrib/log, [chmod +x contrib/log]) +AC_CONFIG_FILES(contrib/log_accum, [chmod +x contrib/log_accum]) +AC_CONFIG_FILES(contrib/mfpipe, [chmod +x contrib/mfpipe]) +AC_CONFIG_FILES(contrib/pvcs2rcs, [chmod +x contrib/pvcs2rcs]) +AC_CONFIG_FILES(contrib/rcs2log:contrib/rcs2log.sh, [chmod +x contrib/rcs2log]) +AC_CONFIG_FILES(contrib/rcslock, [chmod +x contrib/rcslock]) +AC_CONFIG_FILES(contrib/sccs2rcs, [chmod +x contrib/sccs2rcs]) +AC_CONFIG_FILES(doc/mkman:doc/mkman.pl, [chmod +x doc/mkman]) +AC_CONFIG_FILES(src/cvsbug, [chmod +x src/cvsbug]) +AC_CONFIG_FILES(windows-NT/fix-msvc-mak:windows-NT/fix-msvc-mak-head.pl:windows-NT/fix-msvc-mak.pl, + [chmod +x windows-NT/fix-msvc-mak]) + +dnl the bulk files +AC_CONFIG_FILES([Makefile \ + contrib/Makefile \ + cvs.spec \ + diff/Makefile \ + doc/Makefile \ + emx/Makefile \ + lib/Makefile \ + man/Makefile \ + os2/Makefile \ + src/Makefile \ + tools/Makefile \ + vms/Makefile \ + windows-NT/Makefile \ + windows-NT/SCC/Makefile \ + zlib/Makefile]) + +dnl and we're done +AC_OUTPUT + + + +# Report the state of this version of CVS if this is from dev. +m4_bmatch(m4_defn([AC_PACKAGE_VERSION]), [[0-9]*\.[0-9]*\.[0-9]*\.[0-9]], +[ cat <<EOF + +You are about to use an unreleased version of CVS. Be sure to +read the relevant mailing lists, most importantly <info-cvs@nongnu.org>. + +Below you will find information on the status of this version of CVS. + + +EOF + sed -n '/^\* Status/,$p' $srcdir/BUGS +]) |