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