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