Ooops. More fixes needed.
[cfd] / aclocal.glob
1 dnl -*-fundamental-*- *@--GLOB-HEADER--@*
2 dnl
3 dnl $Id$
4 dnl
5 dnl Common library of autoconf macros
6 dnl
7 dnl (c) 1997 Mark Wooding, except for macros and documentation where noted.
8 dnl
9
10 dnl----- Licensing notice ---------------------------------------------------
11 dnl
12 dnl This file is part of the Common Files Distribution (`common')
13 dnl
14 dnl `Common' is free software; you can redistribute it and/or modify
15 dnl it under the terms of the GNU General Public License as published by
16 dnl the Free Software Foundation; either version 2 of the License, or
17 dnl (at your option) any later version.
18 dnl
19 dnl `Common' is distributed in the hope that it will be useful,
20 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
21 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 dnl GNU General Public License for more details.
23 dnl
24 dnl You should have received a copy of the GNU General Public License
25 dnl along with `common'; if not, write to the Free Software Foundation,
26 dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27
28 dnl *@--NOTICE--@* Common File Distribution
29 dnl $Id$
30
31 dnl --- *@-mdw_CURSES-@* ---
32 dnl
33 dnl Author: Mark Wooding
34 dnl
35 dnl Synopsis: mdw_CURSES
36 dnl
37 dnl Arguments: ---
38 dnl
39 dnl Use: Searches for a `curses' library (one of `ncurses' or
40 dnl `curses') using mdw_CHECK_MANYLIBS. If one is found, the
41 dnl preprocessor macro HAVE_CURSES is defined, and a search is
42 dnl made for a `curses' header file (one of <ncurses.h>,
43 dnl <ncurses/ncurses.h> or <curses.h>) using AC_CHECK_HEADERS
44 dnl and the appropriate preprocessor symbol is defined.
45 dnl Finally, a check is made for the function `wresize' using
46 dnl AC_CHECK_FUNCS.
47
48 AC_DEFUN([mdw_CURSES],
49 [mdw_CHECK_MANYLIBS([newwin], [ncurses curses],
50 [AC_DEFINE([HAVE_CURSES],
51 [Define if you have a curses library.])])
52 if test $mdw_cv_lib_newwin != no; then
53 AC_CHECK_HEADERS([ncurses.h ncurses/ncurses.h curses.h], [break])
54 if test "$ac_cv_header_ncurses_h" = "no" &&
55 test "$ac_cv_header_ncurses_ncurses_h" = "no" &&
56 test "$ac_cv_header_curses_h" = "no"; then
57 AC_MSG_WARN([couldn't find a \`curses' header. Assuming \`curses.h'.])
58 AC_DEFINE([HAVE_CURSES_H], [1], [Define if you have a `curses.h' header.])
59 fi
60 AC_CHECK_FUNCS(wresize)
61 fi])
62
63 dnl --- *@-mdw_TYPE_SSIZE_T-@* ---
64 dnl
65 dnl Author: Mark Wooding
66 dnl
67 dnl Synopsis: mdw_TYPE_SSIZE_T
68 dnl
69 dnl Arguments: ---
70 dnl
71 dnl Use: Checks whether the Posix type `ssize_t' is defined. If not,
72 dnl it defaults to `int'.
73
74 AC_DEFUN([mdw_TYPE_SSIZE_T],
75 [AC_REQUIRE([AC_HEADER_STDC])
76 AC_CACHE_CHECK(for ssize_t, mdw_cv_ssize_t,
77 [AC_EGREP_CPP(ssize_t,
78 [#include <sys/types.h>
79 #if HAVE_UNISTD_H
80 #include <unistd.h>
81 #endif
82 #if STDC_HEADERS
83 #include <stdlib.h>
84 #include <stddef.h>
85 #endif],
86 [mdw_cv_ssize_t=yes], [mdw_cv_ssize_t=no])])
87 if test $mdw_cv_ssize_t = no; then
88 AC_DEFINE([ssize_t], [int], [Define to `int' if your system doesn't have ssize_t.])
89 fi])
90
91 dnl --- *@-mdw_DECL_ENVIRON-@* ---
92 dnl
93 dnl Author: Mark Wooding
94 dnl
95 dnl Synopsis: mdw_DECL_ENVIRON
96 dnl
97 dnl Arguments: ---
98 dnl
99 dnl Use: Searches for a declaration of the global `environ' variable.
100 dnl If one is found in one of the `usual' places, DECL_ENVIRON
101 dnl is defined as a preprocessor symbol.
102
103 AC_DEFUN([mdw_DECL_ENVIRON],
104 [AC_CACHE_CHECK([for declaration of \`environ'], mdw_cv_environ,
105 [AC_EGREP_CPP(environ,
106 [#include <sys/types.h>
107 #if HAVE_UNISTD_H
108 #include <unistd.h>
109 #endif
110 #if STDC_HEADERS
111 #include <stdlib.h>
112 #include <stddef.h>
113 #endif], [mdw_cv_environ=yes], [mdw_cv_environ=no])])
114 if test $mdw_cv_environ = yes; then
115 AC_DEFINE([DECL_ENVIRON], [1],
116 [Define if you have the `environ' vector of environment variables.])
117 fi])
118
119 dnl --- *@-mdw_CHECK_MANYLIBS-@* ---
120 dnl
121 dnl Author: Mark Wooding
122 dnl
123 dnl Synopsis: mdw_CHECK_MANYLIBS(FUNC, LIBS, [IF-FOUND], [IF-NOT-FOUND],
124 dnl [INCLUDES], [ARGS])
125 dnl
126 dnl Arguments: FUNC = a function to try to find
127 dnl LIBS = a whitespace-separated list of libraries to search
128 dnl IF-FOUND = what to do when the function is found
129 dnl IF-NOT-FOUND = what to do when the function isn't found
130 dnl INCLUDES = other include files to add
131 dnl ARGS = arguments to pass the function
132 dnl
133 dnl Use: Searches for a library which defines FUNC. It first tries
134 dnl without any libraries; then it tries each library specified
135 dnl in LIBS in turn. If it finds a match, it adds the
136 dnl appropriate library to `LIBS'.
137 dnl
138 dnl This is particularly handy under DIREIX: if you link with
139 dnl `-lnsl' then you get non-NIS-aware versions of getpwnam and
140 dnl so on, which is clearly a Bad Thing.
141
142 AC_DEFUN([mdw_CHECK_MANYLIBS],
143 [AC_CACHE_CHECK([for library containing $1], [mdw_cv_lib_$1],
144 [mdw_save_LIBS="$LIBS"
145 mdw_cv_lib_$1="no"
146 AC_TRY_LINK([$5], [$1($6)], [mdw_cv_lib_$1="none required"])
147 test "$mdw_cv_lib_$1" = "no" && for i in $2; do
148 LIBS="-l$i $mdw_save_LIBS"
149 AC_TRY_LINK([$5], [$1($6)],
150 [mdw_cv_lib_$1="-l$i"
151 break])
152 done
153 LIBS="$mdw_save_LIBS"])
154 if test "$mdw_cv_lib_$1" != "no"; then
155 test "$mdw_cv_lib_$1" = "none required" || LIBS="$mdw_cv_lib_$1 $LIBS"
156 $3
157 else :
158 $4
159 fi])
160
161 dnl --- *@-mdw__PYTHON_VERSION-@* ---
162 dnl
163 dnl Will fail hopelessly on Python < 1.5.2. Nobody uses that any more,
164 dnl right?
165
166 AC_DEFUN([mdw__PYTHON_VERSION],
167 [$1 -c 'from sys import *; v = argv[1]; vv = v.split("."); x = 0
168 for i in range(len(vv)): x = x | (int(vv[i]) << (24 - i * 8))
169 exit(x > hexversion)' $2])
170
171 dnl --- *@-mdw_PROG_PYTHON-@* ---
172 dnl
173 dnl Author: Mark Wooding
174 dnl
175 dnl Synopsis: mdw_PROG_PYTHON(VERSION, [IF-FOUND], [IF-NOT-FOUND])
176 dnl
177 dnl Arguments: VERSION = version number of Python required
178 dnl IF-FOUND = what to do if it's found
179 dnl IF-NOT-FOUND = what to do if it isn't
180 dnl
181 dnl Use: Attempts to find a working version of Python with a late
182 dnl enough version number. It supplies an option `--with-python'
183 dnl to allow the user to provide a Python interpreter. If one
184 dnl isn't provided explicitly, it searches for `python' and
185 dnl `pythonVERSION' in the current PATH, asking them whether they
186 dnl have a late enough version number. The path of the working
187 dnl Python is put into the `PYTHON' environment variable;
188 dnl `AC_SUBST' is used to substitute its value into Python
189 dnl scripts. If there is no Python to be found, the value of
190 dnl `PYTHON' is set to be `none'.
191
192 AC_DEFUN([mdw_PROG_PYTHON],
193 [AC_ARG_WITH([python],
194 [ --with-python=PYTHON specify path to Python version $1 or newer],
195 [PYTHON="$withval"],
196 if test -z "$PYTHON"; then
197 [AC_CACHE_CHECK([for Python version $1 or later], mdw_cv_prog_python,
198 [mdw_cv_prog_python="none"
199 for p in `echo "$PATH:/usr/local/bin" | tr ":" " "`; do
200 case $p in /*) ;; *) p=`pwd`/$p ;; esac
201 if mdw__PYTHON_VERSION(["$p/python"], $1); then
202 mdw_cv_prog_python="$p/python"
203 break
204 fi
205 if mdw__PYTHON_VERSION(["$p/python$1"], $1); then
206 mdw_cv_prog_python="$p/python$1"
207 break
208 fi
209 done])
210 PYTHON="$mdw_cv_prog_python"])
211 fi
212
213 AC_SUBST(PYTHON)dnl
214 if test "$PYTHON" = "none"; then :
215 $3
216 else :
217 $2
218 fi])
219
220 dnl --- *@-mdw_CHECK_PYTHON-@* ---
221 dnl
222 dnl Author: Mark Wooding
223 dnl
224 dnl Synopsis: mdw_CHECK_PYTHON(VERSION)
225 dnl
226 dnl Arguments: VERSION = version number of Python required
227 dnl
228 dnl Use: Verifies that the Python interpreter in the `PYTHON' shell
229 dnl variable actually works and is of the right version. If it's
230 dnl not, an error is raised and configuration is aborted.
231
232 AC_DEFUN([mdw_CHECK_PYTHON],
233 [AC_REQUIRE([mdw_PROG_PYTHON], [mdw_PROG_PYTHON([$1])])
234 AC_MSG_CHECKING([whether Python ($PYTHON) works])
235 if test "$PYTHON" != "none" && mdw__PYTHON_VERSION("$PYTHON", $1); then
236 AC_MSG_RESULT([yes])
237 else
238 AC_MSG_RESULT([no])
239 AC_MSG_ERROR([Python version $1 or newer not found.
240 If you have a recent enough Python, and I just failed to find it, try using
241 the --with-python=PYTHON option to give me an explicit pathname.])
242 fi])
243
244 dnl --- *@-mdw__PERL_VERSION-@* ---
245 dnl
246 dnl AC_DEFUN relies on `[', `]' being quotes, so I have to drop down a level.
247
248 AC_DEFUN([mdw__PERL_VERSION], [mdw__PERL_VERSION_hack([$1], [$2])])
249 changequote(<<, >>)
250 define(<<mdw__PERL_VERSION_hack>>, <<$1 -e 'exit ($] < $2);' >&5 2>&5>>)
251 changequote([, ])
252
253 dnl --- *@-mdw_PROG_PERL-@* ---
254 dnl
255 dnl Author: Mark Wooding
256 dnl
257 dnl Synopsis: mdw_PROG_PERL(VERSION, [IF-FOUND], [IF-NOT-FOUND])
258 dnl
259 dnl Arguments: VERSION = version number of Perl required
260 dnl IF-FOUND = what to do if it's found
261 dnl IF-NOT-FOUND = what to do if it isn't
262 dnl
263 dnl Use: Attempts to find a working version of Perl with a late
264 dnl enough version number. It supplies an option `--with-perl'
265 dnl to allow the user to provide a Perl interpreter. If one
266 dnl isn't provided explicitly, it searches for `perl' and `perl5'
267 dnl in the current PATH, asking them whether they have a late
268 dnl enough version number. The path of the working Perl is
269 dnl put into the `PERL' environment variable; `AC_SUBST' is used
270 dnl to substitute its value into Perl scripts. If there is no
271 dnl Perl to be found, the value of `PERL' is set to be `none'.
272
273 AC_DEFUN([mdw_PROG_PERL],
274 [AC_ARG_WITH([perl],
275 [ --with-perl=PERL specify path to Perl version $1 or newer],
276 [PERL="$withval"],
277 if test -z "$PERL"; then
278 [AC_CACHE_CHECK([for Perl version $1 or later], mdw_cv_prog_perl,
279 [mdw_cv_prog_perl="none"
280 for p in `echo "$PATH:/usr/local/bin" | tr ":" " "`; do
281 case $p in /*) ;; *) p=`pwd`/$p ;; esac
282 if mdw__PERL_VERSION(["$p/perl"], $1); then
283 mdw_cv_prog_perl="$p/perl"
284 break
285 fi
286 if mdw__PERL_VERSION(["$p/perl5"], $1); then
287 mdw_cv_prog_perl="$p/perl5"
288 break
289 fi
290 done])
291 PERL="$mdw_cv_prog_perl"])
292 fi
293
294 AC_SUBST(PERL)dnl
295 if test "$PERL" = "none"; then :
296 $3
297 else :
298 $2
299 fi])
300
301 dnl --- *@-mdw_CHECK_PERL-@* ---
302 dnl
303 dnl Author: Mark Wooding
304 dnl
305 dnl Synopsis: mdw_CHECK_PERL(VERSION)
306 dnl
307 dnl Arguments: VERSION = version number of Perl required
308 dnl
309 dnl Use: Verifies that the Perl interpreter in the `PERL' shell
310 dnl variable actually works and is of the right version. If it's
311 dnl not, an error is raised and configuration is aborted.
312
313 AC_DEFUN([mdw_CHECK_PERL],
314 [AC_REQUIRE([mdw_PROG_PERL], [mdw_PROG_PERL([$1])])
315 AC_MSG_CHECKING([whether Perl ($PERL) works])
316 if test "$PERL" != "none" && mdw__PERL_VERSION("$PERL", $1); then
317 AC_MSG_RESULT([yes])
318 else
319 AC_MSG_RESULT([no])
320 AC_MSG_ERROR([Perl version $1 or newer not found.
321 If you have a recent enough Perl, and I just failed to find it, try using
322 the --with-perl=PERL option to give me an explicit pathname.])
323 fi])
324
325 dnl --- *@-mdw_PERLLIB_CHECK-@* ---
326 dnl
327 dnl Author: Mark Wooding
328 dnl
329 dnl Synopsis: mdw_PERLLIB_CHECK(LIBRARY)
330 dnl
331 dnl Arguments: LIBRARY = name of a Perl library to check for
332 dnl
333 dnl Use: Ensures that a Perl script can `use LIBRARY;'. If it can,
334 dnl all's well and good; if it can't, `LIBRARY.pm' is added to
335 dnl the variable `NEEDED_PERLLIBS' and a line which adds
336 dnl `pkgdatadir' to Perl's `@INC' array is placed in the
337 dnl variable `INC_PERLLIBS'; `AC_SUBST' is called for both of
338 dnl these variables. It's expected that `NEEDED_PERLLIBS' will
339 dnl be used in the `Makefile.in' to decide which versions from
340 dnl the distribution need installing.
341 dnl
342 dnl This macro isn't terribly useful in the general case. It
343 dnl Also implicitly assumes that `$PERL' is Perl 5 or later.
344
345 AC_DEFUN([mdw__PERLLIB_INIT],
346 [AC_SUBST(INC_PERLLIBS)dnl
347 AC_SUBST(NEEDED_PERLLIBS)dnl
348 ])
349
350 AC_DEFUN([mdw_PERLLIB_CHECK],
351 [AC_REQUIRE([mdw__PERLLIB_INIT])
352 AC_REQUIRE([mdw_CHECK_PERL], [mdw_PROG_PERL([5])])
353 AC_CACHE_CHECK([for Perl library $1], mdw_cv_perllib_$1,
354 [if $PERL -e 'use $1;' >&5 2>&5; then
355 mdw_cv_perllib_$1="yes"
356 else
357 mdw_cv_perllib_$1="no"
358 fi])
359
360 if test "$mdw_cv_perllib_$1" = "no"; then
361 NEEDED_PERLLIBS="$NEEDED_PERLLIBS $1.pm"
362
363 # --- Deal with autoconf lossage ---
364 #
365 # It doesn't want to define `prefix' until rather later on, so I have
366 # to bodge it here.
367
368 if test -z "$INC_PERLLIBS"; then
369 mdw_old_prefix="$prefix"
370 test "$prefix" = "NONE" && prefix="$ac_default_prefix";
371 INC_PERLLIBS="BEGIN { push @INC, \"`eval echo $datadir/$PACKAGE`\"; }"
372 prefix="$mdw_old_prefix";
373 fi
374 fi])
375
376 dnl --- *@-mdw_GCC_FLAGS-@* ---
377 dnl
378 dnl Author: Mark Wooding
379 dnl
380 dnl Synopsis: mdw_GCC_FLAGS([FLAGS], [CFLAGS], [C++FLAGS])
381 dnl
382 dnl Arguments: FLAGS = GCC compiler flags to add (default is
383 dnl `-pedantic -Wall')
384 dnl CFLAGS = GCC C compiler flags to add (default is empty)
385 dnl C++FLAGS = GCC C++ compiler flags to add (default is
386 dnl `-fhandle-exceptions').
387 dnl
388 dnl Use: If the C compiler is GCC, add the compiler flags.
389
390 AC_DEFUN([mdw_GCC_FLAGS],
391 [if test "$GCC" = "yes"; then
392 CFLAGS="$CFLAGS ifelse([$1], [], [-pedantic -Wall], [$1])"
393 CFLAGS="$CFLAGS ifelse([$2], [], [], [$2])"
394 fi
395 if test "$GXX" = "yes"; then
396 CXXFLAGS="$CXXFLAGS ifelse([$1], [], [-pedantic -Wall], [$1])"
397 CXXFLAGS="$CXXFLAGS ifelse([$3], [], [-fhandle-exceptions], [$3])"
398 fi])
399
400 dnl --- *@-mdw_INIT_LIB-@* ---
401 dnl
402 dnl Author: Mark Wooding
403 dnl
404 dnl Synopsis: mdw_INIT_LIB(LIB, NAME, VERSION, [PACKAGE])
405 dnl
406 dnl Arguments: LIB = the name of the library (and the package)
407 dnl NAME = a presentable version of the library's name
408 dnl VERSION = version of the library
409 dnl PACKAGE = package name to pass on to AM_INIT_AUTOMAKE
410 dnl
411 dnl Use: Sets up various useful variables. This macro calls
412 dnl AM_INIT_AUTOMAKE, which might be considered useful. It also
413 dnl provides variables for the use of `lib-config.in'.
414
415 AC_DEFUN([mdw_INIT_LIB],
416 [AM_INIT_AUTOMAKE(ifelse([$4], [], [$1], [$4]), [$3])
417 LIBRARY="$1" AC_SUBST(LIBRARY)
418 LIBNAME="$2" AC_SUBST(LIBNAME)])
419
420 dnl --- *@-mdw_LIB_CONFIG-@* ---
421 dnl
422 dnl Author: Mark Wooding
423 dnl
424 dnl Synopsis: mdw_LIB_CONFIG(LIB, NAME, VERSION, IF-FOUND, IF-NOT-FOUND)
425 dnl
426 dnl Arguments: LIB = the name of the library (and its configuration program)
427 dnl NAME = a presentable version of the library's name
428 dnl VERSION = version of library required
429 dnl IF-FOUND = what to do if found
430 dnl IF-NOT-FOUND = what to do if not found
431 dnl
432 dnl Use: Configures a library client program, using a configuration
433 dnl script provided by the library maintainer.
434 dnl
435 dnl The default version is 1.0.0pre0; the default action is to
436 dnl add everything to the CFLAGS and LIBS variables, and complain
437 dnl if the library couldn't be found.
438 dnl
439 dnl The variable LIB_VERSION contains the version number of
440 dnl the library; LIB_CFLAGS is the C compiler flags required
441 dnl and LIB_LIBS is the linker flags.
442
443 AC_DEFUN([mdw_LIB_CONFIG],
444 [pushdef([upname], translit([$1], [a-z], [A-Z]))dnl
445 AC_MSG_CHECKING([for $2 library])
446 if $1-config --check $3 >/dev/null 2>&1; then
447 upname[]_VERSION=`$1-config --version`
448 upname[]_CFLAGS=`$1-config --cflags`
449 upname[]_LIBS=`$1-config --libs`
450 AC_SUBST(upname[]_VERSION)
451 AC_SUBST(upname[]_CFLAGS)
452 AC_SUBST(upname[]_LIBS)
453 ifelse([$4], [],
454 [CFLAGS="$CFLAGS $upname[]_CFLAGS"
455 LIBS="$upname[]_LIBS $LIBS"],
456 $4)
457 AC_MSG_RESULT([$upname[]_VERSION])
458 else
459 ifelse([$5], [],
460 AC_MSG_ERROR([$2 library not found or too old.]),
461 $5)
462 AC_MSG_RESULT([not found])
463 fi
464 popdef([upname])])
465
466 dnl --- *@-mdw_MLIB-@* ---
467 dnl
468 dnl Author: Mark Wooding
469 dnl
470 dnl Synopsis: mdw_MLIB(VERSION, IF-FOUND, IF-NOT-FOUND
471 dnl
472 dnl Arguments: VERSION = version of library required
473 dnl IF-FOUND = what to do if found
474 dnl IF-NOT-FOUND = what to do if not found
475 dnl
476 dnl Use: Configures an mLib client program.
477
478 AC_DEFUN([mdw_MLIB], [mdw_LIB_CONFIG(mLib, mLib, $@)])
479
480 dnl --- *@-mdw_MGLIB-@* ---
481 dnl
482 dnl Author: Mark Wooding
483 dnl
484 dnl Synopsis: mdw_MGLIB(VERSION, IF-FOUND, IF-NOT-FOUND
485 dnl
486 dnl Arguments: VERSION = version of library required
487 dnl IF-FOUND = what to do if found
488 dnl IF-NOT-FOUND = what to do if not found
489 dnl
490 dnl Use: Configures an mgLib client program.
491
492 AC_DEFUN([mdw_MGLIB],
493 [AC_REQUIRE([mdw_MLIB], [mdw_MLIB([2.0.3])])
494 mdw_LIB_CONFIG(mgLib, mgLib, $@)])
495
496 dnl --- *@-mdw_CATACOMB-@* ---
497 dnl
498 dnl Author: Mark Wooding
499 dnl
500 dnl Synopsis: mdw_CATACOMB([VERSION], [IF-FOUND], [IF-NOT-FOUND])
501 dnl
502 dnl Arguments: VERSION = version of Catacomb required
503 dnl IF-FOUND = what to do if found
504 dnl IF-NOT-FOUND = what to do if not found
505 dnl
506 dnl Use: Configures the program as a Catacomb client.
507
508 AC_DEFUN([mdw_CATACOMB],
509 [AC_REQUIRE([mdw_MLIB], [mdw_MLIB([2.0.3])])
510 mdw_LIB_CONFIG(catacomb, Catacomb, $@)])
511
512 dnl --- *@-mdw_PK-@* ---
513 dnl
514 dnl Author: Mark Wooding
515 dnl
516 dnl Synopsis: mdw_PK([VERSION], [IF-FOUND], [IF-NOT-FOUND])
517 dnl
518 dnl Arguments: VERSION = version of PK required
519 dnl IF-FOUND = what to do if found
520 dnl IF-NOT-FOUND = what to do if not found
521 dnl
522 dnl Use: Configures the program as a PK client.
523
524 AC_DEFUN([mdw_PK],
525 [AC_REQUIRE([mdw_MLIB], [mdw_MLIB([2.0.3])])
526 mdw_LIB_CONFIG(pk, PK, $@)])
527
528 dnl --- *@-mdw_OPT_NDEBUG-@* ---
529 dnl
530 dnl Author: Mark Wooding
531 dnl
532 dnl Synopsis: mdw_OPT_NDEBUG
533 dnl
534 dnl Arguments: ---
535 dnl
536 dnl Use: Turns on the `NDEBUG' flag, to disable useful things like
537 dnl assertions.
538
539 AC_DEFUN([mdw_OPT_NDEBUG],
540 [AC_ARG_ENABLE(debugging,
541 [ --disable-debugging spews vast swathes of useless information],
542 [if test "$enableval" = "no"; then
543 AC_DEFINE([NDEBUG], [1],
544 [Define to turn off assertions and other debugging. Not recommended.])
545 fi])])
546
547 dnl --- *@-mdw_OPT_EFENCE-@* ---
548 dnl
549 dnl Author: Mark Wooding
550 dnl
551 dnl Synopsis: mdw_OPT_EFENCE
552 dnl
553 dnl Arguments: ---
554 dnl
555 dnl Use: Links with the Electric Fence library.
556
557 AC_DEFUN([mdw_OPT_EFENCE],
558 [AC_ARG_WITH(electric-fence,
559 [ --with-electric-fence link programs with Electric Fence],
560 [if test "$withval" = "yes"; then
561 AC_CHECK_LIB(efence, malloc)
562 fi])])
563
564 dnl --- *@-mdw_OPT_TRACE-@* ---
565 dnl
566 dnl Author: Mark Wooding
567 dnl
568 dnl Synopsis: mdw_OPT_TRACE
569 dnl
570 dnl Arguments: ---
571 dnl
572 dnl Use: Turns on the `NTRACE' flag, to disable useful things like
573 dnl trace outputs.
574
575 AC_DEFUN([mdw_OPT_TRACE],
576 [AC_ARG_ENABLE(tracing,
577 [ --disable-tracing disable output of trace information],
578 [if test "$enableval" = "no"; then
579 AC_DEFINE([NTRACE], [1], [Define to turn off tracing.])
580 fi])])
581
582 dnl --- *@-mdw_OPT_mLib_TRACK-@* ---
583 dnl
584 dnl Author: Mark Wooding
585 dnl
586 dnl Synopsis: mdw_OPT_mLib_TRACK(PROGRAM)
587 dnl
588 dnl Arguments: PROGRAM = name of this program or package.
589 dnl
590 dnl Use: Controls the unsupported mLib memory tracker. The
591 dnl following are defined:
592 dnl
593 dnl --enable-track turns on malloc tracking
594 dnl --enable-blame-PROGRAM tracks malloc contexts in PROGRAM
595 dnl
596 dnl There must be a separate `blame' option for each program,
597 dnl so that the various blame options in a hierarchy get
598 dnl propagated properly. This is an obsolete feature from the
599 dnl days when mLib was provided as a subdirectory of other
600 dnl packages.
601
602 AC_DEFUN([mdw_OPT_mLib_TRACK],
603 [AC_REQUIRE([mdw_OPT_TRACE])
604 AC_ARG_ENABLE(track,
605 [ --enable-track enable tracking of malloc and free],
606 [AC_DEFINE([TRACK_ENABLE], [1],
607 [Define to turn on memory tracking. Doesn't work properly.])])
608 AC_ARG_ENABLE(blame-$1,
609 [ --enable-blame-$1
610 track malloc contexts while in $1],
611 [AC_DEFINE([TRACK_BLAME], [1],
612 [Define to track mallocs in this code.])])])
613
614 dnl --- *@-mdw_OPT_mLib_DEBUG-@* ---
615 dnl
616 dnl Author: Mark Wooding
617 dnl
618 dnl Synopsis: mdw_OPT_mLib_DEBUG(PROGRAM)
619 dnl
620 dnl Arguments: PROGRAM = name of this program or package.
621 dnl
622 dnl Use: Provides all of the above debugging options.
623
624 AC_DEFUN([mdw_OPT_mLib_DEBUG],
625 [AC_REQUIRE([mdw_OPT_NDEBUG])
626 AC_REQUIRE([mdw_OPT_mLib_TRACK], [mdw_OPT_mLib_TRACK([$1])])])
627
628 dnl --- *@-mdw_DEFINE_PATHS-@*
629 dnl
630 dnl Author: Mark Wooding
631 dnl
632 dnl Synopsis: mdw_DEFINE_PATHS(CODE)
633 dnl
634 dnl Arguments: CODE = shell script code to execute
635 dnl
636 dnl Use: Fixes up various variables so that pathname defines can be
637 dnl defined. Within CODE, you may use the following macros:
638 dnl
639 dnl mdw_PROG(NAME) Transformed program name
640 dnl
641 dnl mdw_PATH(PATH) Expanded path (may contain variables)
642 dnl
643 dnl mdw_DEFINE_PROG(SYMBOL, PROG)
644 dnl Define a symbol as a transformed
645 dnl program name.
646 dnl
647 dnl mdw_DEFINE_PATH(SYMBOL, NAME)
648 dnl Define a symbol as an expanded path
649
650 AC_DEFUN([mdw_DEFINE_PATHS],
651 [mdw_prefix=$prefix mdw_exec_prefix=$exec_prefix
652 mdw_transform=`echo "$program_transform_name"|sed 's,\\\\\\\\,\\\\,g; s,\\$\\$,$,g'`
653 test "$prefix" = "NONE" && prefix=$ac_default_prefix
654 test "$exec_prefix" = "NONE" && exec_prefix=$prefix
655 $1
656 prefix=$mdw_prefix exec_prefix=$mdw_exec_prefix])
657
658 AC_DEFUN([mdw_PROG], [`echo "$1"|sed "$mdw_transform"`])
659 AC_DEFUN([mdw_PATH], [dnl
660 `t="$1"; dnl
661 while :; do dnl
662 case "$t" in dnl
663 *\\$[]*) t=\`eval echo "$t"\`;; dnl
664 *) break;; dnl
665 esac; done; dnl
666 echo "$t"`])
667 AC_DEFUN([mdw_DEFINE_PROG],
668 [AC_DEFINE_UNQUOTED([$1], ["mdw_PROG([$2])"],
669 [Program name for $2.])])
670 AC_DEFUN([mdw_DEFINE_PATH], [AC_DEFINE_UNQUOTED([$1], ["mdw_PATH([$2])"],
671 [Pathname for $2.])])
672
673 dnl --- *@-mdw_DIR_TEXMF-@* ---
674 dnl
675 dnl Author: Mark Wooding
676 dnl
677 dnl Synopsis: mdw_DIR_TEXMF
678 dnl
679 dnl Arguments: ---
680 dnl
681 dnl Use: Sets the substitution `texmfdir' as a sensible TeX install
682 dnl tree.
683
684 AC_DEFUN([mdw_DIR_TEXMF], [
685 AC_ARG_WITH([texmfdir],
686 [ --with-texmfdir=DIR set the TeX install directory to DIR],
687 [texmfdir=$withval],
688 [AC_MSG_CHECKING([where to put installed TeX files])
689 mdw_DEFINE_PATHS([
690 texmfdir='${datadir}/texmf'
691 for d in \
692 '${datadir}/texmf' '${prefix}/lib/texmf' \
693 '${prefix}/texmf' '${libdir}/lib/texmf'; do
694 if test -d "mdw_PATH([$d])"; then
695 texmfdir=$d
696 break
697 fi
698 done
699 AC_MSG_RESULT([$texmfdir])])])
700 AC_SUBST(texmfdir)])
701
702 dnl --- *@-mdw_MANEXT-@* ---
703 dnl
704 dnl Author: Mark Wooding
705 dnl
706 dnl Synopsis: mdw_MANEXT
707 dnl
708 dnl Arguments: ---
709 dnl
710 dnl Use: Sets the substitution `manext' for man page extensions.
711
712 AC_DEFUN([mdw_MANEXT], [
713 AC_ARG_WITH([man-ext],
714 [ --with-man-ext=EXT give manpages the EXT extension (e.g., foo.3EXT)],
715 [manext=$withval], [manext=mLib])
716 AC_SUBST(manext)])
717
718 dnl----- That's all, folks --------------------------------- *@--GLOB-END--@*