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