it’s not nice to spew into syslog just for calling commands
[alioth/cvs.git] / configure.in
1 dnl $MirOS: src/gnu/usr.bin/cvs/configure.in,v 1.25 2016/11/09 03:04:12 tg Exp $
2 dnl
3 dnl configure.in for cvs
4
5 AC_COPYRIGHT(
6 [Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
7               1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
8               Free Software Foundation, Inc.
9 Copyright (c) 2003, 2004, 2005, 2010, 2011, 2012, 2013, 2015, 2016
10               mirabilos <m@mirbsd.org>
11
12 This program is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation; either version 2, or (at your option)
15 any later version.
16
17 This program is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 GNU General Public License for more details.])
21
22 AC_INIT([Concurrent Versions System (CVS)],[1.12.13-MirOS-0AB7.6],
23         [miros-discuss@mirbsd.org],[cvs])
24 AC_CONFIG_SRCDIR(src/cvs.h)
25 AM_INIT_AUTOMAKE([gnu 1.9.2 dist-bzip2 no-define])
26 AC_PREREQ(2.59)
27
28 AC_PREFIX_PROGRAM(cvs)
29 AM_CONFIG_HEADER(config.h)
30 AM_MAINTAINER_MODE
31
32 dnl This needs to be called to enable certain system extensions before calling
33 dnl a C compiler.
34 gl_EARLY
35
36 AC_PROG_CC
37
38 AC_PROG_RANLIB
39 AC_PROG_LN_S
40 AC_SYS_LARGEFILE
41 AC_EXEEXT
42
43 AC_PATH_PROG(PERL, perl, no)
44 AC_PATH_PROG(CSH, csh, no)
45 # for contrib/rcs2log.sh & src/cvsbug.in.
46 AC_PATH_PROG(MKTEMP, mktemp, mktemp)
47 if test x"$MKTEMP" = xmktemp; then
48         MKTEMP_SH_FUNCTION=$srcdir/mktemp.sh
49 else
50         MKTEMP_SH_FUNCTION=/dev/null
51 fi
52 AC_SUBST_FILE(MKTEMP_SH_FUNCTION)
53 # for src/cvsbug.in
54 AC_PATH_PROG(SENDMAIL, sendmail, no, [$PATH:/usr/sbin:/usr/lib])
55 # For diff/util.c
56 AC_PATH_PROG(PR, pr, no)
57 if test x"$PR" != xno; then
58         AC_DEFINE_UNQUOTED([PR_PROGRAM], ["$PR"], [Path to the pr utility])
59 fi
60
61 dnl FIXME This is truly gross.
62 missing_dir=`cd $ac_aux_dir && pwd`
63 dnl FIXME I pulled this default list from sanity.sh.  Perhaps these lists
64 dnl can be stored in one location?
65 dnl
66 dnl Yeah, put the value in a variable add it to the substitution list
67 dnl then have configure create sanity.sh from sanity.sh.in...
68 glocs="$PATH:/usr/local/bin:/usr/contrib/bin:/usr/gnu/bin:/local/bin:/local/gnu/bin:/gnu/bin"
69 AC_PATH_PROGS(ROFF, nroff gnroff groff roff, $missing_dir/missing roff, $glocs)
70 AC_PATH_PROG(PS2PDF, ps2pdf, $missing_dir/missing ps2pdf)
71 AC_PATH_PROG(TEXI2DVI, texi2dvi, $missing_dir/missing texi2dvi)
72
73 AC_SYS_INTERPRETER
74 if test X"$ac_cv_sys_interpreter" != X"yes" ; then
75   # silly trick to avoid problems in AC macros...
76   ac_msg='perl scripts using #! may not be invoked properly'
77   AC_MSG_WARN($ac_msg)
78 fi
79
80 # BSD's logo is a devil for a reason, hey?
81 AC_CACHE_CHECK(for BSD VPATH bug in make, ccvs_cv_bsd_make_vpath_bug,
82 [if test ! -d ac_test_dir ; then
83         AC_TRY_COMMAND([mkdir ac_test_dir])
84 fi
85 cat >conftestmake <<EOF
86 VPATH = ac_test_dir
87 ac_test_target: ac_test_dep
88         echo BSD VPATH bug present >&2
89 ac_test_dep: ac_test_dep_dep
90 EOF
91 touch ac_test_dir/ac_test_dep_dep
92 touch ac_test_dir/ac_test_dep
93 touch ac_test_target
94 # Don't know why, but the following test doesn't work under FreeBSD 4.2
95 # without this sleep command
96 sleep 1
97 if AC_TRY_COMMAND([make -f conftestmake 2>&1 >/dev/null |grep ^BSD\ VPATH\ bug\ present\$ >/dev/null]) ; then
98         ccvs_cv_bsd_make_vpath_bug=yes
99 else
100         ccvs_cv_bsd_make_vpath_bug=no
101 fi
102 AC_TRY_COMMAND([rm -rf ac_test_dir ac_test_target conftestmake])])
103 # We also don't need to worry about the bug when $srcdir = $builddir
104 AM_CONDITIONAL(MAKE_TARGETS_IN_VPATH, \
105                 test $ccvs_cv_bsd_make_vpath_bug = no \
106                 || test $srcdir = .)
107
108 AC_HEADER_DIRENT
109 AC_HEADER_STDC
110 AC_HEADER_SYS_WAIT
111 AC_CHECK_HEADERS(\
112         direct.h \
113         fcntl.h \
114         getopt.h \
115         inttypes.h \
116         io.h \
117         memory.h \
118         ndbm.h \
119         stdint.h \
120         syslog.h \
121         sys/bsdtypes.h \
122         sys/file.h \
123         sys/inttypes.h \
124         sys/param.h \
125         sys/resource.h \
126         sys/select.h \
127         unistd.h \
128         utime.h \
129         wctype.h \
130         zlib.h \
131 )
132 gl_AC_HEADER_STDINT_H
133 AC_HEADER_STAT
134 AC_HEADER_STDBOOL
135
136 AC_C_CONST
137 AC_TYPE_UID_T
138 AC_TYPE_MODE_T
139 AC_TYPE_PID_T
140 AC_TYPE_SIGNAL
141
142 AC_CHECK_MEMBERS([struct stat.st_blksize])
143 AC_CHECK_MEMBERS([struct stat.st_rdev])
144
145 AC_FUNC_FSEEKO
146 AC_FUNC_ALLOCA
147 AC_CHECK_FUNCS([fseeko])
148 if test $ac_cv_func_fseeko = no; then
149     AC_LIBOBJ(fseeko)
150     AC_LIBOBJ(ftello)
151 fi
152
153 # Replace functions with versions in lib/ when they can't be found.
154 AC_REPLACE_FUNCS(\
155         waitpid \
156 )
157
158 #
159 # Special hack for a SunOS 5.7 (aka Solaris 7) select() problem.
160 #
161 ccvs_FUNC_SELECT
162
163 #
164 # Begin GNULIB stuff.
165 #
166
167 # Look for functions from GNULIB and replace with versions in lib/ when
168 # necessary.
169 dnl This calls most of the GNULIB macros we need via the
170 dnl autogenerated m4/gnulib.m4.
171 gl_INIT
172 # The error module still poses merge problems.
173 AC_FUNC_STRERROR_R
174 dnl The following macros can be called by other GNULIB macros but are also
175 dnl used by the UNIQUE_*_TYPE stuff below.  I don't want to rely on the GNULIB
176 dnl macros which call these to continue to do so, so use AC_REQUIRE, which can
177 dnl only be called from within another macro, to only call them only once.
178 AC_DEFUN([CCVS_CALL_GNULIB_MACROS_ONCE],
179 [AC_REQUIRE([gt_TYPE_LONGDOUBLE])
180 AC_REQUIRE([gt_TYPE_WCHAR_T])
181 AC_REQUIRE([gt_TYPE_WINT_T])
182 AC_REQUIRE([gl_AC_TYPE_INTMAX_T])
183 AC_REQUIRE([gl_FUNC_MMAP_ANON])
184 AC_REQUIRE([gl_AC_TYPE_LONG_LONG])])
185 CCVS_CALL_GNULIB_MACROS_ONCE()
186
187 #
188 # End GNULIB stuff.
189 #
190
191
192
193 # Check for function existance.
194 AC_CHECK_FUNCS(\
195         alloca \
196         btowc \
197         fchdir \
198         fchmod \
199         fsync \
200         ftime \
201         geteuid \
202         getgroups \
203         getopt_long_only \
204         getpagesize \
205         getpass \
206         gettimeofday \
207         initgroups \
208         login \
209         logout \
210         mbsrtowcs \
211         regcomp \
212         regerror \
213         regexec \
214         regfree \
215         sigaction \
216         sigblock \
217         sigprocmask \
218         sigsetmask \
219         sigvec \
220         timezone \
221         tzset \
222         vprintf \
223         wait3 \
224         wmemchr \
225         wmemcpy \
226         wmempcpy \
227 )
228 HAVE_PUTENV=$ac_cv_func_putenv
229 AC_SUBST(HAVE_PUTENV)
230 AC_C_BIGENDIAN
231
232 dnl
233 dnl Find the sizes of various types and set a variable for some if they
234 dnl are "unique", meaning it does not share a size with a lower precedence
235 dnl type.
236 dnl
237 dnl also, I snagged this cross_compiling line from openldap's autoconf,
238 dnl because I can't figure out how to stop autoconf from giving cross compiler
239 dnl related warnings each time the AC_CHECK_SIZEOF function is run
240 dnl
241 if test $cross_compiling = yes ; then
242         AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
243 else
244         AC_CHECK_SIZEOF(char)
245         AC_CACHE_CHECK(for uniquely sized char,
246                 ccvs_cv_unique_int_type_char,
247                 [if set |grep ^ccvs_cv_unique_int_type_ \
248                         |grep "($ac_cv_sizeof_char)" >/dev/null ; then
249                         ccvs_cv_unique_int_type_char=no
250                 else
251                         ccvs_cv_unique_int_type_char=yes\($ac_cv_sizeof_char\)
252                 fi])
253         if test $ccvs_cv_unique_int_type_char != no ; then
254                 AC_DEFINE( UNIQUE_INT_TYPE_CHAR, 1,
255                            [Define if char is the first integer type
256                             detected with its size.])
257         fi
258         AC_CHECK_SIZEOF(short)
259         AC_CACHE_CHECK(for uniquely sized short,
260                 ccvs_cv_unique_int_type_short,
261                 [if set |grep ^ccvs_cv_unique_int_type_ \
262                         |grep "($ac_cv_sizeof_short)" >/dev/null ; then
263                         ccvs_cv_unique_int_type_short=no
264                 else
265                         ccvs_cv_unique_int_type_short=yes\($ac_cv_sizeof_short\)
266                 fi])
267         if test $ccvs_cv_unique_int_type_short != no ; then
268                 AC_DEFINE( UNIQUE_INT_TYPE_SHORT, 1,
269                            [Define if short is the first integer type
270                             detected with its size.])
271         fi
272         AC_CHECK_SIZEOF(int)
273         AC_CACHE_CHECK(for uniquely sized int,
274                 ccvs_cv_unique_int_type_int,
275                 [if set |grep ^ccvs_cv_unique_int_type_ \
276                         |grep "($ac_cv_sizeof_int)" >/dev/null ; then
277                         ccvs_cv_unique_int_type_int=no
278                 else
279                         ccvs_cv_unique_int_type_int=yes\($ac_cv_sizeof_int\)
280                 fi])
281         if test $ccvs_cv_unique_int_type_int != no ; then
282                 AC_DEFINE( UNIQUE_INT_TYPE_INT, 1,
283                            [Define if int is the first integer type
284                             detected with its size.])
285         fi
286         AC_CHECK_SIZEOF(long)
287         AC_CACHE_CHECK(for uniquely sized long,
288                 ccvs_cv_unique_int_type_long,
289                 [if set |grep ^ccvs_cv_unique_int_type_ \
290                         |grep "($ac_cv_sizeof_long)" >/dev/null ; then
291                         ccvs_cv_unique_int_type_long=no
292                 else
293                         ccvs_cv_unique_int_type_long=yes\($ac_cv_sizeof_long\)
294                 fi])
295         if test $ccvs_cv_unique_int_type_long != no ; then
296                 AC_DEFINE(UNIQUE_INT_TYPE_LONG, 1,
297                           [Define if long int is the first integer type
298                            detected with its size.])
299         fi
300         if test $ac_cv_type_long_long != no; then
301                 AC_CHECK_SIZEOF(long long)
302                 AC_CACHE_CHECK(for uniquely sized long long,
303                         ccvs_cv_unique_int_type_long_long,
304                         [if set |grep ^ccvs_cv_unique_int_type_ \
305                                 |grep "($ac_cv_sizeof_long_long)" >/dev/null ; then
306                                 ccvs_cv_unique_int_type_long_long=no
307                         else
308                                 ccvs_cv_unique_int_type_long_long=yes\($ac_cv_sizeof_long_long\)
309                         fi])
310                 if test $ccvs_cv_unique_int_type_long_long != no ; then
311                         AC_DEFINE(UNIQUE_INT_TYPE_LONG_LONG, 1,
312                                   [Define if long long is the first integer type
313                                    detected with its size.])
314                 fi
315         fi
316         AC_CHECK_SIZEOF(size_t)
317         AC_CACHE_CHECK(for uniquely sized size_t,
318                 ccvs_cv_unique_int_type_size_t,
319                 [if set |grep ^ccvs_cv_unique_int_type_ \
320                         |grep "($ac_cv_sizeof_size_t)" >/dev/null ; then
321                         ccvs_cv_unique_int_type_size_t=no
322                 else
323                         ccvs_cv_unique_int_type_size_t=yes\($ac_cv_sizeof_size_t\)
324                 fi])
325         if test $ccvs_cv_unique_int_type_size_t != no ; then
326                 AC_DEFINE(UNIQUE_INT_TYPE_SIZE_T, 1,
327                           [Define if size_t is the first integer type
328                            detected with its size.])
329         fi
330         AC_CHECK_SIZEOF(ptrdiff_t)
331         AC_CACHE_CHECK(for uniquely sized ptrdiff_t,
332                 ccvs_cv_unique_int_type_ptrdiff_t,
333                 [if set |grep ^ccvs_cv_unique_int_type_ \
334                         |grep "($ac_cv_sizeof_ptrdiff_t)" >/dev/null ; then
335                         ccvs_cv_unique_int_type_ptrdiff_t=no
336                 else
337                         ccvs_cv_unique_int_type_ptrdiff_t=yes\($ac_cv_sizeof_ptrdiff_t\)
338                 fi])
339         if test $ccvs_cv_unique_int_type_ptrdiff_t != no ; then
340                 AC_DEFINE(UNIQUE_INT_TYPE_PTRDIFF_T, 1,
341                           [Define if ptrdiff_t is the first integer type
342                            detected with its size.])
343         fi
344         if test $gt_cv_c_wint_t != no; then
345                 AC_CHECK_SIZEOF(wint_t, [], [[#include <stdio.h>
346 #include <wchar.h>
347 ]])
348                 AC_CACHE_CHECK(for uniquely sized wint_t,
349                         ccvs_cv_unique_int_type_wint_t,
350                         [if set |grep ^ccvs_cv_unique_int_type_ \
351                                 |grep "($ac_cv_sizeof_wint_t)" >/dev/null ; then
352                                 ccvs_cv_unique_int_type_wint_t=no
353                         else
354                                 ccvs_cv_unique_int_type_wint_t=yes\($ac_cv_sizeof_wint_t\)
355                         fi])
356                 if test $ccvs_cv_unique_int_type_wint_t != no ; then
357                         AC_DEFINE( UNIQUE_INT_TYPE_WINT_T, 1,
358                                    [Define if wint_t is the first integer type
359                                     detected with its size.])
360                 fi
361         fi
362         if test $gt_cv_c_intmax_t != no; then
363                 AC_CHECK_SIZEOF(intmax_t, [], [[#include <stdio.h>
364 #ifdef HAVE_INTTYPES_H
365 #include <inttypes.h>
366 #else
367 #ifdef HAVE_STDINT_H
368 #include <stdint.h>
369 #endif
370 #endif
371 ]])
372                 AC_CACHE_CHECK(for uniquely sized intmax_t,
373                         ccvs_cv_unique_int_type_intmax_t,
374                         [if set |grep ^ccvs_cv_unique_int_type_ \
375                                 |grep "($ac_cv_sizeof_intmax_t)" >/dev/null ; then
376                                 ccvs_cv_unique_int_type_intmax_t=no
377                         else
378                                 ccvs_cv_unique_int_type_intmax_t=yes\($ac_cv_sizeof_intmax_t\)
379                         fi])
380                 if test $ccvs_cv_unique_int_type_intmax_t != no ; then
381                         AC_DEFINE( UNIQUE_INT_TYPE_INTMAX_T, 1,
382                                    [Define if intmax_t is the first integer type
383                                     detected with its size.])
384                 fi
385         fi
386
387         dnl
388         dnl and the same for floats...
389         dnl
390         AC_CHECK_SIZEOF(float)
391         AC_CACHE_CHECK(for uniquely sized float,
392                 ccvs_cv_unique_float_type_float,
393                 [if set |grep ^ccvs_cv_unique_float_type_ \
394                         |grep "($ac_cv_sizeof_float)" >/dev/null ; then
395                         ccvs_cv_unique_float_type_float=no
396                 else
397                         ccvs_cv_unique_float_type_float=yes\($ac_cv_sizeof_float\)
398                 fi])
399         if test $ccvs_cv_unique_float_type_float != no ; then
400                 AC_DEFINE( UNIQUE_FLOAT_TYPE_FLOAT, 1,
401                            [Define if float is the first floating point type
402                             detected with its size.])
403         fi
404         AC_CHECK_SIZEOF(double)
405         AC_CACHE_CHECK(for uniquely sized double,
406                 ccvs_cv_unique_float_type_double,
407                 [if set |grep ^ccvs_cv_unique_float_type_ \
408                         |grep "($ac_cv_sizeof_double)" >/dev/null ; then
409                         ccvs_cv_unique_float_type_double=no
410                 else
411                         ccvs_cv_unique_float_type_double=yes\($ac_cv_sizeof_double\)
412                 fi])
413         if test $ccvs_cv_unique_float_type_double != no ; then
414                 AC_DEFINE( UNIQUE_FLOAT_TYPE_DOUBLE, 1,
415                            [Define if double is the first floating point type
416                             detected with its size.])
417         fi
418         if test $gt_cv_c_long_double != no; then
419                 AC_CHECK_SIZEOF(long double)
420                 AC_CACHE_CHECK(for uniquely sized long double,
421                         ccvs_cv_unique_float_type_long_double,
422                         [if set |grep ^ccvs_cv_unique_float_type_ \
423                                 |grep "($ac_cv_sizeof_long_double)" >/dev/null ; then
424                                 ccvs_cv_unique_float_type_long_double=no
425                         else
426                                 ccvs_cv_unique_float_type_long_double=yes\($ac_cv_sizeof_long_double\)
427                         fi])
428                 if test $ccvs_cv_unique_float_type_long_double != no ; then
429                         AC_DEFINE(UNIQUE_FLOAT_TYPE_LONG_DOUBLE, 1,
430                                   [Define if long double is the first floating point
431                                    type detected with its size.])
432                 fi
433         fi
434 fi
435
436 dnl
437 dnl The CVS coding standard (as specified in HACKING) is that if it exists
438 dnl in SunOS4 and ANSI, we use it.  CVS itself, of course, therefore doesn't
439 dnl need HAVE_* defines for such functions, but diff wants them.
440 dnl
441 AC_DEFINE(HAVE_STRCHR, 1,
442 [Define if you have strchr (always for CVS).])
443 AC_DEFINE(HAVE_MEMCHR, 1,
444 [Define if you have memchr (always for CVS).])
445
446 dnl
447 dnl Force lib/regex.c to use malloc instead of messing around with alloca
448 dnl and define the old re_comp routines that we use.
449 dnl
450 AC_DEFINE(REGEX_MALLOC, 1,
451 [Define to force lib/regex.c to use malloc instead of alloca.])
452 AC_DEFINE(_REGEX_RE_COMP, 1,
453 [Define to force lib/regex.c to define re_comp et al.])
454 dnl
455 dnl AC_FUNC_FORK([]) is rather baroque.  It seems to be rather more picky
456 dnl than, say, the Single Unix Specification (version 2), which simplifies
457 dnl a lot of cases by saying that the child process can't set any variables
458 dnl (thus avoiding problems with register allocation) or call any functions
459 dnl (thus avoiding problems with whether file descriptors are shared).
460 dnl It would be nice if we could just write to the Single Unix Specification.
461 dnl I think the only way to do redirection this way is by doing it in the
462 dnl parent, and then undoing it afterwards (analogous to windows-NT/run.c).
463 dnl That would appear to have a race condition if the user hits ^C (or
464 dnl some other signal) at the wrong time, as main_cleanup will try to use
465 dnl stdout/stderr.  So maybe we are stuck with AC_FUNC_FORK([]).
466 dnl
467 AC_FUNC_FORK([])
468 AC_FUNC_CLOSEDIR_VOID
469
470 dnl
471 dnl Check for shadow password support.
472 dnl
473 dnl We used to try to determine whether shadow passwords were actually in
474 dnl use or not, but the code has been changed to work right reguardless,
475 dnl so we can go back to a simple check.
476 AC_SEARCH_LIBS(getspnam, sec gen, AC_DEFINE(HAVE_GETSPNAM, 1,
477 [Define if you have the getspnam function.]))
478
479 AC_FUNC_UTIME_NULL
480 AC_SYS_LONG_FILE_NAMES
481
482 dnl for debugging code
483 CVS_FUNC_PRINTF_PTR
484
485 # Try to find connect and gethostbyname.
486 AC_CHECK_LIB(nsl, main)
487 AC_SEARCH_LIBS(connect, xnet socket inet,
488   AC_DEFINE(HAVE_CONNECT, 1,
489 [Define if you have the connect function.]))
490 dnl no need to search nsl for gethostbyname here since we should have
491 dnl just added libnsl above if we found it.
492 AC_SEARCH_LIBS(gethostbyname, netinet)
493
494 AC_SUBST(cvs_client_objects)
495
496
497 dnl
498 dnl begin --with-*
499 dnl
500
501 dnl
502 dnl begin --with-rsh
503 dnl
504 dnl Many sites no longer desire the use of "rsh" as the default
505 dnl remote shell program. They typically favor "ssh" as the default
506
507 # What remote shell transport should our client cvs default to using?
508 AC_ARG_WITH(
509   [rsh],
510   AC_HELP_STRING(
511     [--with-rsh],
512     [The default remote shell CVS will use for :ext: transport
513      (default ssh)]), ,
514   [with_rsh="ssh rsh"])
515
516 if test no = "$with_rsh"; then
517   AC_MSG_WARN([Failed to find usable remote shell. Using 'rsh'.])
518   with_rsh=rsh
519 elif test yes = "$with_rsh"; then
520   # Make --with-rsh mean the same thing as --with-rsh=rsh
521   with_rsh=rsh
522 fi
523
524 if echo $with_rsh |grep ^/ >/dev/null; then
525   # If $with_rsh is an absolute path, issue a warning if the executable
526   # doesn't exist or isn't usable, but then trust the user and use it
527   # regardless
528   with_default_rsh=$with_rsh
529   AC_MSG_CHECKING([for a remote shell])
530   if ! test -f $with_rsh \
531       || ! test -x $with_rsh; then
532     # warn the user that they may encounter problems
533     AC_MSG_WARN([$with_rsh is not a path to an executable file])
534   fi
535 else
536   # Search for a remote shell
537   AC_CHECK_PROGS([with_default_rsh], [$with_rsh], "rsh")
538 fi
539
540 AC_DEFINE_UNQUOTED(
541   [RSH_DFLT], ["$with_default_rsh"],
542   [The default remote shell to use, if one does not specify the
543    CVS_RSH environment variable.])
544 RSH_DFLT=$with_default_rsh
545 AC_SUBST(RSH_DFLT)
546 dnl done with finding a default CVS_RSH value
547 dnl
548 dnl end --with-rsh
549 dnl
550
551 dnl
552 dnl begin --with-editor
553 dnl
554 dnl Set the default editor to use for log messages
555 dnl
556
557 AC_ARG_VAR(
558   [EDITOR],
559   [The text editor CVS will use by default for log messages.])
560
561 # Let the confiscator request a specific editor
562 AC_ARG_WITH(
563   [editor],
564   AC_HELP_STRING(
565     [--with-editor],
566     [The default text editor CVS should use for log messages
567      (default autoselects)]), ,
568   [with_editor=yes])
569
570 # If --with-editor was supplied with an argument, let it override $EDITOR from
571 # the user's environment.  We need to unset EDITOR here because AC_CHECK_PROGS
572 # will let the value of EDITOR ride when it is set rather than searching.  We
573 # ignore the --without-editor case since it will be caught below.
574 if test -n "$EDITOR" && test yes != $with_editor; then
575   AS_UNSET([EDITOR])
576 fi
577
578 # Set the default when --with-editor wasn't supplied or when it was supplied
579 # without an argument.
580 if test yes = $with_editor; then
581   with_editor="vim vi emacs nano pico edit"
582 fi
583
584 if echo $with_editor |grep ^/ >/dev/null; then
585   # If $with_editor is an absolute path, issue a warning if the executable
586   # doesn't exist or isn't usable, but then trust the user and use it
587   # regardless
588   EDITOR=$with_editor
589   AC_MSG_CHECKING([for an editor])
590   AC_MSG_RESULT([$EDITOR])
591   if ! test -f $with_editor \
592       || ! test -x $with_editor; then
593     # warn the user that they may encounter problems
594     AC_MSG_WARN([\`$with_editor' is not a path to an executable file])
595   fi
596 elif test no != "${with_editor}"; then
597   # Search for an editor
598   AC_CHECK_PROGS([EDITOR], [$with_editor], [no])
599     if test no = "${EDITOR}"; then
600       AC_MSG_ERROR([
601     Failed to find a text file editor.  CVS cannot be compiled
602     without a default log message editor.  Searched for
603     \`$with_editor'.  Try \`configure --with-editor'.])
604     fi
605 else
606   AC_MSG_ERROR([
607     CVS cannot be compiled without a default log message editor.
608     Try \`configure --with-editor'.])
609 fi
610
611 dnl FIXME - Using --without-editor will probably break a compile at
612 dnl the moment, but maybe it is reasonable for someone to want to
613 dnl compile a CVS executable that refuses to run if no $EDITOR,
614 dnl $CVS_EDITOR, or -e option is specified?  Making a preliminary
615 dnl design decision in this direction, subject to discussion.
616 dnl
617 dnl Still don't know if the above would be useful, but we shouldn't
618 dnl be able to get here any longer without $EDITOR defined due to the
619 dnl error checking above.
620 AC_DEFINE_UNQUOTED(
621   [EDITOR_DFLT], ["$EDITOR"],
622   [The default editor to use, if one does not specify the "-e" option
623    to cvs, or does not have an EDITOR environment variable.  If this
624    is not set to an absolute path to an executable, use the shell to
625    find where the editor actually is.  This allows sites with
626    /usr/bin/vi or /usr/ucb/vi to work equally well (assuming that their
627    PATH is reasonable).])
628
629 dnl
630 dnl done finding an editor
631 dnl
632 dnl end --with-editor
633 dnl
634
635
636
637 dnl
638 dnl --with-hardcoded-pam-service-name
639 dnl
640 AC_ARG_WITH(
641   [hardcoded-pam-service-name],
642   AC_HELP_STRING(
643     [--with-hardcoded-pam-service-name],
644     [Use this to hard code a service name for PAM CVS authentication.  The
645      special name, `program_name', will cause CVS to use whatever name it
646      was invoked as as the service name.  (defaults to `cvs')]),,
647     [with_hardcoded_pam_service_name=cvs])
648
649 if test "x$with_hardcoded_pam_service_name" = xno ||
650    test "x$with_hardcoded_pam_service_name" = xprogram_name; then
651   AC_DEFINE([PAM_SERVICE_NAME], [program_name],
652     [Define to set a service name for PAM.  This must be defined.  Define to
653      `program_name', without the quotes, to use whatever name CVS was invoked
654       as.  Otherwise, define to a double-quoted literal string, such as
655       `"cvs"'.])
656 else
657   if test x"$with_hardcoded_pam_service_name" = xyes; then
658     with_hardcoded_pam_service_name=cvs
659   fi
660   AC_DEFINE_UNQUOTED([PAM_SERVICE_NAME], ["$with_hardcoded_pam_service_name"])
661 fi
662
663
664
665 dnl
666 dnl Find a temporary directory
667 dnl
668 AC_ARG_WITH(
669   [tmpdir],
670   AC_HELP_STRING(
671     [--with-tmpdir],
672     [The temporary directory CVS should use as a default
673      (default autoselects)]))
674
675 AC_MSG_CHECKING([for temporary directory])
676 if test -z "$with_tmpdir" || test yes = "$with_tmpdir"; then
677   for with_tmpdir in /tmp /var/tmp no; do
678     if test -d "$with_tmpdir" && test -x "$with_tmpdir" \
679         && test -w "$with_tmpdir" && test -r "$with_tmpdir"; then
680       break
681     fi
682   done
683   if test no = "$with_tmpdir"; then
684     AC_MSG_WARN([Failed to find usable temporary directory.  Using '/tmp'.])
685     with_tmpdir=/tmp
686   fi
687   AC_MSG_RESULT([$with_tmpdir])
688 elif ! echo "$with_tmpdir" |grep '^[[\\/]]'; then
689   AC_MSG_RESULT([$with_tmpdir])
690   AC_MSG_ERROR([--with-tmpdir requires an absolute path.])
691 elif ! test -d "$with_tmpdir" || ! test -x "$with_tmpdir" \
692         || ! test -w "$with_tmpdir" || ! test -r "$with_tmpdir"; then
693   AC_MSG_RESULT([$with_tmpdir])
694   AC_MSG_WARN(
695     [User supplied temporary directory ('$with_tmpdir') does not
696      exist or lacks sufficient permissions for read/write.])
697 fi
698
699 AC_DEFINE_UNQUOTED(
700   [TMPDIR_DFLT], ["$with_tmpdir"],
701   [Directory used for storing temporary files, if not overridden by
702    environment variables or the -T global option.  There should be little
703    need to change this (-T is a better mechanism if you need to use a
704    different directory for temporary files).])
705
706 dnl
707 dnl done finding tmpdir
708 dnl
709
710
711 dnl
712 dnl Get default umask
713 dnl
714
715 AC_ARG_WITH(
716   [umask],
717   AC_HELP_STRING(
718     [--with-umask],
719     [Set the umask CVS will use by default in the repository (default 002)]))
720
721 if test -z "$with_umask" || test yes = "$with_umask"; then
722   with_umask=002
723 elif test no = "$with_umask"; then
724   with_umask=000
725 fi
726
727 AC_DEFINE_UNQUOTED(
728   [UMASK_DFLT], [$with_umask],
729   [The default umask to use when creating or otherwise setting file or
730    directory permissions in the repository.  Must be a value in the
731    range of 0 through 0777.  For example, a value of 002 allows group
732    rwx access and world rx access; a value of 007 allows group rwx
733    access but no world access.  This value is overridden by the value
734    of the CVSUMASK environment variable, which is interpreted as an
735    octal number.])
736
737 dnl
738 dnl Done setting default umask
739 dnl
740
741 dnl
742 dnl Set CVS Administrator Group
743 dnl
744 AC_ARG_WITH(
745   [cvs-admin-group],
746   AC_HELP_STRING(
747     [--with-cvs-admin-group=GROUP],
748     [The CVS admin command is restricted to the members of this group.
749      If this group does not exist, all users are allowed to run CVS admin.
750      To disable the CVS admin command for all users, create an empty group
751      by specifying the --with-cvs-admin-group= option.  To disable access
752      control for CVS admin, run configure with the --without-cvs-admin-group
753      option. (default 'cvsadmin')]), ,
754   [with_cvs_admin_group=cvsadmin])
755
756 if test yes = "$with_cvs_admin_group"; then
757   with_cvs_admin_group=cvsadmin
758 fi
759 if test no != "$with_cvs_admin_group"; then
760   dnl FIXME We should warn if the group doesn't exist
761   AC_DEFINE_UNQUOTED(
762     [CVS_ADMIN_GROUP], ["$with_cvs_admin_group"],
763     [The CVS admin command is restricted to the members of the group
764      CVS_ADMIN_GROUP.  If this group does not exist, all users are
765      allowed to run CVS admin.  To disable the CVS admin command for
766      all users, create an empty CVS_ADMIN_GROUP by running configure
767      with the --with-cvs-admin-group= option.  To disable access control
768      for CVS admin, run configure with the --without-cvs-admin-group
769      option in order to comment out the define below.])
770 fi
771
772 dnl
773 dnl Done setting CVS Administrator Group
774 dnl
775
776 dnl
777 dnl Set the NDBM library to use.
778 dnl
779 dnl XXX - FIXME - FIXME - FIXME - XXX
780 dnl
781 dnl This is very bad.  It should really autodetect an appropriate NDBM library
782 dnl and, if it doesn't find one, decide to use MY_NDBM.  I'm am defining
783 dnl this here since this is no worse than it worked when it was in options.h
784 dnl and I am cleaning out options.h so that the Windows version of CVS will
785 dnl compile properly for the next release.
786 dnl
787 dnl That's why this option is in the --with-* section rather than the
788 dnl --enable-* section.
789 dnl
790 dnl XXX - FIXME - FIXME - FIXME - XXX
791 dnl
792 AC_ARG_ENABLE(
793   [cvs-ndbm],
794   AC_HELP_STRING(
795     [--enable-cvs-ndbm],
796     [Use the NDBM library distributed with CVS rather than attempting to use
797      a system NDBM library.  Disabling this may not work.  (default)]), ,
798   [enable_cvs_ndbm=yes])
799 if test no != "$enable_cvs_ndbm"; then
800   AC_DEFINE(
801     [MY_NDBM], [1],
802     [By default, CVS stores its modules and other such items in flat
803      text files (MY_NDBM enables this).  Turning off MY_NDBM causes CVS
804      to look for a system-supplied ndbm database library and use it
805      instead.  That may speed things up, but the default setting
806      generally works fine too.])
807 fi
808
809 dnl
810 dnl Done selecting NDBM library.
811 dnl
812
813
814
815 dnl
816 dnl end --with-*
817 dnl
818
819
820 dnl
821 dnl begin --enables
822 dnl
823
824
825 dnl
826 dnl begin --enable-client
827 dnl
828
829 # Check for options requesting client and server feature. If none are
830 # given and we have connect(), we want the full client & server arrangement.
831 AC_ARG_ENABLE(
832   [client],
833   AC_HELP_STRING(
834     [--enable-client],
835     [Include code for running as a remote client (default)]), ,
836   [enable_client=$ac_cv_search_connect])
837 if test no != "$enable_client"; then
838   AC_DEFINE(
839     [CLIENT_SUPPORT], [1],
840     [Define if you want CVS to be able to be a remote repository client.])
841 fi
842
843 dnl
844 dnl end --enable-client
845 dnl
846
847
848 dnl
849 dnl begin --enable-password-authenticated-client
850 dnl
851 AC_ARG_ENABLE(
852   [password-authenticated-client],
853   AC_HELP_STRING(
854     [--enable-password-authenticated-client],
855     [Enable pserver as a remote access method in the CVS client
856      (default)]), ,
857   [enable_password_authenticated_client=$enable_client])
858
859 if test xno != "x$enable_password_authenticated_client"; then
860   if test xno != "x$enable_client"; then
861     AC_DEFINE(
862       [AUTH_CLIENT_SUPPORT], [1],
863       [Enable AUTH_CLIENT_SUPPORT to enable pserver as a remote access
864        method in the CVS client (default)])
865   else
866     AC_MSG_WARN(
867       [--enable-password-authenticated-client is meaningless with
868        the CVS client disabled (--disable-client)])
869   fi
870 fi
871
872 dnl
873 dnl begin --enable-password-authenticated-client
874 dnl
875
876
877 dnl
878 dnl begin --enable-server
879 dnl
880
881 dnl
882 dnl Give the confiscator control over whether the server code is compiled
883 dnl
884 AC_ARG_ENABLE(
885   [server],
886   AC_HELP_STRING(
887     [--enable-server],
888     [Include code for running as a server (default)]), ,
889   [enable_server=$ac_cv_search_connect])
890
891 if test no != "$enable_server"; then
892   AC_DEFINE(
893     [SERVER_SUPPORT], [1],
894     [Define if you want CVS to be able to serve repositories to remote
895      clients.])
896
897   dnl
898   dnl The auth server needs to be able to check passwords against passwd
899   dnl file entries, so we only #define AUTH_SERVER_SUPPORT if we can
900   dnl find the crypt function. 
901   dnl
902   AC_SEARCH_LIBS(
903     [crypt], [crypt],
904     [AC_DEFINE(
905        [HAVE_CRYPT], [1],
906        [Define if you have the crypt function.])
907      AC_DEFINE(
908        [AUTH_SERVER_SUPPORT], [1],
909        [Define if you want to use the password authenticated server.])dnl
910   ])dnl AC_SEARCH_LIBS
911
912   dnl
913   dnl Allow the configurer to enable server flowcontrol.  Read the help
914   dnl strings below for a full explanation.
915   dnl
916   AC_ARG_ENABLE(
917     [server-flow-control],
918     AC_HELP_STRING(
919       [--enable-server-flow-control],
920       [If you are working with a large remote repository and a 'cvs
921        checkout' is swamping your network and memory, define these to
922        enable flow control.  You may optionally pass a low water mark
923        in bytes and a high water mark in bytes, separated by commas.
924        (default is enabled 1M,2M)]),
925     [if test yes = $enable_server_flow_control; then
926        enable_server_flow_control=1M,2M
927      fi],
928     [enable_server_flow_control=1M,2M])
929   if test no != $enable_server_flow_control; then
930     ccvs_lwm=`expr "$enable_server_flow_control" : '\(.*\),'`
931     ccvs_hwm=`expr "$enable_server_flow_control" : '.*,\(.*\)'`
932     ccvs_lwm_E=`expr "$ccvs_lwm" : '[[0-9]][[0-9]]*\(.*\)'`
933     ccvs_lwm=`expr "$ccvs_lwm" : '\([[0-9]][[0-9]]*\)'`
934     test "" != "$ccvs_lwm" || ccvs_lwm_E="?"
935     case $ccvs_lwm_E in
936         G) ccvs_lwm="$ccvs_lwm * 1024 * 1024 * 1024";;
937         M) ccvs_lwm="$ccvs_lwm * 1024 * 1024";;
938         k) ccvs_lwm="$ccvs_lwm * 1024";;
939         b | '') ;;
940         *) AC_MSG_ERROR([Can't parse argument to --enable-server-flow-control
941                         ('$enable_server_flow_control') as <lwm>,<hwm>])
942       esac
943     ccvs_hwm_E=`expr "$ccvs_hwm" : '[[0-9]][[0-9]]*\(.*\)'`
944     ccvs_hwm=`expr "$ccvs_hwm" : '\([[0-9]][[0-9]]*\).*'`
945     test "" != "$ccvs_hwm" || ccvs_hwm_E="?"
946     case $ccvs_hwm_E in
947         G) ccvs_hwm="$ccvs_hwm * 1024 * 1024 * 1024";;
948         M) ccvs_hwm="$ccvs_hwm * 1024 * 1024";;
949         k) ccvs_hwm="$ccvs_hwm * 1024";;
950         b | '') ccvs_hwm="$ccvs_hwm";;
951         *) AC_MSG_ERROR([Can't parse argument to --enable-server-flow-control
952                         ('$enable_server_flow_control') as <lwm>,<hwm>])
953       esac
954
955     AC_DEFINE(
956       [SERVER_FLOWCONTROL], [1],
957       [If you are working with a large remote repository and a 'cvs
958        checkout' is swamping your network and memory, define these to
959        enable flow control.  You will end up with even less probability of
960        a consistent checkout (see Concurrency in cvs.texinfo), but CVS
961        doesn't try to guarantee that anyway.  The master server process
962        will monitor how far it is getting behind, if it reaches the high
963        water mark, it will signal the child process to stop generating
964        data when convenient (ie: no locks are held, currently at the
965        beginning of a new directory).  Once the buffer has drained
966        sufficiently to reach the low water mark, it will be signalled to
967        start again.])
968     AC_DEFINE_UNQUOTED(
969       [SERVER_LO_WATER], [($ccvs_lwm)],
970       [The low water mark in bytes for server flow control.  Required if
971        SERVER_FLOWCONTROL is defined, and useless otherwise.])
972     AC_DEFINE_UNQUOTED(
973       [SERVER_HI_WATER], [($ccvs_hwm)],
974       [The high water mark in bytes for server flow control.  Required if
975        SERVER_FLOWCONTROL is defined, and useless otherwise.])
976   fi # enable_server_flow_control
977 fi # enable_server
978
979 dnl
980 dnl end --enable-server
981 dnl
982
983
984 dnl
985 dnl begin --enable-proxy
986 dnl
987
988 dnl
989 dnl Give the confiscator control over whether the proxy server code is compiled
990 dnl
991 AC_ARG_ENABLE(
992   [proxy],
993   AC_HELP_STRING(
994     [--enable-proxy],
995     [Include code for running as a transparent proxy server.  Disabling this
996      may produce a slight performance gain on some systems, at the expense of
997      write proxy support. (default)]), ,
998   [if test xno != "x$enable_client" && test xno != "x$enable_server"; then
999      enable_proxy=yes
1000    else
1001      enable_proxy=no
1002    fi])
1003
1004 if test no != "$enable_proxy"; then
1005   if test xno = "x$enable_client" || test xno = "x$enable_server"; then
1006     AC_MSG_WARN(
1007       [--enable-proxy is meaningless when either the CVS client or the
1008        CVS server is disabled (--disable-client and --disable-server).])
1009   else
1010     AC_DEFINE(
1011       [PROXY_SUPPORT], [1],
1012       [Define if you want CVS to be able to serve as a transparent proxy for
1013        write operations.  Disabling this may produce a slight performance gain
1014        on some systems, at the expense of write proxy support.])
1015   fi
1016 fi
1017 dnl
1018 dnl end --enable-proxy
1019 dnl
1020
1021
1022 dnl
1023 dnl begin --enable-pam
1024 dnl
1025
1026 dnl
1027 dnl Check if PAM authentication is enabled
1028 dnl
1029 AC_ARG_ENABLE(
1030   [pam],
1031   AC_HELP_STRING(
1032     [--enable-pam],
1033     [Use to enable system authentication with PAM instead of using the 
1034     simple getpwnam interface.  This allows authentication (in theory) 
1035     with any PAM module, e.g. on systems with shadow passwords or via LDAP]), ,
1036   [enable_pam=no]
1037   )
1038
1039 if test yes = $enable_pam; then
1040   ac_pam_header_available=
1041
1042   AC_CHECK_HEADER([security/pam_appl.h], [
1043     AC_DEFINE([HAVE_SECURITY_PAM_APPL_H], 1, [Define to 1 if security/pam_appl.h is available])
1044     ac_pam_header_available=1])
1045
1046   if test -z "$ac_pam_header_available"; then
1047   AC_CHECK_HEADER([pam/pam_appl.h], [
1048     AC_DEFINE([HAVE_PAM_PAM_APPL_H], 1, [Define to 1 if pam/pam_appl.h is available])
1049     ac_pam_header_available=1])
1050   fi
1051
1052   if test -z "$ac_pam_header_available"; then
1053     AC_MSG_ERROR([Could not find PAM headers])
1054   else
1055     AC_DEFINE(HAVE_PAM, 1, 
1056     [Define to enable system authentication with PAM instead of using the 
1057     simple getpwnam interface.  This allows authentication (in theory) 
1058     with any PAM module, e.g. on systems with shadow passwords or via LDAP])
1059     AC_CHECK_LIB(pam, pam_start, [LIBS="${LIBS} -lpam"],
1060       AC_MSG_ERROR([Could not find PAM libraries but the headers exist.
1061       Give the --disable-pam option to compile without PAM support (or fix
1062       your broken configuration)])
1063     )
1064   fi
1065 fi
1066
1067 dnl
1068 dnl end --enable-pam
1069 dnl
1070
1071
1072 dnl
1073 dnl begin --enable-case-sensitivity
1074 dnl
1075
1076 AC_ARG_ENABLE(
1077   [case-sensitivity],
1078   AC_HELP_STRING(
1079     [--enable-case-sensitivity],
1080     [Force CVS to expect a case sensitive file system.  Enabling this on a case
1081      insensitive system should have little effect on the server or client
1082      operation, though client users may ocassionally be suprised that the CVS
1083      server appears to be case sensitive.  Disabling this for a case sensitive
1084      server disables server support for case insensitive clients, which can
1085      confuse all users of case insensitive clients contacting the server.
1086      Disabling this for a case sensitive client will cause the client to ask
1087      servers to behave case insensitively, which could cause confusion for
1088      users, but also probably no real harm.  (default autoselects based on the
1089      case sensitivity of the file system containing the current working
1090      directory)]),
1091     [case "$enable_case_sensitivity" in
1092        yes | no | auto) ;;
1093        *)
1094           AC_MSG_ERROR([Unrecognized argument to --enable-case-sensitivity: \`$enable_case_sensitivity'.  Acceptable values are \`yes', \`no', and \`auto'.])
1095           ;;
1096      esac],
1097   [enable_case_sensitivity=auto])
1098
1099 acx_forced=' (forced)'
1100 AC_MSG_CHECKING([for a case sensitive file system])
1101 if test $enable_case_sensitivity = auto; then
1102   dnl
1103   dnl Check for a case insensitive filesystem, like Mac OS X and Windows have.
1104   dnl
1105   AC_CACHE_VAL([acx_cv_case_sensitive],
1106   [ rm -f ac_TEST_filenames_CASE_sensitive
1107     echo foo >ac_test_filenames_case_sensitive
1108     if test -f ac_TEST_filenames_CASE_sensitive; then
1109       acx_cv_case_sensitive=no
1110     else
1111       acx_cv_case_sensitive=yes
1112     fi
1113     rm ac_test_filenames_case_sensitive
1114   ])
1115   enable_case_sensitivity=$acx_cv_case_sensitive
1116   acx_forced=
1117 fi
1118 AC_MSG_RESULT([$enable_case_sensitivity$acx_forced])
1119 if test $enable_case_sensitivity = no; then
1120   AC_DEFINE([FILENAMES_CASE_INSENSITIVE], [1],
1121             [Define if this executable will be running on case insensitive
1122              file systems.  In the client case, this means that it will request
1123              that the server pretend to be case insensitive if it isn't
1124              already.])
1125   dnl Compile fncase.c (containing fncase() & fncmp()) to handle file name
1126   dnl comparisons on case insensitive filesystems.
1127   AC_LIBOBJ(fncase)
1128 fi
1129
1130 dnl
1131 dnl end --enable-case-sensitivity
1132 dnl
1133
1134
1135 dnl
1136 dnl begin --enable-encryption
1137 dnl
1138
1139 dnl
1140 dnl Use --enable-encryption to turn on encryption support, but ignore this
1141 dnl option unless either client or server is enabled.
1142 dnl
1143 AC_ARG_ENABLE(
1144   [encryption],
1145   AC_HELP_STRING(
1146     [--enable-encryption],
1147     [Enable encryption support (disabled by default)]), ,
1148   [enable_encryption=no])
1149 if test "x$enable_encryption" = xyes; then
1150   if test xno = "x$with_client" && test xno = "x$with_server"; then
1151     AC_MSG_WARN(
1152       [--enable-encryption is meaningless when neither the CVS client
1153        nor the CVS server is enabled (--disable-client and --disable-server).])
1154   else
1155     AC_DEFINE(
1156       [ENCRYPTION], [1],
1157       [Define to enable encryption support.])
1158   fi
1159 fi
1160
1161 dnl
1162 dnl end --enable-encryption
1163 dnl
1164
1165
1166 dnl
1167 dnl begin --enable-force-editor
1168 dnl
1169
1170 AC_ARG_ENABLE(
1171   [force-editor],
1172   AC_HELP_STRING(
1173     [--enable-force-editor],
1174     [When committing or importing files, you must enter a log message.
1175      Normally, you can do this either via the -m flag on the command
1176      line, the -F flag on the command line, or an editor will be started
1177      for you.  If you like to use logging templates (the rcsinfo file
1178      within the $CVSROOT/CVSROOT directory), you might want to force
1179      people to use the editor even if they specify a message with -m or
1180      -F.  --enable-force-editor will cause the -m or -F message to be
1181      appended to the temp file when the editor is started. (disabled
1182      by default)]), ,
1183   [enable_force_editor=no])
1184
1185 if test yes = "$enable_force_editor"; then
1186   AC_DEFINE(
1187     [FORCE_USE_EDITOR], [1],
1188     [When committing or importing files, you must enter a log message.
1189     Normally, you can do this either via the -m flag on the command
1190     line, the -F flag on the command line, or an editor will be started
1191     for you.  If you like to use logging templates (the rcsinfo file
1192     within the $CVSROOT/CVSROOT directory), you might want to force
1193     people to use the editor even if they specify a message with -m or
1194     -F.  Enabling FORCE_USE_EDITOR will cause the -m or -F message to be
1195     appended to the temp file when the editor is started.])
1196 fi
1197
1198 dnl
1199 dnl end --enable-force-editor
1200 dnl
1201
1202
1203 dnl
1204 dnl begin --enable-lock-compatibility
1205 dnl
1206
1207 # Check for options requesting client and server feature. If none are
1208 # given and we have connect(), we want the full client & server arrangement.
1209 AC_ARG_ENABLE(
1210   [lock-compatibility],
1211   AC_HELP_STRING(
1212     [--enable-lock-compatibility],
1213     [Include locking code which prevents versions of CVS earlier than 1.12.4
1214      directly accessing the same repositiory as this executable from ignoring
1215      this executable's promotable read locks.  If only CVS versions 1.12.4 and
1216      later will be accessing your repository directly (as a server or locally),
1217      you can safely disable this option in return for fewer disk accesses and a
1218      small speed increase.  Disabling this option when versions of CVS earlier
1219      than 1,12,4 _will_ be accessing your repository, however, is *VERY* *VERY*
1220      *VERY* dangerous and could result in data loss.  (enabled by default)]),,
1221   [enable_lock_compatibility=yes])
1222
1223 if test x$enable_lock_compatibility = xyes; then
1224   AC_DEFINE([LOCK_COMPATIBILITY], [1],
1225     [Define to include locking code which prevents versions of CVS earlier than
1226      1.12.4 directly accessing the same repositiory as this executable from
1227      ignoring this executable's promotable read locks.  If only CVS versions
1228      1.12.4 and later will be accessing your repository directly (as a server
1229      or locally), you can safely disable this option in return for fewer disk
1230      accesses and a small speed increase.  Disabling this option when versions
1231      of CVS earlier than 1,12,4 _will_ be accessing your repository, however,
1232      is *VERY* *VERY* *VERY* dangerous and could result in data loss.
1233
1234      As such, by default, CVS is compiled with this code enabled.  If you are
1235      sure you would like this code disabled, you can disable it by passing the
1236      "--disable-lock-compatibility" option to configure or by commenting out
1237      the lines below.])
1238 fi
1239
1240 dnl
1241 dnl end --enable-lock-compatibility
1242 dnl
1243
1244
1245 dnl
1246 dnl begin --enable-rootcommit
1247 dnl
1248
1249 dnl
1250 dnl I don't like this here, but I don't really like options.h, either.
1251 dnl Besides, this is causing some problems currently when compiling under
1252 dnl Windows and moving it here should avoid the issue (the wrong options.h
1253 dnl is being used).
1254 dnl
1255 dnl I don't like making this a runtime option either.  I think I just don't
1256 dnl like making it easy to get to, but putting it here goes along with the
1257 dnl Autoconf ideal.
1258 dnl
1259 AC_ARG_ENABLE(
1260   [rootcommit],
1261   AC_HELP_STRING(
1262     [--enable-rootcommit],
1263     [Allow the root user to commit files (disabled by default)]), ,
1264   [enable_rootcommit=no])
1265 if test "$enable_rootcommit" = no; then
1266   AC_DEFINE(
1267     [CVS_BADROOT], [1],
1268     [When committing a permanent change, CVS and RCS make a log entry of
1269      who committed the change.  If you are committing the change logged
1270      in as "root" (not under "su" or other root-priv giving program),
1271      CVS/RCS cannot determine who is actually making the change.
1272
1273      As such, by default, CVS prohibits changes committed by users
1274      logged in as "root".  You can disable checking by passing the
1275      "--enable-rootcommit" option to configure or by commenting out the
1276      lines below.])
1277 fi
1278
1279 dnl
1280 dnl end --enable-rootcommit
1281 dnl
1282
1283 dnl
1284 dnl begin --enable-old-info-support
1285 dnl
1286 AC_ARG_ENABLE(
1287   [old-info-support],
1288   AC_HELP_STRING(
1289     [--enable-old-info-format-support],
1290     [Enable support for the pre 1.12.1 *info scripting hook format strings.
1291      Disable this option for a smaller executable once your scripting
1292      hooks have been updated to use the new *info format strings (default).]), ,
1293   [enable_old_info_format_support=yes])
1294 if test "$enable_old_info_format_support" = yes; then
1295   AC_DEFINE(
1296     [SUPPORT_OLD_INFO_FMT_STRINGS], [1],
1297     [Enable support for the pre 1.12.1 *info scripting hook format strings.
1298      Disable this option for a smaller executable once your scripting
1299      hooks have been updated to use the new *info format strings by passing
1300      "--disable-old-info-format-support" option to configure or by commenting
1301      out the line below.])
1302 fi
1303
1304 dnl
1305 dnl end --enable-old-info-support
1306 dnl
1307
1308
1309 dnl
1310 dnl begin --enable-config-override
1311 dnl
1312
1313 AC_ARG_ENABLE(
1314   [config-override],
1315   AC_HELP_STRING(
1316     [--enable-config-override],
1317     [Set to a comma-separated list of paths to directories (designated by
1318      trailing `/') and files, specifies the path prefixes (for directories) and
1319      paths to files the CVS server commands will allow configuration to be read
1320      from.  Specify `--enable-config-override=no' to disable config file
1321      overrides completely and `--enable-config-override=/' or simply
1322      `--enable-config-override' to allow all paths.  (Defaults to
1323      `SYSCONFDIR/cvs.conf,SYSCONFDIR/cvs/')]),,
1324   [# $sysconfdir may still contain variable references.  By default, this will
1325    # be to $prefix, and $prefix won't be set to its default value until later.
1326    # Compromise without setting $prefix for the rest of the file.
1327    cvs_save_prefix=$prefix
1328    if test "X$prefix" = XNONE; then
1329      prefix=$ac_prefix_default
1330    fi
1331    eval enable_config_override=`echo $sysconfdir/cvs.conf,$sysconfdir/cvs/`
1332    prefix=$cvs_save_prefix])
1333
1334 if test x"$enable_config_override" = xyes; then
1335   enable_config_override=/
1336 fi
1337
1338 if test x"$enable_config_override" = xno; then :; else
1339   save_IFS=$IFS
1340   IFS=,
1341   arrayinit=""
1342   for path in $enable_config_override; do
1343     IFS=$save_IFS
1344     case "$path" in
1345       [[\\/$]]* | ?:[[\\/]]* )
1346         arrayinit="$arrayinit\"$path\", "
1347         ;;
1348       *)  AC_MSG_ERROR(
1349           [expected comma separated list of absolute directory
1350            names for --enable-config-override, or \`no', not:
1351            \`$enable_config_override'
1352            (\`$path' invalid.)]);;
1353     esac
1354   done
1355   arrayinit="${arrayinit}NULL"
1356
1357   AC_DEFINE_UNQUOTED(ALLOW_CONFIG_OVERRIDE, [$arrayinit],
1358     [Define this to a NULL terminated list of allowed path prefixes (for
1359      directories) and paths to files the CVS server will allow configuration to
1360      be read from when specified from the command line.])
1361 fi
1362
1363 dnl
1364 dnl end --enable-config-override
1365 dnl
1366
1367
1368
1369 dnl
1370 dnl end --enables
1371 dnl
1372
1373
1374
1375 dnl For the moment we will assume that all systems which have
1376 dnl the unixyness to run configure are unixy enough to do the
1377 dnl PreservePermissions stuff.  I have this sinking feeling that
1378 dnl things won't be that simple, before long.
1379 dnl AC_DEFINE(PRESERVE_PERMISSIONS_SUPPORT, 1,
1380 dnl [Define if this system supports chown(), link(), and friends.])
1381
1382 dnl On cygwin32, we configure like a Unix system, but we need some support
1383 dnl libraries.  We do this at the end so that the new libraries are added at
1384 dnl the end of LIBS.
1385 dnl
1386 dnl FIXME: We should be trying to meet the autoconf ideal of checking for
1387 dnl the properties of the system rather than the name of the os here.  In other
1388 dnl words, we should check the case sensitivty of the system and then for
1389 dnl the support functions we are using and which library we find them in.
1390 AC_CACHE_CHECK(for cygwin32, ccvs_cv_sys_cygwin32,
1391 [AC_TRY_COMPILE([], [return __CYGWIN32__;],
1392 ccvs_cv_sys_cygwin32=yes, ccvs_cv_sys_cygwin32=no)])
1393 if test $ccvs_cv_sys_cygwin32 = yes; then
1394   LIBS="$LIBS -ladvapi32"
1395
1396   dnl On Windows you can only change file times if you can write to
1397   dnl the file.  cygwin32 should really handle this for us, but as of
1398   dnl January 1998 it doesn't.
1399   AC_DEFINE(UTIME_EXPECTS_WRITABLE, 1,
1400 [Define if utime requires write access to the file (true on Windows,
1401 but not Unix).])
1402
1403   dnl On Windows we must use setmode to change between binary and text
1404   dnl mode.  This probably doesn't really require two macro definitions
1405   AC_DEFINE(USE_SETMODE_STDOUT, 1,
1406 [Define if setmode is required when writing binary data to stdout.])
1407   AC_DEFINE(HAVE_SETMODE, 1,
1408 [Define if the diff library should use setmode for binary files.])
1409 fi
1410
1411 dnl associate the setting of the execute bit with the individual scripts
1412 AC_CONFIG_FILES(contrib/validate_repo, [chmod +x contrib/validate_repo])
1413 AC_CONFIG_FILES(contrib/clmerge, [chmod +x contrib/clmerge])
1414 AC_CONFIG_FILES(contrib/cln_hist, [chmod +x contrib/cln_hist])
1415 dnl AC_CONFIG_FILES(contrib/commit_prep, [chmod +x contrib/commit_prep])
1416 dnl AC_CONFIG_FILES(contrib/cvs_acls, [chmod +x contrib/cvs_acls])
1417 dnl AC_CONFIG_FILES(contrib/log, [chmod +x contrib/log])
1418 dnl AC_CONFIG_FILES(contrib/log_accum, [chmod +x contrib/log_accum])
1419 dnl AC_CONFIG_FILES(contrib/mfpipe, [chmod +x contrib/mfpipe])
1420 AC_CONFIG_FILES(contrib/pvcs2rcs, [chmod +x contrib/pvcs2rcs])
1421 AC_CONFIG_FILES(contrib/rcs2log:contrib/rcs2log.sh, [chmod +x contrib/rcs2log])
1422 dnl AC_CONFIG_FILES(contrib/rcslock, [chmod +x contrib/rcslock])
1423 AC_CONFIG_FILES(contrib/sccs2rcs, [chmod +x contrib/sccs2rcs])
1424 AC_CONFIG_FILES(doc/mkman:doc/mkman.pl, [chmod +x doc/mkman])
1425
1426 dnl the bulk files
1427 AC_CONFIG_FILES([Makefile \
1428           contrib/Makefile \
1429           diff/Makefile \
1430           doc/Makefile \
1431           lib/Makefile \
1432           man/Makefile \
1433           src/Makefile \
1434           src/sanity.config.sh \
1435 ])
1436
1437 dnl and we're done
1438 AC_OUTPUT
1439
1440
1441
1442 # Report the state of this version of CVS if this is from dev.
1443 m4_bmatch(m4_defn([AC_PACKAGE_VERSION]),  [[0-9]*\.[0-9]*\.[0-9]*\.[0-9]],
1444 [    cat <<EOF
1445
1446 You are about to use an unreleased version of CVS.  Be sure to
1447 read the relevant mailing lists, most importantly <info-cvs@nongnu.org>.
1448
1449 Below you will find information on the status of this version of CVS.
1450
1451
1452 EOF
1453     sed -n '/^\* Status/,$p' $srcdir/BUGS
1454 ])