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