1d3c6302c9ad4df9ff3db3a727d5cb5b37fd9dd8
[alioth/cvs.git] / configure.in
1 dnl $MirOS: src/gnu/usr.bin/cvs/configure.in,v 1.32 2017/08/12 19:17:28 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, 2017
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-0AB8.3],
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 WITH_EXTERNAL_ZLIB is external
502 LIBS="${LIBS:+$LIBS }-lz"
503
504 dnl
505 dnl begin --with-rsh
506 dnl
507 dnl Many sites no longer desire the use of "rsh" as the default
508 dnl remote shell program. They typically favor "ssh" as the default
509
510 # What remote shell transport should our client cvs default to using?
511 AC_ARG_WITH(
512   [rsh],
513   AC_HELP_STRING(
514     [--with-rsh],
515     [The default remote shell CVS will use for :ext: transport
516      (default ssh)]), ,
517   [with_rsh="ssh rsh"])
518
519 if test no = "$with_rsh"; then
520   AC_MSG_WARN([Failed to find usable remote shell. Using 'rsh'.])
521   with_rsh=rsh
522 elif test yes = "$with_rsh"; then
523   # Make --with-rsh mean the same thing as --with-rsh=rsh
524   with_rsh=rsh
525 fi
526
527 if echo $with_rsh |grep ^/ >/dev/null; then
528   # If $with_rsh is an absolute path, issue a warning if the executable
529   # doesn't exist or isn't usable, but then trust the user and use it
530   # regardless
531   with_default_rsh=$with_rsh
532   AC_MSG_CHECKING([for a remote shell])
533   if ! test -f $with_rsh \
534       || ! test -x $with_rsh; then
535     # warn the user that they may encounter problems
536     AC_MSG_WARN([$with_rsh is not a path to an executable file])
537   fi
538 else
539   # Search for a remote shell
540   AC_CHECK_PROGS([with_default_rsh], [$with_rsh], "rsh")
541 fi
542
543 AC_DEFINE_UNQUOTED(
544   [RSH_DFLT], ["$with_default_rsh"],
545   [The default remote shell to use, if one does not specify the
546    CVS_RSH environment variable.])
547 RSH_DFLT=$with_default_rsh
548 AC_SUBST(RSH_DFLT)
549 dnl done with finding a default CVS_RSH value
550 dnl
551 dnl end --with-rsh
552 dnl
553
554 dnl
555 dnl begin --with-editor
556 dnl
557 dnl Set the default editor to use for log messages
558 dnl
559
560 AC_ARG_VAR(
561   [EDITOR],
562   [The text editor CVS will use by default for log messages.])
563
564 # Let the confiscator request a specific editor
565 AC_ARG_WITH(
566   [editor],
567   AC_HELP_STRING(
568     [--with-editor],
569     [The default text editor CVS should use for log messages
570      (default autoselects)]), ,
571   [with_editor=yes])
572
573 # If --with-editor was supplied with an argument, let it override $EDITOR from
574 # the user's environment.  We need to unset EDITOR here because AC_CHECK_PROGS
575 # will let the value of EDITOR ride when it is set rather than searching.  We
576 # ignore the --without-editor case since it will be caught below.
577 if test -n "$EDITOR" && test yes != $with_editor; then
578   AS_UNSET([EDITOR])
579 fi
580
581 # Set the default when --with-editor wasn't supplied or when it was supplied
582 # without an argument.
583 if test yes = $with_editor; then
584   with_editor="vim vi emacs nano pico edit"
585 fi
586
587 if echo $with_editor |grep ^/ >/dev/null; then
588   # If $with_editor is an absolute path, issue a warning if the executable
589   # doesn't exist or isn't usable, but then trust the user and use it
590   # regardless
591   EDITOR=$with_editor
592   AC_MSG_CHECKING([for an editor])
593   AC_MSG_RESULT([$EDITOR])
594   if ! test -f $with_editor \
595       || ! test -x $with_editor; then
596     # warn the user that they may encounter problems
597     AC_MSG_WARN([\`$with_editor' is not a path to an executable file])
598   fi
599 elif test no != "${with_editor}"; then
600   # Search for an editor
601   AC_CHECK_PROGS([EDITOR], [$with_editor], [no])
602     if test no = "${EDITOR}"; then
603       AC_MSG_ERROR([
604     Failed to find a text file editor.  CVS cannot be compiled
605     without a default log message editor.  Searched for
606     \`$with_editor'.  Try \`configure --with-editor'.])
607     fi
608 else
609   AC_MSG_ERROR([
610     CVS cannot be compiled without a default log message editor.
611     Try \`configure --with-editor'.])
612 fi
613
614 dnl FIXME - Using --without-editor will probably break a compile at
615 dnl the moment, but maybe it is reasonable for someone to want to
616 dnl compile a CVS executable that refuses to run if no $EDITOR,
617 dnl $CVS_EDITOR, or -e option is specified?  Making a preliminary
618 dnl design decision in this direction, subject to discussion.
619 dnl
620 dnl Still don't know if the above would be useful, but we shouldn't
621 dnl be able to get here any longer without $EDITOR defined due to the
622 dnl error checking above.
623 AC_DEFINE_UNQUOTED(
624   [EDITOR_DFLT], ["$EDITOR"],
625   [The default editor to use, if one does not specify the "-e" option
626    to cvs, or does not have an EDITOR environment variable.  If this
627    is not set to an absolute path to an executable, use the shell to
628    find where the editor actually is.  This allows sites with
629    /usr/bin/vi or /usr/ucb/vi to work equally well (assuming that their
630    PATH is reasonable).])
631
632 dnl
633 dnl done finding an editor
634 dnl
635 dnl end --with-editor
636 dnl
637
638
639
640 dnl
641 dnl --with-hardcoded-pam-service-name
642 dnl
643 AC_ARG_WITH(
644   [hardcoded-pam-service-name],
645   AC_HELP_STRING(
646     [--with-hardcoded-pam-service-name],
647     [Use this to hard code a service name for PAM CVS authentication.  The
648      special name, `program_name', will cause CVS to use whatever name it
649      was invoked as as the service name.  (defaults to `cvs')]),,
650     [with_hardcoded_pam_service_name=cvs])
651
652 if test "x$with_hardcoded_pam_service_name" = xno ||
653    test "x$with_hardcoded_pam_service_name" = xprogram_name; then
654   AC_DEFINE([PAM_SERVICE_NAME], [program_name],
655     [Define to set a service name for PAM.  This must be defined.  Define to
656      `program_name', without the quotes, to use whatever name CVS was invoked
657       as.  Otherwise, define to a double-quoted literal string, such as
658       `"cvs"'.])
659 else
660   if test x"$with_hardcoded_pam_service_name" = xyes; then
661     with_hardcoded_pam_service_name=cvs
662   fi
663   AC_DEFINE_UNQUOTED([PAM_SERVICE_NAME], ["$with_hardcoded_pam_service_name"])
664 fi
665
666
667
668 dnl
669 dnl Find a temporary directory
670 dnl
671 AC_ARG_WITH(
672   [tmpdir],
673   AC_HELP_STRING(
674     [--with-tmpdir],
675     [The temporary directory CVS should use as a default
676      (default autoselects)]))
677
678 AC_MSG_CHECKING([for temporary directory])
679 if test -z "$with_tmpdir" || test yes = "$with_tmpdir"; then
680   for with_tmpdir in /tmp /var/tmp no; do
681     if test -d "$with_tmpdir" && test -x "$with_tmpdir" \
682         && test -w "$with_tmpdir" && test -r "$with_tmpdir"; then
683       break
684     fi
685   done
686   if test no = "$with_tmpdir"; then
687     AC_MSG_WARN([Failed to find usable temporary directory.  Using '/tmp'.])
688     with_tmpdir=/tmp
689   fi
690   AC_MSG_RESULT([$with_tmpdir])
691 elif ! echo "$with_tmpdir" |grep '^[[\\/]]'; then
692   AC_MSG_RESULT([$with_tmpdir])
693   AC_MSG_ERROR([--with-tmpdir requires an absolute path.])
694 elif ! test -d "$with_tmpdir" || ! test -x "$with_tmpdir" \
695         || ! test -w "$with_tmpdir" || ! test -r "$with_tmpdir"; then
696   AC_MSG_RESULT([$with_tmpdir])
697   AC_MSG_WARN(
698     [User supplied temporary directory ('$with_tmpdir') does not
699      exist or lacks sufficient permissions for read/write.])
700 fi
701
702 AC_DEFINE_UNQUOTED(
703   [TMPDIR_DFLT], ["$with_tmpdir"],
704   [Directory used for storing temporary files, if not overridden by
705    environment variables or the -T global option.  There should be little
706    need to change this (-T is a better mechanism if you need to use a
707    different directory for temporary files).])
708
709 dnl
710 dnl done finding tmpdir
711 dnl
712
713
714 dnl
715 dnl Get default umask
716 dnl
717
718 AC_ARG_WITH(
719   [umask],
720   AC_HELP_STRING(
721     [--with-umask],
722     [Set the umask CVS will use by default in the repository (default 002)]))
723
724 if test -z "$with_umask" || test yes = "$with_umask"; then
725   with_umask=002
726 elif test no = "$with_umask"; then
727   with_umask=000
728 fi
729
730 AC_DEFINE_UNQUOTED(
731   [UMASK_DFLT], [$with_umask],
732   [The default umask to use when creating or otherwise setting file or
733    directory permissions in the repository.  Must be a value in the
734    range of 0 through 0777.  For example, a value of 002 allows group
735    rwx access and world rx access; a value of 007 allows group rwx
736    access but no world access.  This value is overridden by the value
737    of the CVSUMASK environment variable, which is interpreted as an
738    octal number.])
739
740 dnl
741 dnl Done setting default umask
742 dnl
743
744 dnl
745 dnl Set CVS Administrator Group
746 dnl
747 AC_ARG_WITH(
748   [cvs-admin-group],
749   AC_HELP_STRING(
750     [--with-cvs-admin-group=GROUP],
751     [The CVS admin command is restricted to the members of this group.
752      If this group does not exist, all users are allowed to run CVS admin.
753      To disable the CVS admin command for all users, create an empty group
754      by specifying the --with-cvs-admin-group= option.  To disable access
755      control for CVS admin, run configure with the --without-cvs-admin-group
756      option. (default 'cvsadmin')]), ,
757   [with_cvs_admin_group=cvsadmin])
758
759 if test yes = "$with_cvs_admin_group"; then
760   with_cvs_admin_group=cvsadmin
761 fi
762 if test no != "$with_cvs_admin_group"; then
763   dnl FIXME We should warn if the group doesn't exist
764   AC_DEFINE_UNQUOTED(
765     [CVS_ADMIN_GROUP], ["$with_cvs_admin_group"],
766     [The CVS admin command is restricted to the members of the group
767      CVS_ADMIN_GROUP.  If this group does not exist, all users are
768      allowed to run CVS admin.  To disable the CVS admin command for
769      all users, create an empty CVS_ADMIN_GROUP by running configure
770      with the --with-cvs-admin-group= option.  To disable access control
771      for CVS admin, run configure with the --without-cvs-admin-group
772      option in order to comment out the define below.])
773 fi
774
775 dnl
776 dnl Done setting CVS Administrator Group
777 dnl
778
779 dnl
780 dnl Set the NDBM library to use.
781 dnl
782 dnl XXX - FIXME - FIXME - FIXME - XXX
783 dnl
784 dnl This is very bad.  It should really autodetect an appropriate NDBM library
785 dnl and, if it doesn't find one, decide to use MY_NDBM.  I'm am defining
786 dnl this here since this is no worse than it worked when it was in options.h
787 dnl and I am cleaning out options.h so that the Windows version of CVS will
788 dnl compile properly for the next release.
789 dnl
790 dnl That's why this option is in the --with-* section rather than the
791 dnl --enable-* section.
792 dnl
793 dnl XXX - FIXME - FIXME - FIXME - XXX
794 dnl
795 AC_ARG_ENABLE(
796   [cvs-ndbm],
797   AC_HELP_STRING(
798     [--enable-cvs-ndbm],
799     [Use the NDBM library distributed with CVS rather than attempting to use
800      a system NDBM library.  Disabling this may not work.  (default)]), ,
801   [enable_cvs_ndbm=yes])
802 if test no != "$enable_cvs_ndbm"; then
803   AC_DEFINE(
804     [MY_NDBM], [1],
805     [By default, CVS stores its modules and other such items in flat
806      text files (MY_NDBM enables this).  Turning off MY_NDBM causes CVS
807      to look for a system-supplied ndbm database library and use it
808      instead.  That may speed things up, but the default setting
809      generally works fine too.])
810 fi
811
812 dnl
813 dnl Done selecting NDBM library.
814 dnl
815
816
817
818 dnl
819 dnl end --with-*
820 dnl
821
822
823 dnl
824 dnl begin --enables
825 dnl
826
827
828 dnl
829 dnl begin --enable-client
830 dnl
831
832 # Check for options requesting client and server feature. If none are
833 # given and we have connect(), we want the full client & server arrangement.
834 AC_ARG_ENABLE(
835   [client],
836   AC_HELP_STRING(
837     [--enable-client],
838     [Include code for running as a remote client (default)]), ,
839   [enable_client=$ac_cv_search_connect])
840 if test no != "$enable_client"; then
841   AC_DEFINE(
842     [CLIENT_SUPPORT], [1],
843     [Define if you want CVS to be able to be a remote repository client.])
844 fi
845
846 dnl
847 dnl end --enable-client
848 dnl
849
850
851 dnl
852 dnl begin --enable-password-authenticated-client
853 dnl
854 AC_ARG_ENABLE(
855   [password-authenticated-client],
856   AC_HELP_STRING(
857     [--enable-password-authenticated-client],
858     [Enable pserver as a remote access method in the CVS client
859      (default)]), ,
860   [enable_password_authenticated_client=$enable_client])
861
862 if test xno != "x$enable_password_authenticated_client"; then
863   if test xno != "x$enable_client"; then
864     AC_DEFINE(
865       [AUTH_CLIENT_SUPPORT], [1],
866       [Enable AUTH_CLIENT_SUPPORT to enable pserver as a remote access
867        method in the CVS client (default)])
868   else
869     AC_MSG_WARN(
870       [--enable-password-authenticated-client is meaningless with
871        the CVS client disabled (--disable-client)])
872   fi
873 fi
874
875 dnl
876 dnl begin --enable-password-authenticated-client
877 dnl
878
879
880 dnl
881 dnl begin --enable-server
882 dnl
883
884 dnl
885 dnl Give the confiscator control over whether the server code is compiled
886 dnl
887 AC_ARG_ENABLE(
888   [server],
889   AC_HELP_STRING(
890     [--enable-server],
891     [Include code for running as a server (default)]), ,
892   [enable_server=$ac_cv_search_connect])
893
894 if test no != "$enable_server"; then
895   AC_DEFINE(
896     [SERVER_SUPPORT], [1],
897     [Define if you want CVS to be able to serve repositories to remote
898      clients.])
899
900   dnl
901   dnl The auth server needs to be able to check passwords against passwd
902   dnl file entries, so we only #define AUTH_SERVER_SUPPORT if we can
903   dnl find the crypt function. 
904   dnl
905   AC_SEARCH_LIBS(
906     [crypt], [crypt],
907     [AC_DEFINE(
908        [HAVE_CRYPT], [1],
909        [Define if you have the crypt function.])
910      AC_DEFINE(
911        [AUTH_SERVER_SUPPORT], [1],
912        [Define if you want to use the password authenticated server.])dnl
913   ])dnl AC_SEARCH_LIBS
914
915   dnl
916   dnl Allow the configurer to enable server flowcontrol.  Read the help
917   dnl strings below for a full explanation.
918   dnl
919   AC_ARG_ENABLE(
920     [server-flow-control],
921     AC_HELP_STRING(
922       [--enable-server-flow-control],
923       [If you are working with a large remote repository and a 'cvs
924        checkout' is swamping your network and memory, define these to
925        enable flow control.  You may optionally pass a low water mark
926        in bytes and a high water mark in bytes, separated by commas.
927        (default is enabled 1M,2M)]),
928     [if test yes = $enable_server_flow_control; then
929        enable_server_flow_control=1M,2M
930      fi],
931     [enable_server_flow_control=1M,2M])
932   if test no != $enable_server_flow_control; then
933     ccvs_lwm=`expr "$enable_server_flow_control" : '\(.*\),'`
934     ccvs_hwm=`expr "$enable_server_flow_control" : '.*,\(.*\)'`
935     ccvs_lwm_E=`expr "$ccvs_lwm" : '[[0-9]][[0-9]]*\(.*\)'`
936     ccvs_lwm=`expr "$ccvs_lwm" : '\([[0-9]][[0-9]]*\)'`
937     test "" != "$ccvs_lwm" || ccvs_lwm_E="?"
938     case $ccvs_lwm_E in
939         G) ccvs_lwm="$ccvs_lwm * 1024 * 1024 * 1024";;
940         M) ccvs_lwm="$ccvs_lwm * 1024 * 1024";;
941         k) ccvs_lwm="$ccvs_lwm * 1024";;
942         b | '') ;;
943         *) AC_MSG_ERROR([Can't parse argument to --enable-server-flow-control
944                         ('$enable_server_flow_control') as <lwm>,<hwm>])
945       esac
946     ccvs_hwm_E=`expr "$ccvs_hwm" : '[[0-9]][[0-9]]*\(.*\)'`
947     ccvs_hwm=`expr "$ccvs_hwm" : '\([[0-9]][[0-9]]*\).*'`
948     test "" != "$ccvs_hwm" || ccvs_hwm_E="?"
949     case $ccvs_hwm_E in
950         G) ccvs_hwm="$ccvs_hwm * 1024 * 1024 * 1024";;
951         M) ccvs_hwm="$ccvs_hwm * 1024 * 1024";;
952         k) ccvs_hwm="$ccvs_hwm * 1024";;
953         b | '') ccvs_hwm="$ccvs_hwm";;
954         *) AC_MSG_ERROR([Can't parse argument to --enable-server-flow-control
955                         ('$enable_server_flow_control') as <lwm>,<hwm>])
956       esac
957
958     AC_DEFINE(
959       [SERVER_FLOWCONTROL], [1],
960       [If you are working with a large remote repository and a 'cvs
961        checkout' is swamping your network and memory, define these to
962        enable flow control.  You will end up with even less probability of
963        a consistent checkout (see Concurrency in cvs.texinfo), but CVS
964        doesn't try to guarantee that anyway.  The master server process
965        will monitor how far it is getting behind, if it reaches the high
966        water mark, it will signal the child process to stop generating
967        data when convenient (ie: no locks are held, currently at the
968        beginning of a new directory).  Once the buffer has drained
969        sufficiently to reach the low water mark, it will be signalled to
970        start again.])
971     AC_DEFINE_UNQUOTED(
972       [SERVER_LO_WATER], [($ccvs_lwm)],
973       [The low water mark in bytes for server flow control.  Required if
974        SERVER_FLOWCONTROL is defined, and useless otherwise.])
975     AC_DEFINE_UNQUOTED(
976       [SERVER_HI_WATER], [($ccvs_hwm)],
977       [The high water mark in bytes for server flow control.  Required if
978        SERVER_FLOWCONTROL is defined, and useless otherwise.])
979   fi # enable_server_flow_control
980 fi # enable_server
981
982 dnl
983 dnl end --enable-server
984 dnl
985
986
987 dnl
988 dnl begin --enable-proxy
989 dnl
990
991 dnl
992 dnl Give the confiscator control over whether the proxy server code is compiled
993 dnl
994 AC_ARG_ENABLE(
995   [proxy],
996   AC_HELP_STRING(
997     [--enable-proxy],
998     [Include code for running as a transparent proxy server.  Disabling this
999      may produce a slight performance gain on some systems, at the expense of
1000      write proxy support. (default)]), ,
1001   [if test xno != "x$enable_client" && test xno != "x$enable_server"; then
1002      enable_proxy=yes
1003    else
1004      enable_proxy=no
1005    fi])
1006
1007 if test no != "$enable_proxy"; then
1008   if test xno = "x$enable_client" || test xno = "x$enable_server"; then
1009     AC_MSG_WARN(
1010       [--enable-proxy is meaningless when either the CVS client or the
1011        CVS server is disabled (--disable-client and --disable-server).])
1012   else
1013     AC_DEFINE(
1014       [PROXY_SUPPORT], [1],
1015       [Define if you want CVS to be able to serve as a transparent proxy for
1016        write operations.  Disabling this may produce a slight performance gain
1017        on some systems, at the expense of write proxy support.])
1018   fi
1019 fi
1020 dnl
1021 dnl end --enable-proxy
1022 dnl
1023
1024
1025 dnl
1026 dnl begin --enable-pam
1027 dnl
1028
1029 dnl
1030 dnl Check if PAM authentication is enabled
1031 dnl
1032 AC_ARG_ENABLE(
1033   [pam],
1034   AC_HELP_STRING(
1035     [--enable-pam],
1036     [Use to enable system authentication with PAM instead of using the 
1037     simple getpwnam interface.  This allows authentication (in theory) 
1038     with any PAM module, e.g. on systems with shadow passwords or via LDAP]), ,
1039   [enable_pam=no]
1040   )
1041
1042 if test yes = $enable_pam; then
1043   ac_pam_header_available=
1044
1045   AC_CHECK_HEADER([security/pam_appl.h], [
1046     AC_DEFINE([HAVE_SECURITY_PAM_APPL_H], 1, [Define to 1 if security/pam_appl.h is available])
1047     ac_pam_header_available=1])
1048
1049   if test -z "$ac_pam_header_available"; then
1050   AC_CHECK_HEADER([pam/pam_appl.h], [
1051     AC_DEFINE([HAVE_PAM_PAM_APPL_H], 1, [Define to 1 if pam/pam_appl.h is available])
1052     ac_pam_header_available=1])
1053   fi
1054
1055   if test -z "$ac_pam_header_available"; then
1056     AC_MSG_ERROR([Could not find PAM headers])
1057   else
1058     AC_DEFINE(HAVE_PAM, 1, 
1059     [Define to enable system authentication with PAM instead of using the 
1060     simple getpwnam interface.  This allows authentication (in theory) 
1061     with any PAM module, e.g. on systems with shadow passwords or via LDAP])
1062     AC_CHECK_LIB(pam, pam_start, [LIBS="${LIBS} -lpam"],
1063       AC_MSG_ERROR([Could not find PAM libraries but the headers exist.
1064       Give the --disable-pam option to compile without PAM support (or fix
1065       your broken configuration)])
1066     )
1067   fi
1068 fi
1069
1070 dnl
1071 dnl end --enable-pam
1072 dnl
1073
1074
1075 dnl
1076 dnl begin --enable-case-sensitivity
1077 dnl
1078
1079 AC_ARG_ENABLE(
1080   [case-sensitivity],
1081   AC_HELP_STRING(
1082     [--enable-case-sensitivity],
1083     [Force CVS to expect a case sensitive filesystem.  Enabling this on a case
1084      insensitive system should have little effect on the server or client
1085      operation, though client users may ocassionally be suprised that the CVS
1086      server appears to be case sensitive.  Disabling this for a case sensitive
1087      server disables server support for case insensitive clients, which can
1088      confuse all users of case insensitive clients contacting the server.
1089      Disabling this for a case sensitive client will cause the client to ask
1090      servers to behave case insensitively, which could cause confusion for
1091      users, but also probably no real harm.  (default autoselects based on the
1092      case sensitivity of the filesystem containing the current working
1093      directory)]),
1094     [case "$enable_case_sensitivity" in
1095        yes | no | auto) ;;
1096        *)
1097           AC_MSG_ERROR([Unrecognized argument to --enable-case-sensitivity: \`$enable_case_sensitivity'.  Acceptable values are \`yes', \`no', and \`auto'.])
1098           ;;
1099      esac],
1100   [enable_case_sensitivity=auto])
1101
1102 acx_forced=' (forced)'
1103 AC_MSG_CHECKING([for a case sensitive filesystem])
1104 if test $enable_case_sensitivity = auto; then
1105   dnl
1106   dnl Check for a case insensitive filesystem, like Mac OS X and Windows have.
1107   dnl
1108   AC_CACHE_VAL([acx_cv_case_sensitive],
1109   [ rm -f ac_TEST_filenames_CASE_sensitive
1110     echo foo >ac_test_filenames_case_sensitive
1111     if test -f ac_TEST_filenames_CASE_sensitive; then
1112       acx_cv_case_sensitive=no
1113     else
1114       acx_cv_case_sensitive=yes
1115     fi
1116     rm ac_test_filenames_case_sensitive
1117   ])
1118   enable_case_sensitivity=$acx_cv_case_sensitive
1119   acx_forced=
1120 fi
1121 AC_MSG_RESULT([$enable_case_sensitivity$acx_forced])
1122 if test $enable_case_sensitivity = no; then
1123   AC_DEFINE([FILENAMES_CASE_INSENSITIVE], [1],
1124             [Define if this executable will be running on case insensitive
1125              filesystems.  In the client case, this means that it will request
1126              that the server pretend to be case insensitive if it isn't
1127              already.])
1128   dnl Compile fncase.c (containing fncase() & fncmp()) to handle file name
1129   dnl comparisons on case insensitive filesystems.
1130   AC_LIBOBJ(fncase)
1131 fi
1132
1133 dnl
1134 dnl end --enable-case-sensitivity
1135 dnl
1136
1137
1138 dnl
1139 dnl begin --enable-encryption
1140 dnl
1141
1142 dnl
1143 dnl Use --enable-encryption to turn on encryption support, but ignore this
1144 dnl option unless either client or server is enabled.
1145 dnl
1146 AC_ARG_ENABLE(
1147   [encryption],
1148   AC_HELP_STRING(
1149     [--enable-encryption],
1150     [Enable encryption support (disabled by default)]), ,
1151   [enable_encryption=no])
1152 if test "x$enable_encryption" = xyes; then
1153   if test xno = "x$with_client" && test xno = "x$with_server"; then
1154     AC_MSG_WARN(
1155       [--enable-encryption is meaningless when neither the CVS client
1156        nor the CVS server is enabled (--disable-client and --disable-server).])
1157   else
1158     AC_DEFINE(
1159       [ENCRYPTION], [1],
1160       [Define to enable encryption support.])
1161   fi
1162 fi
1163
1164 dnl
1165 dnl end --enable-encryption
1166 dnl
1167
1168
1169 dnl
1170 dnl begin --enable-force-editor
1171 dnl
1172
1173 AC_ARG_ENABLE(
1174   [force-editor],
1175   AC_HELP_STRING(
1176     [--enable-force-editor],
1177     [When committing or importing files, you must enter a log message.
1178      Normally, you can do this either via the -m flag on the command
1179      line, the -F flag on the command line, or an editor will be started
1180      for you.  If you like to use logging templates (the rcsinfo file
1181      within the $CVSROOT/CVSROOT directory), you might want to force
1182      people to use the editor even if they specify a message with -m or
1183      -F.  --enable-force-editor will cause the -m or -F message to be
1184      appended to the temp file when the editor is started. (disabled
1185      by default)]), ,
1186   [enable_force_editor=no])
1187
1188 if test yes = "$enable_force_editor"; then
1189   AC_DEFINE(
1190     [FORCE_USE_EDITOR], [1],
1191     [When committing or importing files, you must enter a log message.
1192     Normally, you can do this either via the -m flag on the command
1193     line, the -F flag on the command line, or an editor will be started
1194     for you.  If you like to use logging templates (the rcsinfo file
1195     within the $CVSROOT/CVSROOT directory), you might want to force
1196     people to use the editor even if they specify a message with -m or
1197     -F.  Enabling FORCE_USE_EDITOR will cause the -m or -F message to be
1198     appended to the temp file when the editor is started.])
1199 fi
1200
1201 dnl
1202 dnl end --enable-force-editor
1203 dnl
1204
1205
1206 dnl
1207 dnl begin --enable-lock-compatibility
1208 dnl
1209
1210 # Check for options requesting client and server feature. If none are
1211 # given and we have connect(), we want the full client & server arrangement.
1212 AC_ARG_ENABLE(
1213   [lock-compatibility],
1214   AC_HELP_STRING(
1215     [--enable-lock-compatibility],
1216     [Include locking code which prevents versions of CVS earlier than 1.12.4
1217      directly accessing the same repositiory as this executable from ignoring
1218      this executable's promotable read locks.  If only CVS versions 1.12.4 and
1219      later will be accessing your repository directly (as a server or locally),
1220      you can safely disable this option in return for fewer disk accesses and a
1221      small speed increase.  Disabling this option when versions of CVS earlier
1222      than 1,12,4 _will_ be accessing your repository, however, is *VERY* *VERY*
1223      *VERY* dangerous and could result in data loss.  (enabled by default)]),,
1224   [enable_lock_compatibility=yes])
1225
1226 if test x$enable_lock_compatibility = xyes; then
1227   AC_DEFINE([LOCK_COMPATIBILITY], [1],
1228     [Define to include locking code which prevents versions of CVS earlier than
1229      1.12.4 directly accessing the same repositiory as this executable from
1230      ignoring this executable's promotable read locks.  If only CVS versions
1231      1.12.4 and later will be accessing your repository directly (as a server
1232      or locally), you can safely disable this option in return for fewer disk
1233      accesses and a small speed increase.  Disabling this option when versions
1234      of CVS earlier than 1,12,4 _will_ be accessing your repository, however,
1235      is *VERY* *VERY* *VERY* dangerous and could result in data loss.
1236
1237      As such, by default, CVS is compiled with this code enabled.  If you are
1238      sure you would like this code disabled, you can disable it by passing the
1239      "--disable-lock-compatibility" option to configure or by commenting out
1240      the lines below.])
1241 fi
1242
1243 dnl
1244 dnl end --enable-lock-compatibility
1245 dnl
1246
1247
1248 dnl
1249 dnl begin --enable-rootcommit
1250 dnl
1251
1252 dnl
1253 dnl I don't like this here, but I don't really like options.h, either.
1254 dnl Besides, this is causing some problems currently when compiling under
1255 dnl Windows and moving it here should avoid the issue (the wrong options.h
1256 dnl is being used).
1257 dnl
1258 dnl I don't like making this a runtime option either.  I think I just don't
1259 dnl like making it easy to get to, but putting it here goes along with the
1260 dnl Autoconf ideal.
1261 dnl
1262 AC_ARG_ENABLE(
1263   [rootcommit],
1264   AC_HELP_STRING(
1265     [--enable-rootcommit],
1266     [Allow the root user to commit files (disabled by default)]), ,
1267   [enable_rootcommit=no])
1268 if test "$enable_rootcommit" = no; then
1269   AC_DEFINE(
1270     [CVS_BADROOT], [1],
1271     [When committing a permanent change, CVS and RCS make a log entry of
1272      who committed the change.  If you are committing the change logged
1273      in as "root" (not under "su" or other root-priv giving program),
1274      CVS/RCS cannot determine who is actually making the change.
1275
1276      As such, by default, CVS prohibits changes committed by users
1277      logged in as "root".  You can disable checking by passing the
1278      "--enable-rootcommit" option to configure or by commenting out the
1279      lines below.])
1280 fi
1281
1282 dnl
1283 dnl end --enable-rootcommit
1284 dnl
1285
1286 dnl
1287 dnl begin --enable-old-info-support
1288 dnl
1289 AC_ARG_ENABLE(
1290   [old-info-support],
1291   AC_HELP_STRING(
1292     [--enable-old-info-format-support],
1293     [Enable support for the pre 1.12.1 *info scripting hook format strings.
1294      Disable this option for a smaller executable once your scripting
1295      hooks have been updated to use the new *info format strings (default).]), ,
1296   [enable_old_info_format_support=yes])
1297 if test "$enable_old_info_format_support" = yes; then
1298   AC_DEFINE(
1299     [SUPPORT_OLD_INFO_FMT_STRINGS], [1],
1300     [Enable support for the pre 1.12.1 *info scripting hook format strings.
1301      Disable this option for a smaller executable once your scripting
1302      hooks have been updated to use the new *info format strings by passing
1303      "--disable-old-info-format-support" option to configure or by commenting
1304      out the line below.])
1305 fi
1306
1307 dnl
1308 dnl end --enable-old-info-support
1309 dnl
1310
1311
1312 dnl
1313 dnl begin --enable-config-override
1314 dnl
1315
1316 AC_ARG_ENABLE(
1317   [config-override],
1318   AC_HELP_STRING(
1319     [--enable-config-override],
1320     [Set to a comma-separated list of paths to directories (designated by
1321      trailing `/') and files, specifies the path prefixes (for directories) and
1322      paths to files the CVS server commands will allow configuration to be read
1323      from.  Specify `--enable-config-override=no' to disable config file
1324      overrides completely and `--enable-config-override=/' or simply
1325      `--enable-config-override' to allow all paths.  (Defaults to
1326      `SYSCONFDIR/cvs.conf,SYSCONFDIR/cvs/')]),,
1327   [# $sysconfdir may still contain variable references.  By default, this will
1328    # be to $prefix, and $prefix won't be set to its default value until later.
1329    # Compromise without setting $prefix for the rest of the file.
1330    cvs_save_prefix=$prefix
1331    if test "X$prefix" = XNONE; then
1332      prefix=$ac_prefix_default
1333    fi
1334    eval enable_config_override=`echo $sysconfdir/cvs.conf,$sysconfdir/cvs/`
1335    prefix=$cvs_save_prefix])
1336
1337 if test x"$enable_config_override" = xyes; then
1338   enable_config_override=/
1339 fi
1340
1341 if test x"$enable_config_override" = xno; then :; else
1342   save_IFS=$IFS
1343   IFS=,
1344   arrayinit=""
1345   for path in $enable_config_override; do
1346     IFS=$save_IFS
1347     case "$path" in
1348       [[\\/$]]* | ?:[[\\/]]* )
1349         arrayinit="$arrayinit\"$path\", "
1350         ;;
1351       *)  AC_MSG_ERROR(
1352           [expected comma separated list of absolute directory
1353            names for --enable-config-override, or \`no', not:
1354            \`$enable_config_override'
1355            (\`$path' invalid.)]);;
1356     esac
1357   done
1358   arrayinit="${arrayinit}NULL"
1359
1360   AC_DEFINE_UNQUOTED(ALLOW_CONFIG_OVERRIDE, [$arrayinit],
1361     [Define this to a NULL terminated list of allowed path prefixes (for
1362      directories) and paths to files the CVS server will allow configuration to
1363      be read from when specified from the command line.])
1364 fi
1365
1366 dnl
1367 dnl end --enable-config-override
1368 dnl
1369
1370
1371
1372 dnl
1373 dnl end --enables
1374 dnl
1375
1376
1377
1378 dnl For the moment we will assume that all systems which have
1379 dnl the unixyness to run configure are unixy enough to do the
1380 dnl PreservePermissions stuff.  I have this sinking feeling that
1381 dnl things won't be that simple, before long.
1382 dnl AC_DEFINE(PRESERVE_PERMISSIONS_SUPPORT, 1,
1383 dnl [Define if this system supports chown(), link(), and friends.])
1384
1385 dnl On cygwin32, we configure like a Unix system, but we need some support
1386 dnl libraries.  We do this at the end so that the new libraries are added at
1387 dnl the end of LIBS.
1388 dnl
1389 dnl FIXME: We should be trying to meet the autoconf ideal of checking for
1390 dnl the properties of the system rather than the name of the os here.  In other
1391 dnl words, we should check the case sensitivty of the system and then for
1392 dnl the support functions we are using and which library we find them in.
1393 AC_CACHE_CHECK(for cygwin32, ccvs_cv_sys_cygwin32,
1394 [AC_TRY_COMPILE([], [return __CYGWIN32__;],
1395 ccvs_cv_sys_cygwin32=yes, ccvs_cv_sys_cygwin32=no)])
1396 if test $ccvs_cv_sys_cygwin32 = yes; then
1397   LIBS="$LIBS -ladvapi32"
1398
1399   dnl On Windows you can only change file times if you can write to
1400   dnl the file.  cygwin32 should really handle this for us, but as of
1401   dnl January 1998 it doesn't.
1402   AC_DEFINE(UTIME_EXPECTS_WRITABLE, 1,
1403 [Define if utime requires write access to the file (true on Windows,
1404 but not Unix).])
1405
1406   dnl On Windows we must use setmode to change between binary and text
1407   dnl mode.  This probably doesn't really require two macro definitions
1408   AC_DEFINE(USE_SETMODE_STDOUT, 1,
1409 [Define if setmode is required when writing binary data to stdout.])
1410   AC_DEFINE(HAVE_SETMODE, 1,
1411 [Define if the diff library should use setmode for binary files.])
1412 fi
1413
1414 dnl associate the setting of the execute bit with the individual scripts
1415 AC_CONFIG_FILES(contrib/validate_repo, [chmod +x contrib/validate_repo])
1416 AC_CONFIG_FILES(contrib/clmerge, [chmod +x contrib/clmerge])
1417 AC_CONFIG_FILES(contrib/cln_hist, [chmod +x contrib/cln_hist])
1418 dnl AC_CONFIG_FILES(contrib/commit_prep, [chmod +x contrib/commit_prep])
1419 dnl AC_CONFIG_FILES(contrib/cvs_acls, [chmod +x contrib/cvs_acls])
1420 dnl AC_CONFIG_FILES(contrib/log, [chmod +x contrib/log])
1421 dnl AC_CONFIG_FILES(contrib/log_accum, [chmod +x contrib/log_accum])
1422 dnl AC_CONFIG_FILES(contrib/mfpipe, [chmod +x contrib/mfpipe])
1423 AC_CONFIG_FILES(contrib/pvcs2rcs, [chmod +x contrib/pvcs2rcs])
1424 AC_CONFIG_FILES(contrib/rcs2log:contrib/rcs2log.sh, [chmod +x contrib/rcs2log])
1425 dnl AC_CONFIG_FILES(contrib/rcslock, [chmod +x contrib/rcslock])
1426 AC_CONFIG_FILES(contrib/sccs2rcs, [chmod +x contrib/sccs2rcs])
1427 AC_CONFIG_FILES(doc/mkman:doc/mkman.pl, [chmod +x doc/mkman])
1428
1429 dnl the bulk files
1430 AC_CONFIG_FILES([Makefile \
1431           contrib/Makefile \
1432           diff/Makefile \
1433           doc/Makefile \
1434           lib/Makefile \
1435           man/Makefile \
1436           src/Makefile \
1437           src/sanity.config.sh \
1438 ])
1439
1440 dnl and we're done
1441 AC_OUTPUT
1442
1443
1444
1445 # Report the state of this version of CVS if this is from dev.
1446 m4_bmatch(m4_defn([AC_PACKAGE_VERSION]),  [[0-9]*\.[0-9]*\.[0-9]*\.[0-9]],
1447 [    cat <<EOF
1448
1449 You are about to use an unreleased version of CVS.  Be sure to
1450 read the relevant mailing lists, most importantly <info-cvs@nongnu.org>.
1451
1452 Below you will find information on the status of this version of CVS.
1453
1454
1455 EOF
1456     sed -n '/^\* Status/,$p' $srcdir/BUGS
1457 ])