chiark / gitweb /
Remove redundant stuff.
[cfd] / aclocal.glob
1 dnl -*-fundamental-*-                                     *@--GLOB-HEADER--@*
2 dnl
3 dnl $Id: aclocal.glob,v 1.11 2001/01/20 12:03:08 mdw Exp $
4 dnl
5 dnl Common library of autoconf macros
6 dnl
7 dnl (c) 1997 Mark Wooding, except for macros and documentation where noted.
8 dnl
9
10 dnl----- Licensing notice ---------------------------------------------------
11 dnl
12 dnl This file is part of the Common Files Distribution (`common')
13 dnl 
14 dnl `Common' is free software; you can redistribute it and/or modify
15 dnl it under the terms of the GNU General Public License as published by
16 dnl the Free Software Foundation; either version 2 of the License, or
17 dnl (at your option) any later version.
18 dnl 
19 dnl `Common' is distributed in the hope that it will be useful,
20 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
21 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22 dnl GNU General Public License for more details.
23 dnl 
24 dnl You should have received a copy of the GNU General Public License
25 dnl along with `common'; if not, write to the Free Software Foundation,
26 dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27
28 dnl----- Revision history ---------------------------------------------------
29 dnl
30 dnl $Log: aclocal.glob,v $
31 dnl Revision 1.11  2001/01/20 12:03:08  mdw
32 dnl Remove redundant stuff.
33 dnl
34 dnl Revision 1.10  2000/10/14 16:32:15  mdw
35 dnl Fixes from upstream.
36 dnl
37 dnl Revision 1.9  2000/08/15 21:37:49  mdw
38 dnl New initialization macro for libraries, and a new base client macro for
39 dnl finding libraries with an appropriate version.
40 dnl
41 dnl Revision 1.8  1999/11/26 01:23:17  mdw
42 dnl And support for MXD (not yet released).
43 dnl
44 dnl Revision 1.7  1999/11/11 20:03:58  mdw
45 dnl Add support for mgLib too.
46 dnl
47 dnl Revision 1.6  1999/11/11 17:49:33  mdw
48 dnl New macros for configuring clients of mLib and Catacomb.
49 dnl
50 dnl Revision 1.5  1999/07/27 18:27:37  mdw
51 dnl Fix typo in header line for mdw_DECL_ENVIRON.
52 dnl
53 dnl Revision 1.4  1999/07/26 23:44:32  mdw
54 dnl Reorder and tidy documentation.
55 dnl
56 dnl Revision 1.3  1999/07/17 10:27:44  mdw
57 dnl More useful macros added.
58 dnl
59 dnl Revision 1.2  1999/05/13 22:57:23  mdw
60 dnl Change `-ise' to `-ize' throughout.
61 dnl
62 dnl Revision 1.1.1.1  1999/05/05 19:23:47  mdw
63 dnl New import.  The old CVS repository was lost in a disk disaster.
64 dnl
65
66 dnl----- Common files distribution --------------------------- *@--NOTICE--@*
67 dnl
68 dnl $Id: aclocal.glob,v 1.11 2001/01/20 12:03:08 mdw Exp $
69
70 dnl --- *@-AM_PROG_CC_STDC-@* ---
71 dnl
72 dnl Author:     Franc,ois Pinard
73 dnl
74 dnl Synopsis:   AM_PROG_CC_STDC
75 dnl
76 dnl Arguments:  ---
77 dnl
78 dnl Use:        If the C compiler in not in ANSI C mode by default, try to
79 dnl             add an option to output variable `CC' to make it so.  This
80 dnl             macro tries various options that select ANSI C on some system
81 dnl             or another.  It considers the compiler to be in ANSI C mode
82 dnl             if it defines `__STDC__' to 1 and handles function prototypes
83 dnl             correctly.
84 dnl
85 dnl             If you use this macro, you should check after calling it
86 dnl             whether the C compiler has been set to accept ANSI C; if not,
87 dnl             the shell variable `ac_cv_prog_cc_stdc' is set to `no'.  If
88 dnl             you wrote your source code in ANSI C, you can make an
89 dnl             un-ANSIfied copy of it by using the program `ansi2knr', which
90 dnl             comes with Ghostscript.
91 dnl
92 dnl                                     (documentation by Franc,ois Pinard)
93
94 AC_DEFUN(AM_PROG_CC_STDC,
95 [AC_REQUIRE([AC_PROG_CC])
96 AC_BEFORE([$0], [AC_C_INLINE])
97 AC_BEFORE([$0], [AC_C_CONST])
98 AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
99 AC_CACHE_VAL(am_cv_prog_cc_stdc,
100 [am_cv_prog_cc_stdc=no
101 ac_save_CC="$CC"
102 # Don't try gcc -ansi; that turns off useful extensions and
103 # breaks some systems' header files.
104 # AIX                   -qlanglvl=ansi
105 # Ultrix and OSF/1      -std1
106 # HP-UX                 -Aa -D_HPUX_SOURCE
107 # SVR4                  -Xc -D__EXTENSIONS__
108 for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
109 do
110   CC="$ac_save_CC $ac_arg"
111   AC_TRY_COMPILE(
112 [#if !defined(__STDC__) || __STDC__ != 1
113 choke me
114 #endif
115 /* DYNIX/ptx V4.1.3 can't compile sys/stat.h with -Xc -D__EXTENSIONS__. */
116 #ifdef _SEQUENT_
117 # include <sys/types.h>
118 # include <sys/stat.h>
119 #endif
120 ], [
121 int test (int i, double x);
122 struct s1 {int (*f) (int a);};
123 struct s2 {int (*f) (double a);};],
124 [am_cv_prog_cc_stdc="$ac_arg"; break])
125 done
126 CC="$ac_save_CC"
127 ])
128 if test -z "$am_cv_prog_cc_stdc"; then
129   AC_MSG_RESULT([none needed])
130 else
131   AC_MSG_RESULT($am_cv_prog_cc_stdc)
132 fi
133 case "x$am_cv_prog_cc_stdc" in
134   x|xno) ;;
135   *) CC="$CC $am_cv_prog_cc_stdc" ;;
136 esac
137 ])
138
139 dnl----- AutoMake macros ------------------------------------- *@--IGNORE--@*
140
141 dnl --- *@-AM_CONDITIONAL-@* ---
142 dnl
143 dnl Author:     Unknown
144 dnl
145 dnl Synopsis:   AM_CONDITIONAL(NAME, TEST)
146 dnl
147 dnl Arguments:  NAME = name of the conditional
148 dnl             TEST = a shell list to execute
149 dnl
150 dnl Use:        Allows conditional sections in Makefiles.
151
152 AC_DEFUN(AM_CONDITIONAL,
153 [AC_SUBST($1_TRUE)
154 AC_SUBST($1_FALSE)
155 if $2; then
156   $1_TRUE=
157   $1_FALSE='#'
158 else
159   $1_TRUE='#'
160   $1_FALSE=
161 fi])
162
163 dnl --- *@-AM_CYGWIN32-@* ---
164 dnl
165 dnl Author:     Cygnus (I guess)
166 dnl
167 dnl Synopsis:   AM_CYGWIN32
168 dnl
169 dnl Arguments:  ---
170 dnl
171 dnl Use:        Check to see if we're running under Cygwin32, without using
172 dnl             AC_CANONICAL_*.  If so, set output variable EXEEXT to
173 dnl             ".exe".  Otherwise set it to "".
174
175 dnl AM_CYGWIN32()
176 dnl You might think we can do this by checking for a cygwin32-specific
177 dnl cpp define.  We can't, because cross-compilers that target
178 dnl cygwin32 don't use the .exe suffix.  I don't know why.
179 AC_DEFUN(AM_CYGWIN32,
180 [AC_CACHE_CHECK(for Cygwin32 environment, am_cv_cygwin32,
181 [cat > conftest.$ac_ext << 'EOF'
182 int main () {
183 /* Nothing.  */
184 return 0; }
185 EOF
186 if AC_TRY_EVAL(ac_link) && test -s conftest.exe; then
187    am_cv_cygwin32=yes
188 else
189    am_cv_cygwin32=no
190 fi
191 rm -f conftest*])
192 EXEEXT=
193 test "$am_cv_cygwin32" = yes && EXEEXT=.exe
194 AC_SUBST(EXEEXT)])
195
196 dnl --- *@-AM_WITH_DMALLOC-@* ---
197 dnl
198 dnl Author:     Franc,ois Pinard
199 dnl
200 dnl Synopsis:   AM_WITH_DMALLOC
201 dnl
202 dnl Arguments:  ---
203 dnl
204 dnl Use:        Links with `-dmalloc' if told to by the user.
205
206 ## ----------------------------------- ##
207 ## Check if --with-dmalloc was given.  ##
208 ## From Franc,ois Pinard               ##
209 ## ----------------------------------- ##
210
211 # serial 1
212
213 AC_DEFUN(AM_WITH_DMALLOC,
214 [AC_MSG_CHECKING(if malloc debugging is wanted)
215 AC_ARG_WITH(dmalloc,
216 [  --with-dmalloc          use dmalloc, as in
217                           ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz],
218 [if test "$withval" = yes; then
219   AC_MSG_RESULT(yes)
220   AC_DEFINE(WITH_DMALLOC)
221   LIBS="$LIBS -ldmalloc"
222   LDFLAGS="$LDFLAGS -g"
223 else
224   AC_MSG_RESULT(no)
225 fi], [AC_MSG_RESULT(no)])
226 ])
227
228 dnl --- *@-AM_FUNC_ERROR_AT_LINE-@* ---
229 dnl
230 dnl Author:     Jim Meyering
231 dnl
232 dnl Synopsis:   AM_FUNC_ERROR_AT_LINE
233 dnl
234 dnl Arguments:  ---
235 dnl
236 dnl Use:        Use this if you use the GNU error.[ch].
237
238 dnl FIXME: Migrate into libit
239
240 AC_DEFUN(AM_FUNC_ERROR_AT_LINE,
241 [AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
242  [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");],
243               am_cv_lib_error_at_line=yes,
244               am_cv_lib_error_at_line=no)])
245  if test $am_cv_lib_error_at_line = no; then
246    LIBOBJS="$LIBOBJS error.o"
247  fi
248  AC_SUBST(LIBOBJS)dnl
249 ])
250
251 dnl --- *@-AM_INIT_GUILE_MODULE-@* ---
252 dnl
253 dnl Author:     Unknown
254 dnl
255 dnl Synopsis:   AM_INIT_GUILE_MODULE(MODNAME)
256 dnl
257 dnl Arguments:  MODNAME = value to initialize `module' variable with
258 dnl
259 dnl Use:        This macro will automatically get the guile version from the
260 dnl             top-level srcdir, and will initialize automake.  It also
261 dnl             defines the `module' variable.
262
263 AC_DEFUN([AM_INIT_GUILE_MODULE],[
264 . $srcdir/../GUILE-VERSION
265 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
266 AC_CONFIG_AUX_DIR(..)
267 module=[$1]
268 AC_SUBST(module)])
269
270 dnl --- *@-AM_CONFIG_HEADER-@* ---
271 dnl
272 dnl Author:     Unknown
273 dnl
274 dnl Synopsis:   AM_CONFIG_HEADER(HEADER ...)
275 dnl
276 dnl Arguments:  HEADER = a header spec, as for AC_CONFIG_HEADER
277 dnl
278 dnl Use:        Like AC_CONFIG_HEADER, but automatically create stamp file.
279
280 AC_DEFUN(AM_CONFIG_HEADER,
281 [AC_PREREQ([2.12])
282 AC_CONFIG_HEADER([$1])
283 dnl When config.status generates a header, we must update the stamp-h file.
284 dnl This file resides in the same directory as the config header
285 dnl that is generated.  We must strip everything past the first ":",
286 dnl and everything past the last "/".
287 AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
288 ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
289 <<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/
290 \)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
291 <<am_indx=1
292 for am_file in <<$1>>; do
293   case " <<$>>CONFIG_HEADERS " in
294   *" <<$>>am_file "*<<)>>
295     echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
296     ;;
297   esac
298   am_indx=`expr "<<$>>am_indx" + 1`
299 done<<>>dnl>>)
300 changequote([,]))])
301
302 dnl --- *@-AM_INIT_AUTOMAKE-@*
303 dnl
304 dnl Author:     Unknown
305 dnl
306 dnl Synopsis:   AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
307 dnl
308 dnl Arguments:  PACKAGE = package name
309 dnl             VERSION = version number
310 dnl             NO-DEFINE = if set, don't define package and version number
311 dnl
312 dnl Use:        Do all the work for Automake.  This macro actually does too
313 dnl             much -- some checks are only needed if your package does
314 dnl             certain things.  But this isn't really a big deal.
315
316 # serial 1
317
318 AC_DEFUN(AM_INIT_AUTOMAKE,
319 [AC_REQUIRE([AC_PROG_INSTALL])
320 PACKAGE=[$1]
321 AC_SUBST(PACKAGE)
322 VERSION=[$2]
323 AC_SUBST(VERSION)
324 dnl test to see if srcdir already configured
325 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
326   AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
327 fi
328 ifelse([$3],,
329 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
330 AC_DEFINE_UNQUOTED(VERSION, "$VERSION"))
331 AC_REQUIRE([AM_SANITY_CHECK])
332 AC_REQUIRE([AC_ARG_PROGRAM])
333 dnl FIXME This is truly gross.
334 missing_dir=`cd $ac_aux_dir && pwd`
335 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
336 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
337 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
338 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
339 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
340 AC_REQUIRE([AC_PROG_MAKE_SET])])
341
342 dnl --- *@-AM_PROG_LEX-@* ---
343 dnl
344 dnl Author:     Alexandre Oliva
345 dnl
346 dnl Synopsis:   AM_PROG_LEX
347 dnl
348 dnl Arguments:  ---
349 dnl
350 dnl Use:        Replacement for AC_PROG_LEX and AC_DECL_YYTEXT
351
352 dnl AM_PROG_LEX
353 dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT
354 AC_DEFUN(AM_PROG_LEX,
355 [missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1)
356 AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex")
357 AC_PROG_LEX
358 AC_DECL_YYTEXT])
359
360 dnl --- *@-AM_PROG_LIBTOOL-@* ---
361 dnl
362 dnl Author:     Unknown
363 dnl
364 dnl Synopsis:   AM_PROG_LIBTOOL
365 dnl
366 dnl Arguments:  ---
367 dnl
368 dnl Use:        Configures `libtool' for the target architecture.
369
370 ##
371 ## Configure libtool for the target system.
372 ##
373 # serial 1 AM_PROG_LIBTOOL
374 AC_DEFUN(AM_PROG_LIBTOOL,
375 [AC_REQUIRE([AC_CANONICAL_HOST])
376 AC_REQUIRE([AC_PROG_CC])
377 AC_REQUIRE([AC_PROG_RANLIB])
378
379 # Always use our own libtool.
380 LIBTOOL='$(top_builddir)/libtool'
381 AC_SUBST(LIBTOOL)
382
383 dnl Allow the --disable-shared flag to stop us from building shared libs.
384 AC_ARG_ENABLE(shared,
385 [  --enable-shared         build shared libraries [default=yes]],
386 test "$enableval" = no && libtool_shared=" --disable-shared",
387 libtool_shared=)
388
389 libtool_flags="$libtool_shared"
390 test "$silent" = yes && libtool_flags="$libtool_flags --silent"
391 test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
392
393 # Actually configure libtool.  ac_aux_dir is where install-sh is found.
394 CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" LD="$LD" RANLIB="$RANLIB" \
395 $ac_aux_dir/ltconfig $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
396 || AC_MSG_ERROR([libtool configure failed])
397 ])
398
399 dnl --- *@-AM_PATH_LISPDIR-@* ---
400 dnl
401 dnl Author:     Ulrich Drepper
402 dnl
403 dnl Synopsis:   AM_PATH_LISPDIR
404 dnl
405 dnl Arguments:  ---
406 dnl
407 dnl Use:        Sets the variable `lispdir' to point to a place to install
408 dnl             Emacs lisp files.
409
410 ## ------------------------
411 ## Emacs LISP file handling
412 ## From Ulrich Drepper
413 ## ------------------------
414
415 # serial 1
416
417 AC_DEFUN(AM_PATH_LISPDIR,
418  [# If set to t, that means we are running in a shell under Emacs.
419   # If you have an Emacs named "t", then use the full path.
420   test "$EMACS" = t && EMACS=
421   AC_PATH_PROG(EMACS, emacs xemacs, no)
422   if test $EMACS != "no"; then
423     AC_MSG_CHECKING([where .elc files should go])
424     dnl Set default value
425     lispdir="\$(datadir)/emacs/site-lisp"
426     if test "x$prefix" = "xNONE"; then
427       if test -d $ac_default_prefix/share/emacs/site-lisp; then
428         lispdir="\$(prefix)/share/emacs/site-lisp"
429       else
430         if test -d $ac_default_prefix/lib/emacs/site-lisp; then
431           lispdir="\$(prefix)/lib/emacs/site-lisp"
432         fi
433       fi
434     else
435       if test -d $prefix/share/emacs/site-lisp; then
436         lispdir="\$(prefix)/share/emacs/site-lisp"
437       else
438         if test -d $prefix/lib/emacs/site-lisp; then
439           lispdir="\$(prefix)/lib/emacs/site-lisp"
440         fi
441       fi
442     fi
443     AC_MSG_RESULT($lispdir)
444   fi
445   AC_SUBST(lispdir)])
446
447 dnl --- *@-AM_MAINTAINTER_MODE-@* ---
448 dnl
449 dnl Author:     Jim Meyering
450 dnl
451 dnl Synopsis:   jm_MAINTAINER_MODE
452 dnl
453 dnl Arguments:  ---
454 dnl
455 dnl Use:        Provides an option `--enable-maintainer-mode' which turns
456 dnl             on rules which might normally be commented out.  The
457 dnl             substitution variable `MAINT' is set to be a comment when
458 dnl             this option is disabled, which it is by default.
459
460 # serial 1
461
462 AC_DEFUN(AM_MAINTAINER_MODE,
463 [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
464   dnl maintainer-mode is disabled by default
465   AC_ARG_ENABLE(maintainer-mode,
466 [  --enable-maintainer-mode enable make rules and dependencies not useful
467                           (and sometimes confusing) to the casual installer],
468       USE_MAINTAINER_MODE=$enableval,
469       USE_MAINTAINER_MODE=no)
470   AC_MSG_RESULT($USE_MAINTAINER_MODE)
471   if test $USE_MAINTAINER_MODE = yes; then
472     MAINT=
473   else
474     MAINT='#M#'
475   fi
476   AC_SUBST(MAINT)dnl
477 ]
478 )
479
480 dnl --- *@-AM_MISSING_PROG-@* ---
481 dnl
482 dnl Author:     Unknown
483 dnl
484 dnl Synopsis:   AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
485 dnl
486 dnl Arguments:  NAME = variable to set to the file's location
487 dnl             PROGRAM = name of program to find
488 dnl             DIRECTORY = directory to look in
489 dnl
490 dnl Use:        Fakes existence of a useful GNU maintainer tool.
491
492 AC_DEFUN(AM_MISSING_PROG,
493 [AC_MSG_CHECKING(for working $2)
494 # Run test in a subshell; some versions of sh will print an error if
495 # an executable is not found, even if stderr is redirected.
496 # Redirect stdin to placate older versions of autoconf.  Sigh.
497 if ($2 --version) < /dev/null > /dev/null 2>&1; then
498    $1=$2
499    AC_MSG_RESULT(found)
500 else
501    $1="$3/missing $2"
502    AC_MSG_RESULT(missing)
503 fi
504 AC_SUBST($1)])
505
506 dnl --- *@-AM_FUNC_MKTIME-@* ---
507 dnl
508 dnl Author:     Jim Meyering
509 dnl
510 dnl Synopsis:   AM_FUNC_MKTIME
511 dnl
512 dnl Arguments:  ---
513 dnl
514 dnl Use:        Checks for a working mktime function.
515
516 AC_DEFUN(AM_FUNC_MKTIME,
517 [AC_REQUIRE([AC_HEADER_TIME])dnl
518  AC_CHECK_HEADERS(sys/time.h)
519  AC_CACHE_CHECK([for working mktime], am_cv_func_working_mktime,
520   [AC_TRY_RUN(
521 changequote(<<, >>)dnl
522 <</* Test program from Paul Eggert (eggert@twinsun.com)
523    and Tony Leneis (tony@plaza.ds.adp.com).  */
524 #if TIME_WITH_SYS_TIME
525 # include <sys/time.h>
526 # include <time.h>
527 #else
528 # if HAVE_SYS_TIME_H
529 #  include <sys/time.h>
530 # else
531 #  include <time.h>
532 # endif
533 #endif
534
535 static time_t time_t_max;
536
537 /* Values we'll use to set the TZ environment variable.  */
538 static const char *const tz_strings[] = {
539   NULL, "GMT0", "JST-9", "EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
540 };
541 #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
542
543 static void
544 mktime_test (now)
545      time_t now;
546 {
547   if (mktime (localtime (&now)) != now)
548     exit (1);
549   now = time_t_max - now;
550   if (mktime (localtime (&now)) != now)
551     exit (1);
552 }
553
554 int
555 main ()
556 {
557   time_t t, delta;
558   int i;
559
560   for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2)
561     continue;
562   time_t_max--;
563   delta = time_t_max / 997; /* a suitable prime number */
564   for (i = 0; i < N_STRINGS; i++)
565     {
566       if (tz_strings[i])
567         putenv (tz_strings[i]);
568
569       for (t = 0; t <= time_t_max - delta; t += delta)
570         mktime_test (t);
571       mktime_test ((time_t) 60 * 60);
572       mktime_test ((time_t) 60 * 60 * 24);
573     }
574   exit (0);
575 }
576               >>,
577 changequote([, ])dnl
578              am_cv_func_working_mktime=yes, am_cv_func_working_mktime=no,
579              dnl When crosscompiling, assume mktime is missing or broken.
580              am_cv_func_working_mktime=no)
581   ])
582   if test $am_cv_func_working_mktime = no; then
583     LIBOBJS="$LIBOBJS mktime.o"
584   fi
585 ])
586
587 dnl --- *@-AM_FUNC_OBSTACK-@* ---
588 dnl
589 dnl Author:     Jim Meyering
590 dnl
591 dnl Synopsis:   AM_FUNC_OBSTACK
592 dnl
593 dnl Arguments:  ---
594 dnl
595 dnl Use:        Checks for GNU obstacks.
596
597 AC_DEFUN(AM_FUNC_OBSTACK,
598 [AC_CACHE_CHECK([for obstacks], am_cv_func_obstack,
599  [AC_TRY_LINK([#include "obstack.h"],
600               [struct obstack *mem;obstack_free(mem,(char *) 0)],
601               am_cv_func_obstack=yes,
602               am_cv_func_obstack=no)])
603  if test $am_cv_func_obstack = yes; then
604    AC_DEFINE(HAVE_OBSTACK)
605  else
606    LIBOBJS="$LIBOBJS obstack.o"
607  fi
608 ])
609
610 dnl --- *@-AC_C_PROTOTYPES-@* ---
611 dnl
612 dnl Author:     Franc,ois Pinard
613 dnl
614 dnl Synopsis:   AC_C_PROTOTYPES
615 dnl
616 dnl Arguments:  ---
617 dnl
618 dnl Use:        If the C compiler understands ANSI C, define `PROTOTYPES',
619 dnl             and clear the `U' and `ANSI2KNR' variables.  Otherwise, 
620 dnl             set `U' to be `_' and `ANSI2KNR' to be `./ansi2knr'.
621
622 # serial 1
623
624 AC_DEFUN(fp_C_PROTOTYPES,
625 [AC_REQUIRE([AM_PROG_CC_STDC])
626 AC_MSG_CHECKING([for function prototypes])
627 if test "$ac_cv_prog_cc_stdc" != no; then
628   AC_MSG_RESULT(yes)
629   AC_DEFINE(PROTOTYPES)
630   U= ANSI2KNR=
631 else
632   AC_MSG_RESULT(no)
633   U=_ ANSI2KNR=./ansi2knr
634 fi
635 AC_SUBST(U)dnl
636 AC_SUBST(ANSI2KNR)dnl
637 ])
638
639 dnl --- *@-AM_PATH_GTK-@* ---
640 dnl
641 dnl Author:     Owen Taylor
642 dnl
643 dnl Synopsis:   AM_PATH_GTK(MIN-VERSION, [ACTION-IF-FOUND], [ACTION-IF-NOT])
644 dnl
645 dnl Arguments:  MIN-VERSION = minimum version of GTK required
646 dnl             ACTION-IF-FOUND = executed if GTK found OK
647 dnl             ACTION-IF-NOT-FOUND = what to do if GTK not available
648 dnl
649 dnl Use:        Sets up compilation environment suitably for GTK programming.
650
651 # Configure paths for GTK+
652 # Owen Taylor     97-11-3
653
654 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
655 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
656 dnl
657 AC_DEFUN(AM_PATH_GTK,
658 [dnl 
659 dnl Get the cflags and libraries from the gtk-config script
660 dnl
661 AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
662             gtk_config_prefix="$withval", gtk_config_prefix="")
663 AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
664             gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
665 AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
666                     , enable_gtktest=yes)
667
668   if test x$gtk_config_exec_prefix != x ; then
669      gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
670      if test x${GTK_CONFIG+set} != xset ; then
671         GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
672      fi
673   fi
674   if test x$gtk_config_prefix != x ; then
675      gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
676      if test x${GTK_CONFIG+set} != xset ; then
677         GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
678      fi
679   fi
680
681   AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
682   min_gtk_version=ifelse([$1], ,0.99.7,$1)
683   AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
684   no_gtk=""
685   if test "$GTK_CONFIG" = "no" ; then
686     no_gtk=yes
687   else
688     GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
689     GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
690     gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
691            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
692     gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
693            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
694     gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
695            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
696     if test "x$enable_gtktest" = "xyes" ; then
697       ac_save_CFLAGS="$CFLAGS"
698       ac_save_LIBS="$LIBS"
699       CFLAGS="$CFLAGS $GTK_CFLAGS"
700       LIBS="$LIBS $GTK_LIBS"
701 dnl
702 dnl Now check if the installed GTK is sufficiently new. (Also sanity
703 dnl checks the results of gtk-config to some extent
704 dnl
705       rm -f conf.gtktest
706       AC_TRY_RUN([
707 #include <gtk/gtk.h>
708 #include <stdio.h>
709
710 int 
711 main ()
712 {
713   int major, minor, micro;
714   char *tmp_version;
715
716   system ("touch conf.gtktest");
717
718   /* HP/UX 9 (%@#!) writes to sscanf strings */
719   tmp_version = g_strdup("$min_gtk_version");
720   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
721      printf("%s, bad version string\n", "$min_gtk_version");
722      exit(1);
723    }
724
725   if ((gtk_major_version != $gtk_config_major_version) ||
726       (gtk_minor_version != $gtk_config_minor_version) ||
727       (gtk_micro_version != $gtk_config_micro_version))
728     {
729       printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
730              $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
731              gtk_major_version, gtk_minor_version, gtk_micro_version);
732       printf ("*** was found! If gtk-config was correct, then it is best\n");
733       printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
734       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
735       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
736       printf("*** required on your system.\n");
737       printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
738       printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
739       printf("*** before re-running configure\n");
740     } 
741   else
742     {
743       if ((gtk_major_version > major) ||
744         ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
745         ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
746       {
747         return 0;
748        }
749      else
750       {
751         printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
752                gtk_major_version, gtk_minor_version, gtk_micro_version);
753         printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
754                major, minor, micro);
755         printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
756         printf("***\n");
757         printf("*** If you have already installed a sufficiently new version, this error\n");
758         printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
759         printf("*** being found. The easiest way to fix this is to remove the old version\n");
760         printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
761         printf("*** correct copy of gtk-config. (In this case, you will have to\n");
762         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
763         printf("*** so that the correct libraries are found at run-time))\n");
764       }
765     }
766   return 1;
767 }
768 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
769        CFLAGS="$ac_save_CFLAGS"
770        LIBS="$ac_save_LIBS"
771      fi
772   fi
773   if test "x$no_gtk" = x ; then
774      AC_MSG_RESULT(yes)
775      ifelse([$2], , :, [$2])     
776   else
777      AC_MSG_RESULT(no)
778      if test "$GTK_CONFIG" = "no" ; then
779        echo "*** The gtk-config script installed by GTK could not be found"
780        echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
781        echo "*** your path, or set the GTK_CONFIG environment variable to the"
782        echo "*** full path to gtk-config."
783      else
784        if test -f conf.gtktest ; then
785         :
786        else
787           echo "*** Could not run GTK test program, checking why..."
788           CFLAGS="$CFLAGS $GTK_CFLAGS"
789           LIBS="$LIBS $GTK_LIBS"
790           AC_TRY_LINK([
791 #include <gtk/gtk.h>
792 #include <stdio.h>
793 ],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
794         [ echo "*** The test program compiled, but did not run. This usually means"
795           echo "*** that the run-time linker is not finding GTK or finding the wrong"
796           echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
797           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
798           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
799           echo "*** is required on your system"
800           echo "***"
801           echo "*** If you have an old version installed, it is best to remove it, although"
802           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
803           echo "***"
804           echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
805           echo "*** came with the system with the command"
806           echo "***"
807           echo "***    rpm --erase --nodeps gtk gtk-devel" ],
808         [ echo "*** The test program failed to compile or link. See the file config.log for the"
809           echo "*** exact error that occured. This usually means GTK was incorrectly installed"
810           echo "*** or that you have moved GTK since it was installed. In the latter case, you"
811           echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
812           CFLAGS="$ac_save_CFLAGS"
813           LIBS="$ac_save_LIBS"
814        fi
815      fi
816      GTK_CFLAGS=""
817      GTK_LIBS=""
818      ifelse([$3], , :, [$3])
819   fi
820   AC_SUBST(GTK_CFLAGS)
821   AC_SUBST(GTK_LIBS)
822   rm -f conf.gtktest
823 ])
824
825 dnl --- *@-AC_TYPE_PTRDIFF_T-@* ---
826 dnl
827 dnl Author:     Ulrich Drepper
828 dnl
829 dnl Synopsis:   AC_TYPE_PTRDIFF_T
830 dnl
831 dnl Arguments:  ---
832 dnl
833 dnl Use:        Sets HAVE_PTRDIFF_T if the type exists.
834
835 AC_DEFUN(AM_TYPE_PTRDIFF_T,
836   [AC_CACHE_CHECK([for ptrdiff_t], am_cv_type_ptrdiff_t,
837      [AC_TRY_COMPILE([#include <stddef.h>], [ptrdiff_t p],
838                      am_cv_type_ptrdiff_t=yes, am_cv_type_ptrdiff_t=no)])
839    if test $am_cv_type_ptrdiff_t = yes; then
840      AC_DEFINE(HAVE_PTRDIFF_T)
841    fi
842 ])
843
844 dnl --- *@-AM_WITH_REGEX-@* ---
845 dnl
846 dnl Author:     Unknown (possibly Franc,ois Pinard)
847 dnl
848 dnl Synopsis:   AM_WITH_REGEX
849 dnl
850 dnl Arguments:  ---
851 dnl
852 dnl Use:
853 dnl             The idea is to distribute rx.[hc] and regex.[hc] together,
854 dnl             for a while.  The WITH_REGEX symbol (which should also be
855 dnl             documented in acconfig.h) is used to decide which of regex.h
856 dnl             or rx.h should be included in the application.  If
857 dnl             `./configure --with-regex' is given (the default), the
858 dnl             package will use gawk's regex.  If `./configure
859 dnl             --without-regex', a check is made to see if rx is already
860 dnl             installed, as with newer Linux'es.  If not found, the package
861 dnl             will use the rx from the distribution.  If found, the package
862 dnl             will use the system's rx which, on Linux at least, will
863 dnl             result in a smaller executable file.
864
865 AC_DEFUN(AM_WITH_REGEX,
866 [AC_MSG_CHECKING(which of GNU rx or gawk's regex is wanted)
867 AC_ARG_WITH(regex,
868 [  --without-regex         use GNU rx in lieu of gawk's regex for matching],
869 [test "$withval" = yes && am_with_regex=1],
870 [am_with_regex=1])
871 if test -n "$am_with_regex"; then
872   AC_MSG_RESULT(regex)
873   AC_DEFINE(WITH_REGEX)
874   AC_CACHE_CHECK([for GNU regex in libc], am_cv_gnu_regex,
875     AC_TRY_LINK([], [extern int re_max_failures; re_max_failures = 1],
876                 am_cv_gnu_regex=yes, am_cv_gnu_regex=no))
877   if test $am_cv_gnu_regex = no; then
878     LIBOBJS="$LIBOBJS regex.o"
879   fi
880 else
881   AC_MSG_RESULT(rx)
882   AC_CHECK_FUNC(re_rx_search, , [LIBOBJS="$LIBOBJS rx.o"])
883 fi
884 AC_SUBST(LIBOBJS)dnl
885 ])
886
887 dnl --- *@-AM_SANITY_CHECK-@*
888 dnl
889 dnl Author:     Unknown
890 dnl
891 dnl Synopsis:   AM_SANITY_CHECK
892 dnl
893 dnl Arguments:  ---
894 dnl
895 dnl Use:        Check for build environment sanity.
896
897 AC_DEFUN(AM_SANITY_CHECK,
898 [AC_MSG_CHECKING([whether build environment is sane])
899 # Just in case
900 sleep 1
901 echo timestamp > conftestfile
902 # Do `set' in a subshell so we don't clobber the current shell's
903 # arguments.  Must try -L first in case configure is actually a
904 # symlink; some systems play weird games with the mod time of symlinks
905 # (eg FreeBSD returns the mod time of the symlink's containing
906 # directory).
907 if (
908    set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
909    if test "$@" = "X"; then
910       # -L didn't work.
911       set X `ls -t $srcdir/configure conftestfile`
912    fi
913    test "[$]2" = conftestfile
914    )
915 then
916    # Ok.
917    :
918 else
919    AC_MSG_ERROR([newly created file is older than distributed files!
920 Check your system clock])
921 fi
922 rm -f conftest*
923 AC_MSG_RESULT(yes)])
924
925 dnl --- *@-AM_FUNC_STRDOD-@* ---
926 dnl
927 dnl Author:     Jim Meyering
928 dnl
929 dnl Synopsis:   AM_FUNC_STRTOD
930 dnl
931 dnl Arguments:  ---
932 dnl
933 dnl Use:        Checks for a working strtod function.
934
935 ## Copyright (C) 1996 Free Software Foundation, Inc.
936
937 ## This program is free software; you can redistribute it and/or modify
938 ## it under the terms of the GNU General Public License as published by
939 ## the Free Software Foundation; either version 2, or (at your option)
940 ## any later version.
941
942 ## This program is distributed in the hope that it will be useful,
943 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
944 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
945 ## GNU General Public License for more details.
946
947 ## You should have received a copy of the GNU General Public License
948 ## along with this program; if not, write to the Free Software
949 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
950 ## 02111-1307, USA.
951
952 ## From Jim Meyering.
953
954 ## serial 1
955
956 ## @defmac AC_FUNC_STRTOD
957 ## @maindex FUNC_STRTOD
958 ## @ovindex LIBOBJS
959 ## If the @code{strtod} function is not available, or does not work
960 ## correctly (like the one on SunOS 5.4), add @samp{strtod.o} to output
961 ## variable @code{LIBOBJS}.
962 ## @end defmac
963
964 AC_DEFUN(AM_FUNC_STRTOD,
965 [AC_CACHE_CHECK(for working strtod, am_cv_func_strtod,
966 [AC_TRY_RUN([
967 double strtod ();
968 int
969 main()
970 {
971   {
972     /* Some versions of Linux strtod mis-parse strings with leading '+'.  */
973     char *string = " +69";
974     char *term;
975     double value;
976     value = strtod (string, &term);
977     if (value != 69 || term != (string + 4))
978       exit (1);
979   }
980
981   {
982     /* Under Solaris 2.4, strtod returns the wrong value for the
983        terminating character under some conditions.  */
984     char *string = "NaN";
985     char *term;
986     strtod (string, &term);
987     if (term != string && *(term - 1) == 0)
988       exit (1);
989   }
990   exit (0);
991 }
992 ], am_cv_func_strtod=yes, am_cv_func_strtod=no, am_cv_func_strtod=no)])
993 test $am_cv_func_strtod = no && LIBOBJS="$LIBOBJS strtod.o"
994 AC_SUBST(LIBOBJS)dnl
995 am_cv_func_strtod_needs_libm=no
996 if test $am_cv_func_strtod = no; then
997   AC_CHECK_FUNCS(pow)
998   if test $ac_cv_func_pow = no; then
999     AC_CHECK_LIB(m, pow, [am_cv_func_strtod_needs_libm=yes],
1000                  [AC_MSG_WARN(can't find library containing definition of pow)])
1001   fi
1002 fi
1003 ])
1004
1005 dnl --- *@-AM_SYS_POSIX_TERMIOS-@* ---
1006 dnl
1007 dnl Author:     Jim Meyering
1008 dnl
1009 dnl Synopsis:   AM_SYS_POSIX_TERMIOS
1010 dnl
1011 dnl Arguments:  ---
1012 dnl
1013 dnl Use:        Checks for a POSIX termios.h.
1014
1015 AC_DEFUN(AM_SYS_POSIX_TERMIOS,
1016 [AC_CACHE_CHECK([POSIX termios], am_cv_sys_posix_termios,
1017   [AC_TRY_LINK([#include <sys/types.h>
1018 #include <unistd.h>
1019 #include <termios.h>],
1020   [/* SunOS 4.0.3 has termios.h but not the library calls.  */
1021    tcgetattr(0, 0);],
1022   am_cv_sys_posix_termios=yes,
1023   am_cv_sys_posix_termios=no)])
1024 ])
1025
1026 dnl----- Macros by Mark Wooding ------------------------------ *@--IGNORE--@*
1027
1028 dnl --- *@-mdw_REQUIRE-@* ---
1029 dnl
1030 dnl Author:     Mark Wooding
1031 dnl
1032 dnl Synopsis:   mdw_REQUIRE(MACRO, ARGS...)
1033 dnl
1034 dnl Arguments:  MACRO = name of a macro which should have been called
1035 dnl             ARGS = arguments to pass
1036 dnl
1037 dnl Use:        Like `AC_REQUIRE', only it handles arguments.
1038
1039 AC_DEFUN(mdw_REQUIRE,
1040 [ifdef([AC_PROVIDE_$1], ,
1041 [AC_DIVERT_PUSH(builtin(eval, AC_DIVERSION_CURRENT - 1))dnl
1042 indir($@)
1043 AC_DIVERT_POP()dnl
1044 ])])
1045
1046 dnl --- *@-mdw_CURSES-@* ---
1047 dnl
1048 dnl Author:     Mark Wooding
1049 dnl
1050 dnl Synopsis:   mdw_CURSES
1051 dnl
1052 dnl Arguments:  ---
1053 dnl
1054 dnl Use:        Searches for a `curses' library (one of `ncurses' or
1055 dnl             `curses') using mdw_CHECK_MANYLIBS.  If one is found, the
1056 dnl             preprocessor macro HAVE_CURSES is defined, and a search is
1057 dnl             made for a `curses' header file (one of <ncurses.h>,
1058 dnl             <ncurses/ncurses.h> or <curses.h>) using AC_CHECK_HEADERS
1059 dnl             and the appropriate preprocessor symbol is defined.
1060 dnl             Finally, a check is made for the function `wresize' using
1061 dnl             AC_CHECK_FUNCS.
1062
1063 AC_DEFUN(mdw_CURSES,
1064 [mdw_CHECK_MANYLIBS(newwin, ncurses curses, AC_DEFINE(HAVE_CURSES))
1065 if test $mdw_cv_lib_newwin != no; then
1066 AC_CHECK_HEADERS([ncurses.h ncurses/ncurses.h curses.h], [break])
1067 if test "$ac_cv_header_ncurses_h" = "no" &&
1068    test "$ac_cv_header_ncurses_ncurses_h" = "no" &&
1069    test "$ac_cv_header_curses_h" = "no"; then
1070      AC_MSG_WARN([couldn't find a \`curses' header.  Assuming \`curses.h'.])
1071      AC_DEFINE(HAVE_CURSES_H)
1072 fi
1073 AC_CHECK_FUNCS(wresize)
1074 fi])
1075
1076 dnl --- *@-mdw_TYPE_SSIZE_T-@* ---
1077 dnl
1078 dnl Author:     Mark Wooding
1079 dnl
1080 dnl Synopsis:   mdw_TYPE_SSIZE_T
1081 dnl
1082 dnl Arguments:  ---
1083 dnl
1084 dnl Use:        Checks whether the Posix type `ssize_t' is defined.  If not,
1085 dnl             it defaults to `int'.
1086
1087 AC_DEFUN(mdw_TYPE_SSIZE_T,
1088 [AC_REQUIRE([AC_HEADER_STDC])
1089 AC_CACHE_CHECK(for ssize_t, mdw_cv_ssize_t,
1090 [AC_EGREP_CPP(ssize_t,
1091 [#include <sys/types.h>
1092 #if HAVE_UNISTD_H
1093 #include <unistd.h>
1094 #endif
1095 #if STDC_HEADERS
1096 #include <stdlib.h>
1097 #include <stddef.h>
1098 #endif],
1099 [mdw_cv_ssize_t=yes], [mdw_cv_ssize_t=no])])
1100 if test $mdw_cv_ssize_t = no; then
1101   AC_DEFINE(ssize_t, int)
1102 fi])
1103
1104 dnl --- *@-mdw_DECL_ENVIRON-@* ---
1105 dnl
1106 dnl Author:     Mark Wooding
1107 dnl
1108 dnl Synopsis:   mdw_DECL_ENVIRON
1109 dnl
1110 dnl Arguments:  ---
1111 dnl
1112 dnl Use:        Searches for a declaration of the global `environ' variable.
1113 dnl             If one is found in one of the `usual' places, DECL_ENVIRON
1114 dnl             is defined as a preprocessor symbol.
1115
1116 AC_DEFUN(mdw_DECL_ENVIRON,
1117 [AC_CACHE_CHECK([for declaration of \`environ'], mdw_cv_environ,
1118 [AC_EGREP_CPP(environ, 
1119 [#include <sys/types.h>
1120 #if HAVE_UNISTD_H
1121 #include <unistd.h>
1122 #endif
1123 #if STDC_HEADERS
1124 #include <stdlib.h>
1125 #include <stddef.h>
1126 #endif], [mdw_cv_environ=yes], [mdw_cv_environ=no])])
1127 if test $mdw_cv_environ = yes; then
1128   AC_DEFINE(DECL_ENVIRON)
1129 fi])
1130
1131 dnl --- *@-mdw_CHECK_MANYLIBS-@* ---
1132 dnl
1133 dnl Author:     Mark Wooding
1134 dnl
1135 dnl Synopsis:   mdw_CHECK_MANYLIBS(FUNC, LIBS, [IF-FOUND], [IF-NOT-FOUND],
1136 dnl                     [INCLUDES], [ARGS])
1137 dnl
1138 dnl Arguments:  FUNC = a function to try to find
1139 dnl             LIBS = a whitespace-separated list of libraries to search
1140 dnl             IF-FOUND = what to do when the function is found
1141 dnl             IF-NOT-FOUND = what to do when the function isn't found
1142 dnl             INCLUDES = other include files to add
1143 dnl             ARGS = arguments to pass the function
1144 dnl
1145 dnl Use:        Searches for a library which defines FUNC.  It first tries
1146 dnl             without any libraries; then it tries each library specified
1147 dnl             in LIBS in turn.  If it finds a match, it adds the
1148 dnl             appropriate library to `LIBS'.
1149 dnl
1150 dnl             This is particularly handy under DIREIX: if you link with
1151 dnl             `-lnsl' then you get non-NIS-aware versions of getpwnam and
1152 dnl             so on, which is clearly a Bad Thing.
1153
1154 AC_DEFUN(mdw_CHECK_MANYLIBS,
1155 [AC_CACHE_CHECK([for library containing $1], [mdw_cv_lib_$1],
1156 [mdw_save_LIBS="$LIBS"
1157 mdw_cv_lib_$1="no"
1158 AC_TRY_LINK([$5], [$1($6)], [mdw_cv_lib_$1="none required"])
1159 test "$mdw_cv_lib_$1" = "no" && for i in $2; do
1160 LIBS="-l$i $mdw_save_LIBS"
1161 AC_TRY_LINK([$5], [$1($6)],
1162 [mdw_cv_lib_$1="-l$i"
1163 break])
1164 done
1165 LIBS="$mdw_save_LIBS"])
1166 if test "$mdw_cv_lib_$1" != "no"; then
1167   test "$mdw_cv_lib_$1" = "none required" || LIBS="$mdw_cv_lib_$1 $LIBS"
1168   $3
1169 else :
1170   $4
1171 fi])
1172
1173 dnl --- *@-mdw__PERL_VERSION-@* ---
1174 dnl
1175 dnl AC_DEFUN relies on `[', `]' being quotes, so I have to drop down a level.
1176
1177 changequote(<<, >>)
1178 define(mdw__PERL_VERSION, <<$1 -e 'exit ($] < $2);' >&5 2>&5>>)
1179 changequote([, ])
1180
1181 dnl --- *@-mdw_PROG_PERL-@* ---
1182 dnl
1183 dnl Author:     Mark Wooding
1184 dnl
1185 dnl Synopsis:   mdw_PROG_PERL(VERSION, [IF-FOUND], [IF-NOT-FOUND])
1186 dnl
1187 dnl Arguments:  VERSION = version number of Perl required
1188 dnl             IF-FOUND = what to do if it's found
1189 dnl             IF-NOT-FOUND = what to do if it isn't
1190 dnl
1191 dnl Use:        Attempts to find a working version of Perl with a late
1192 dnl             enough version number.  It supplies an option `--with-perl'
1193 dnl             to allow the user to provide a Perl interpreter.  If one
1194 dnl             isn't provided explicitly, it searches for `perl' and `perl5'
1195 dnl             in the current PATH, asking them whether they have a late
1196 dnl             enough version number.  The path of the working Perl is
1197 dnl             put into the `PERL' environment variable; `AC_SUBST' is used
1198 dnl             to substitute its value into Perl scripts.  If there is no
1199 dnl             Perl to be found, the value of `PERL' is set to be `none'.
1200
1201 AC_DEFUN(mdw_PROG_PERL,
1202 [AC_ARG_WITH([perl],
1203 [  --with-perl=PERL       specify path to Perl version $1 or newer],
1204 [PERL="$withval"],
1205 if test -z "$PERL"; then
1206 [AC_CACHE_CHECK([for Perl version $1 or later], mdw_cv_prog_perl,
1207 [mdw_cv_prog_perl="none"
1208 for p in `echo "$PATH:/usr/local/bin" | tr ":" " "`; do
1209   case $p in /*) ;; *) p=`pwd`/$p ;; esac
1210   if mdw__PERL_VERSION(["$p/perl"], $1); then
1211     mdw_cv_prog_perl="$p/perl"
1212     break
1213   fi
1214   if mdw__PERL_VERSION(["$p/perl5"], $1); then
1215     mdw_cv_prog_perl="$p/perl5"
1216     break
1217   fi
1218 done])
1219 PERL="$mdw_cv_prog_perl"])
1220 fi
1221
1222 AC_SUBST(PERL)dnl
1223 if test "$PERL" = "none"; then :
1224   $3
1225 else :
1226   $2
1227 fi])
1228
1229 dnl --- *@-mdw_CHECK_PERL-@* ---
1230 dnl
1231 dnl Author:     Mark Wooding
1232 dnl
1233 dnl Synopsis:   mdw_CHECK_PERL(VERSION)
1234 dnl
1235 dnl Arguments:  VERSION = version number of Perl required
1236 dnl
1237 dnl Use:        Verifies that the Perl interpreter in the `PERL' shell
1238 dnl             variable actually works and is of the right version.  If it's
1239 dnl             not, an error is raised and configuration is aborted.
1240
1241 AC_DEFUN(mdw_CHECK_PERL,
1242 [mdw_REQUIRE([mdw_PROG_PERL], [$1])
1243 AC_MSG_CHECKING([whether Perl ($PERL) works])
1244 if test "$PERL" != "none" && mdw__PERL_VERSION("$PERL", $1); then
1245   AC_MSG_RESULT([yes])
1246 else
1247   AC_MSG_RESULT([no])
1248   AC_MSG_ERROR([Perl version $1 or newer not found.
1249 If you have a recent enough Perl, and I just failed to find it, try using
1250 the --with-perl=PERL option to give me an explicit pathname.])
1251 fi])
1252
1253 dnl --- *@-mdw_PERLLIB_CHECK-@* ---
1254 dnl
1255 dnl Author:     Mark Wooding
1256 dnl
1257 dnl Synopsis:   mdw_PERLLIB_CHECK(LIBRARY)
1258 dnl
1259 dnl Arguments:  LIBRARY = name of a Perl library to check for
1260 dnl
1261 dnl Use:        Ensures that a Perl script can `use LIBRARY;'.  If it can,
1262 dnl             all's well and good; if it can't, `LIBRARY.pm' is added to
1263 dnl             the variable `NEEDED_PERLLIBS' and a line which adds 
1264 dnl             `pkgdatadir' to Perl's `@INC' array is placed in the
1265 dnl             variable `INC_PERLLIBS'; `AC_SUBST' is called for both of
1266 dnl             these variables.  It's expected that `NEEDED_PERLLIBS' will
1267 dnl             be used in the `Makefile.in' to decide which versions from
1268 dnl             the distribution need installing.
1269 dnl
1270 dnl             This macro isn't terribly useful in the general case.  It
1271 dnl             Also implicitly assumes that `$PERL' is Perl 5 or later.
1272
1273 AC_DEFUN(mdw__PERLLIB_INIT,
1274 [AC_SUBST(INC_PERLLIBS)dnl
1275 AC_SUBST(NEEDED_PERLLIBS)dnl
1276 ])
1277
1278 AC_DEFUN(mdw_PERLLIB_CHECK,
1279 [AC_REQUIRE([mdw__PERLLIB_INIT])
1280 mdw_REQUIRE([mdw_CHECK_PERL], 5)
1281 AC_CACHE_CHECK([for Perl library $1], mdw_cv_perllib_$1,
1282 [if $PERL -e 'use $1;' >&5 2>&5; then
1283   mdw_cv_perllib_$1="yes"
1284 else
1285   mdw_cv_perllib_$1="no"
1286 fi])
1287
1288 if test "$mdw_cv_perllib_$1" = "no"; then
1289   NEEDED_PERLLIBS="$NEEDED_PERLLIBS $1.pm"
1290
1291   # --- Deal with autoconf lossage ---
1292   #
1293   # It doesn't want to define `prefix' until rather later on, so I have
1294   # to bodge it here.
1295
1296   if test -z "$INC_PERLLIBS"; then
1297     mdw_old_prefix="$prefix"
1298     test "$prefix" = "NONE" && prefix="$ac_default_prefix";
1299     INC_PERLLIBS="BEGIN { push @INC, \"`eval echo $datadir/$PACKAGE`\"; }"
1300     prefix="$mdw_old_prefix";
1301   fi
1302 fi])
1303
1304 dnl --- *@-mdw_GCC_FLAGS-@* ---
1305 dnl
1306 dnl Author:     Mark Wooding
1307 dnl
1308 dnl Synopsis:   mdw_GCC_FLAGS([FLAGS], [CFLAGS], [C++FLAGS])
1309 dnl
1310 dnl Arguments:  FLAGS = GCC compiler flags to add (default is 
1311 dnl                     `-pedantic -Wall')
1312 dnl             CFLAGS = GCC C compiler flags to add (default is empty)
1313 dnl             C++FLAGS = GCC C++ compiler flags to add (default is
1314 dnl                     `-fhandle-exceptions').
1315 dnl
1316 dnl Use:        If the C compiler is GCC, add the compiler flags.
1317
1318 AC_DEFUN(mdw_GCC_FLAGS,
1319 [if test "$GCC" = "yes"; then
1320   CFLAGS="$CFLAGS ifelse([$1], [], [-pedantic -Wall], [$1])"
1321   CFLAGS="$CFLAGS ifelse([$2], [], [], [$2])"
1322 fi
1323 if test "$GXX" = "yes"; then
1324   CXXFLAGS="$CXXFLAGS ifelse([$1], [], [-pedantic -Wall], [$1])"
1325   CXXFLAGS="$CXXFLAGS ifelse([$3], [], [-fhandle-exceptions], [$3])"
1326 fi])
1327
1328 dnl *@-mdw_INIT_LIB-@*
1329 dnl
1330 dnl Author:     Mark Wooding
1331 dnl
1332 dnl Synopsis:   mdw_INIT_LIB(LIB, NAME, VERSION, [PACKAGE])
1333 dnl
1334 dnl Arguments:  LIB = the name of the library (and the package)
1335 dnl             NAME = a presentable version of the library's name
1336 dnl             VERSION = version of the library
1337 dnl             PACKAGE = package name to pass on to AM_INIT_AUTOMAKE
1338 dnl
1339 dnl Use:        Sets up various useful variables.  This macro calls
1340 dnl             AM_INIT_AUTOMAKE, which might be considered useful.  It also
1341 dnl             provides variables for the use of `lib-config.in'.
1342
1343 AC_DEFUN([mdw_INIT_LIB],
1344 [AM_INIT_AUTOMAKE(ifelse([$4], [], [$1], [$4]), [$3])
1345 LIBRARY="$1" AC_SUBST(LIBRARY)
1346 LIBNAME="$2" AC_SUBST(LIBNAME)])
1347
1348 dnl *@-mdw_LIB_CONFIG-@*
1349 dnl
1350 dnl Author:     Mark Wooding
1351 dnl
1352 dnl Synopsis:   mdw_LIB_CONFIG(LIB, NAME, VERSION, IF-FOUND, IF-NOT-FOUND)
1353 dnl
1354 dnl Arguments:  LIB = the name of the library (and its configuration program)
1355 dnl             NAME = a presentable version of the library's name
1356 dnl             VERSION = version of library required
1357 dnl             IF-FOUND = what to do if found
1358 dnl             IF-NOT-FOUND = what to do if not found  
1359 dnl
1360 dnl Use:        Configures a library client program, using a configuration
1361 dnl             script provided by the library maintainer.
1362 dnl
1363 dnl             The default version is 1.0.0pre0; the default action is to
1364 dnl             add everything to the CFLAGS and LIBS variables, and complain
1365 dnl             if the library couldn't be found.
1366 dnl
1367 dnl             The variable LIB_VERSION contains the version number of
1368 dnl             the library; LIB_CFLAGS is the C compiler flags required
1369 dnl             and LIB_LIBS is the linker flags.
1370
1371 AC_DEFUN([mdw_LIB_CONFIG],
1372 [pushdef([upname], translit([$1], [a-z], [A-Z]))dnl
1373 AC_MSG_CHECKING([for $2 library])
1374 if $1-config --check $3 >/dev/null 2>&1; then
1375   upname[]_VERSION=`$1-config --version`
1376   upname[]_CFLAGS=`$1-config --cflags`
1377   upname[]_LIBS=`$1-config --libs`
1378   AC_SUBST(upname[]_VERSION)
1379   AC_SUBST(upname[]_CFLAGS)
1380   AC_SUBST(upname[]_LIBS)
1381   ifelse([$4], [],
1382   [CFLAGS="$CFLAGS $upname[]_CFLAGS"
1383   LIBS="$upname[]_LIBS $LIBS"],
1384   $4)
1385   AC_MSG_RESULT([$upname[]_VERSION])
1386 else
1387   ifelse([$5], [],
1388   AC_MSG_ERROR([$2 library not found or too old.]),
1389   $5)
1390   AC_MSG_RESULT([not found])
1391 fi])
1392
1393 dnl *@-mdw_MLIB-@*
1394 dnl
1395 dnl Author:     Mark Wooding
1396 dnl
1397 dnl Synopsis:   mdw_MLIB(VERSION, IF-FOUND, IF-NOT-FOUND
1398 dnl
1399 dnl Arguments:  VERSION = version of library required
1400 dnl             IF-FOUND = what to do if found
1401 dnl             IF-NOT-FOUND = what to do if not found  
1402 dnl
1403 dnl Use:        Configures an mLib client program.
1404
1405 AC_DEFUN([mdw_MLIB], [mdw_LIB_CONFIG(mLib, mLib, $@)])
1406
1407 dnl *@-mdw_MGLIB-@*
1408 dnl
1409 dnl Author:     Mark Wooding
1410 dnl
1411 dnl Synopsis:   mdw_MGLIB(VERSION, IF-FOUND, IF-NOT-FOUND
1412 dnl
1413 dnl Arguments:  VERSION = version of library required
1414 dnl             IF-FOUND = what to do if found
1415 dnl             IF-NOT-FOUND = what to do if not found  
1416 dnl
1417 dnl Use:        Configures an mgLib client program.
1418
1419 AC_DEFUN([mdw_MGLIB],
1420 [mdw_REQUIRE([mdw_MLIB], [1.6.0])
1421 mdw_LIB_CONFIG(mgLib, mgLib, $@)])
1422
1423 dnl *@-mdw_CATACOMB-@*
1424 dnl
1425 dnl Author:     Mark Wooding
1426 dnl
1427 dnl Synopsis:   mdw_CATACOMB([VERSION], [IF-FOUND], [IF-NOT-FOUND])
1428 dnl
1429 dnl Arguments:  VERSION = version of Catacomb required
1430 dnl             IF-FOUND = what to do if found
1431 dnl             IF-NOT-FOUND = what to do if not found  
1432 dnl
1433 dnl Use:        Configures the program as a Catacomb client.
1434
1435 AC_DEFUN([mdw_CATACOMB],
1436 [mdw_REQUIRE([mdw_MLIB], [1.6.0])
1437 mdw_LIB_CONFIG(catacomb, Catacomb, $@)])
1438
1439 dnl *@-mdw_PK-@*
1440 dnl
1441 dnl Author:     Mark Wooding
1442 dnl
1443 dnl Synopsis:   mdw_PK([VERSION], [IF-FOUND], [IF-NOT-FOUND])
1444 dnl
1445 dnl Arguments:  VERSION = version of PK required
1446 dnl             IF-FOUND = what to do if found
1447 dnl             IF-NOT-FOUND = what to do if not found  
1448 dnl
1449 dnl Use:        Configures the program as a PK client.
1450
1451 AC_DEFUN([mdw_PK],
1452 [mdw_REQUIRE([mdw_MLIB], [1.6.0])
1453 mdw_LIB_CONFIG(pk, PK, $@)])
1454
1455 dnl --- *@-mdw_OPT_NDEBUG-@* ---
1456 dnl
1457 dnl Author:     Mark Wooding
1458 dnl
1459 dnl Synopsis:   mdw_OPT_NDEBUG
1460 dnl
1461 dnl Arguments:  ---
1462 dnl
1463 dnl Use:        Turns off the `NDEBUG' flag if the user wants to do
1464 dnl             debugging.
1465
1466 AC_DEFUN(mdw_OPT_NDEBUG,
1467 [AC_ARG_ENABLE(debugging,
1468 [  --enable-debugging      spews vast swathes of useless information],
1469 [if test "$enableval" = "no"; then
1470   AC_DEFINE(NDEBUG, 1)
1471 fi],
1472 [AC_DEFINE(NDEBUG, 1)])])
1473
1474 dnl --- *@-mdw_OPT_EFENCE-@* ---
1475 dnl
1476 dnl Author:     Mark Wooding
1477 dnl
1478 dnl Synopsis:   mdw_OPT_EFENCE
1479 dnl
1480 dnl Arguments:  ---
1481 dnl
1482 dnl Use:        Links with the Electric Fence library.
1483
1484 AC_DEFUN(mdw_OPT_EFENCE,
1485 [AC_ARG_WITH(electric-fence,
1486 [  --with-electric-fence   link programs with Electric Fence],
1487 [if test "$withval" = "yes"; then
1488   AC_CHECK_LIB(efence, malloc)
1489 fi])])
1490
1491 dnl --- *@-mdw_OPT_mLib_DEBUG-@* ---
1492 dnl
1493 dnl Author:     Mark Wooding
1494 dnl
1495 dnl Synopsis:   mdw_OPT_mLib_DEBUG(PROGRAM)
1496 dnl
1497 dnl Arguments:  ---
1498 dnl
1499 dnl Use:        Provides options for mLib debugging.  In particular, the
1500 dnl             following are defined:
1501 dnl
1502 dnl               --enable-tracing        turns off the NTRACE variable
1503 dnl               --enable-track          turns on malloc tracking
1504 dnl               --enable-blame-PROGRAM  tracks malloc contexts in PROGRAM
1505 dnl
1506 dnl             There must be  a separate `blame' option, so that the various
1507 dnl             blame options work properly.
1508
1509 AC_DEFUN(mdw_OPT_mLib_DEBUG,
1510 [mdw_OPT_NDEBUG
1511 mdw_OPT_EFENCE
1512
1513 AC_ARG_ENABLE(tracing,
1514 [  --enable-tracing        enable output of tracing information],
1515 [if test "$enableval" = "no"; then
1516   AC_DEFINE(NTRACE, 1)
1517 fi],
1518 [AC_DEFINE(NTRACE, 1)])
1519
1520 AC_ARG_ENABLE(track,
1521 [  --enable-track          enable tracking of malloc and free],
1522 [AC_DEFINE(TRACK_ENABLE, 1)])
1523
1524 AC_ARG_ENABLE(blame-$1,
1525 [  --enable-blame-$1
1526                           track malloc contexts while in $1],
1527 [AC_DEFINE(TRACK_BLAME, 1)])])
1528
1529 dnl----- That's all, folks --------------------------------- *@--GLOB-END--@*