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