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