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