bce4c977bf11017d455b62066035d03f96cd892c
[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], [1],
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 [changequote(<:, :>)dnl
168 test -x $1 && dnl
169 "$1" -c 'from sys import *; v = argv[1]; vv = v.split("."); x = 0
170 for i in range(len(vv)): x = x | (int(vv[i]) << (24 - i * 8))
171 exit(x > hexversion)' $2dnl
172 changequote([, ])])
173
174 dnl --- *@-mdw_PROG_PYTHON-@* ---
175 dnl
176 dnl Author: Mark Wooding
177 dnl
178 dnl Synopsis: mdw_PROG_PYTHON(VERSION, [IF-FOUND], [IF-NOT-FOUND])
179 dnl
180 dnl Arguments: VERSION = version number of Python required
181 dnl IF-FOUND = what to do if it's found
182 dnl IF-NOT-FOUND = what to do if it isn't
183 dnl
184 dnl Use: Attempts to find a working version of Python with a late
185 dnl enough version number. It supplies an option `--with-python'
186 dnl to allow the user to provide a Python interpreter. If one
187 dnl isn't provided explicitly, it searches for `python' and
188 dnl `pythonVERSION' in the current PATH, asking them whether they
189 dnl have a late enough version number. The path of the working
190 dnl Python is put into the `PYTHON' environment variable;
191 dnl `AC_SUBST' is used to substitute its value into Python
192 dnl scripts. If there is no Python to be found, the value of
193 dnl `PYTHON' is set to be `none'.
194
195 AC_DEFUN([mdw_PROG_PYTHON],
196 [AC_ARG_WITH([python],
197 [ --with-python=PYTHON specify path to Python version $1 or newer],
198 [PYTHON="$withval"],
199 if test -z "$PYTHON"; then
200 [AC_CACHE_CHECK([for Python version $1 or later], mdw_cv_prog_python,
201 [mdw_cv_prog_python="none"
202 for p in `echo "$PATH:/usr/local/bin" | tr ":" " "`; do
203 case "$p" in /*) ;; *) p=`pwd`/$p ;; esac
204 if mdw__PYTHON_VERSION(["$p/python"], $1); then
205 mdw_cv_prog_python="$p/python"
206 break
207 fi
208 if mdw__PYTHON_VERSION(["$p/python$1"], $1); then
209 mdw_cv_prog_python="$p/python$1"
210 break
211 fi
212 done])
213 PYTHON="$mdw_cv_prog_python"])
214 fi
215
216 AC_SUBST(PYTHON)dnl
217 if test "$PYTHON" = "none"; then :
218 $3
219 else :
220 $2
221 fi])
222
223 dnl --- *@-mdw_CHECK_PYTHON-@* ---
224 dnl
225 dnl Author: Mark Wooding
226 dnl
227 dnl Synopsis: mdw_CHECK_PYTHON(VERSION)
228 dnl
229 dnl Arguments: VERSION = version number of Python required
230 dnl
231 dnl Use: Verifies that the Python interpreter in the `PYTHON' shell
232 dnl variable actually works and is of the right version. If it's
233 dnl not, an error is raised and configuration is aborted.
234
235 AC_DEFUN([mdw_CHECK_PYTHON],
236 [AC_REQUIRE([mdw_PROG_PYTHON], [mdw_PROG_PYTHON([$1])])
237 AC_MSG_CHECKING([whether Python ($PYTHON) works])
238 if test "$PYTHON" != "none" && mdw__PYTHON_VERSION("$PYTHON", $1); then
239 AC_MSG_RESULT([yes])
240 else
241 AC_MSG_RESULT([no])
242 AC_MSG_ERROR([Python version $1 or newer not found.
243 If you have a recent enough Python, and I just failed to find it, try using
244 the --with-python=PYTHON option to give me an explicit pathname.])
245 fi])
246
247 dnl --- *@-mdw__PERL_VERSION-@* ---
248 dnl
249 dnl AC_DEFUN relies on `[', `]' being quotes, so I have to drop down a level.
250
251 AC_DEFUN([mdw__PERL_VERSION], [mdw__PERL_VERSION_hack([$1], [$2])])
252 changequote(<:, :>)
253 define(<:mdw__PERL_VERSION_hack:>,
254 <:test -x $1 && $1 -e 'exit ($] < $2);' >&5 2>&5:>)
255 changequote([, ])
256
257 dnl --- *@-mdw_PROG_PERL-@* ---
258 dnl
259 dnl Author: Mark Wooding
260 dnl
261 dnl Synopsis: mdw_PROG_PERL(VERSION, [IF-FOUND], [IF-NOT-FOUND])
262 dnl
263 dnl Arguments: VERSION = version number of Perl required
264 dnl IF-FOUND = what to do if it's found
265 dnl IF-NOT-FOUND = what to do if it isn't
266 dnl
267 dnl Use: Attempts to find a working version of Perl with a late
268 dnl enough version number. It supplies an option `--with-perl'
269 dnl to allow the user to provide a Perl interpreter. If one
270 dnl isn't provided explicitly, it searches for `perl' and `perl5'
271 dnl in the current PATH, asking them whether they have a late
272 dnl enough version number. The path of the working Perl is
273 dnl put into the `PERL' environment variable; `AC_SUBST' is used
274 dnl to substitute its value into Perl scripts. If there is no
275 dnl Perl to be found, the value of `PERL' is set to be `none'.
276
277 AC_DEFUN([mdw_PROG_PERL],
278 [AC_ARG_WITH([perl],
279 [ --with-perl=PERL specify path to Perl version $1 or newer],
280 [PERL="$withval"],
281 if test -z "$PERL"; then
282 [AC_CACHE_CHECK([for Perl version $1 or later], mdw_cv_prog_perl,
283 [mdw_cv_prog_perl="none"
284 for p in `echo "$PATH:/usr/local/bin" | tr ":" " "`; do
285 case "$p" in /*) ;; *) p=`pwd`/$p ;; esac
286 if mdw__PERL_VERSION(["$p/perl"], $1); then
287 mdw_cv_prog_perl="$p/perl"
288 break
289 fi
290 if mdw__PERL_VERSION(["$p/perl5"], $1); then
291 mdw_cv_prog_perl="$p/perl5"
292 break
293 fi
294 done])
295 PERL="$mdw_cv_prog_perl"])
296 fi
297
298 AC_SUBST(PERL)dnl
299 if test "$PERL" = "none"; then :
300 $3
301 else :
302 $2
303 fi])
304
305 dnl --- *@-mdw_CHECK_PERL-@* ---
306 dnl
307 dnl Author: Mark Wooding
308 dnl
309 dnl Synopsis: mdw_CHECK_PERL(VERSION)
310 dnl
311 dnl Arguments: VERSION = version number of Perl required
312 dnl
313 dnl Use: Verifies that the Perl interpreter in the `PERL' shell
314 dnl variable actually works and is of the right version. If it's
315 dnl not, an error is raised and configuration is aborted.
316
317 AC_DEFUN([mdw_CHECK_PERL],
318 [AC_REQUIRE([mdw_PROG_PERL], [mdw_PROG_PERL([$1])])
319 AC_MSG_CHECKING([whether Perl ($PERL) works])
320 if test "$PERL" != "none" && mdw__PERL_VERSION("$PERL", $1); then
321 AC_MSG_RESULT([yes])
322 else
323 AC_MSG_RESULT([no])
324 AC_MSG_ERROR([Perl version $1 or newer not found.
325 If you have a recent enough Perl, and I just failed to find it, try using
326 the --with-perl=PERL option to give me an explicit pathname.])
327 fi])
328
329 dnl --- *@-mdw_PERLLIB_CHECK-@* ---
330 dnl
331 dnl Author: Mark Wooding
332 dnl
333 dnl Synopsis: mdw_PERLLIB_CHECK(LIBRARY)
334 dnl
335 dnl Arguments: LIBRARY = name of a Perl library to check for
336 dnl
337 dnl Use: Ensures that a Perl script can `use LIBRARY;'. If it can,
338 dnl all's well and good; if it can't, `LIBRARY.pm' is added to
339 dnl the variable `NEEDED_PERLLIBS' and a line which adds
340 dnl `pkgdatadir' to Perl's `@INC' array is placed in the
341 dnl variable `INC_PERLLIBS'; `AC_SUBST' is called for both of
342 dnl these variables. It's expected that `NEEDED_PERLLIBS' will
343 dnl be used in the `Makefile.in' to decide which versions from
344 dnl the distribution need installing.
345 dnl
346 dnl This macro isn't terribly useful in the general case. It
347 dnl Also implicitly assumes that `$PERL' is Perl 5 or later.
348
349 AC_DEFUN([mdw__PERLLIB_INIT],
350 [AC_SUBST(INC_PERLLIBS)dnl
351 AC_SUBST(NEEDED_PERLLIBS)dnl
352 ])
353
354 AC_DEFUN([mdw_PERLLIB_CHECK],
355 [AC_REQUIRE([mdw__PERLLIB_INIT])
356 AC_REQUIRE([mdw_CHECK_PERL], [mdw_PROG_PERL([5])])
357 AC_CACHE_CHECK([for Perl library $1], mdw_cv_perllib_$1,
358 [if $PERL -e 'use $1;' >&5 2>&5; then
359 mdw_cv_perllib_$1="yes"
360 else
361 mdw_cv_perllib_$1="no"
362 fi])
363
364 if test "$mdw_cv_perllib_$1" = "no"; then
365 NEEDED_PERLLIBS="$NEEDED_PERLLIBS $1.pm"
366
367 # --- Deal with autoconf lossage ---
368 #
369 # It doesn't want to define `prefix' until rather later on, so I have
370 # to bodge it here.
371
372 if test -z "$INC_PERLLIBS"; then
373 mdw_old_prefix="$prefix"
374 test "$prefix" = "NONE" && prefix="$ac_default_prefix";
375 INC_PERLLIBS="BEGIN { push @INC, \"`eval echo $datadir/$PACKAGE`\"; }"
376 prefix="$mdw_old_prefix";
377 fi
378 fi])
379
380 dnl --- *@-mdw_GCC_FLAGS-@* ---
381 dnl
382 dnl Author: Mark Wooding
383 dnl
384 dnl Synopsis: mdw_GCC_FLAGS([FLAGS], [CFLAGS], [C++FLAGS])
385 dnl
386 dnl Arguments: FLAGS = GCC compiler flags to add (default is
387 dnl `-pedantic -Wall')
388 dnl CFLAGS = GCC C compiler flags to add (default is empty)
389 dnl C++FLAGS = GCC C++ compiler flags to add (default is
390 dnl `-fhandle-exceptions').
391 dnl
392 dnl Use: If the C compiler is GCC, add the compiler flags.
393
394 AC_DEFUN([mdw_GCC_FLAGS],
395 [if test "$GCC" = "yes"; then
396 CFLAGS="$CFLAGS ifelse([$1], [], [-pedantic -Wall], [$1])"
397 CFLAGS="$CFLAGS ifelse([$2], [], [], [$2])"
398 fi
399 if test "$GXX" = "yes"; then
400 CXXFLAGS="$CXXFLAGS ifelse([$1], [], [-pedantic -Wall], [$1])"
401 CXXFLAGS="$CXXFLAGS ifelse([$3], [], [-fhandle-exceptions], [$3])"
402 fi])
403
404 dnl --- *@-mdw_INIT_LIB-@* ---
405 dnl
406 dnl Author: Mark Wooding
407 dnl
408 dnl Synopsis: mdw_INIT_LIB(LIB, NAME, VERSION, [PACKAGE])
409 dnl
410 dnl Arguments: LIB = the name of the library (and the package)
411 dnl NAME = a presentable version of the library's name
412 dnl VERSION = version of the library
413 dnl PACKAGE = package name to pass on to AM_INIT_AUTOMAKE
414 dnl
415 dnl Use: Sets up various useful variables. This macro calls
416 dnl AM_INIT_AUTOMAKE, which might be considered useful. It also
417 dnl provides variables for the use of `lib-config.in'.
418
419 AC_DEFUN([mdw_INIT_LIB],
420 [AM_INIT_AUTOMAKE(ifelse([$4], [], [$1], [$4]), [$3])
421 LIBRARY="$1" AC_SUBST(LIBRARY)
422 LIBNAME="$2" AC_SUBST(LIBNAME)])
423
424 dnl --- *@-mdw_LIB_CONFIG-@* ---
425 dnl
426 dnl Author: Mark Wooding
427 dnl
428 dnl Synopsis: mdw_LIB_CONFIG(LIB, NAME, VERSION, IF-FOUND, IF-NOT-FOUND)
429 dnl
430 dnl Arguments: LIB = the name of the library (and its configuration program)
431 dnl NAME = a presentable version of the library's name
432 dnl VERSION = version of library required
433 dnl IF-FOUND = what to do if found
434 dnl IF-NOT-FOUND = what to do if not found
435 dnl
436 dnl Use: Configures a library client program, using a configuration
437 dnl script provided by the library maintainer.
438 dnl
439 dnl The default version is 1.0.0pre0; the default action is to
440 dnl add everything to the CFLAGS and LIBS variables, and complain
441 dnl if the library couldn't be found.
442 dnl
443 dnl The variable LIB_VERSION contains the version number of
444 dnl the library; LIB_CFLAGS is the C compiler flags required
445 dnl and LIB_LIBS is the linker flags.
446
447 AC_DEFUN([mdw_LIB_CONFIG],
448 [pushdef([upname], translit([$1], [a-z], [A-Z]))dnl
449 AC_MSG_CHECKING([for $2 library])
450 if $1-config --check $3 >/dev/null 2>&1; then
451 upname[]_VERSION=`$1-config --version`
452 upname[]_CFLAGS=`$1-config --cflags`
453 upname[]_LIBS=`$1-config --libs`
454 AC_SUBST(upname[]_VERSION)
455 AC_SUBST(upname[]_CFLAGS)
456 AC_SUBST(upname[]_LIBS)
457 ifelse([$4], [],
458 [CFLAGS="$CFLAGS $upname[]_CFLAGS"
459 LIBS="$upname[]_LIBS $LIBS"],
460 $4)
461 AC_MSG_RESULT([$upname[]_VERSION])
462 else
463 ifelse([$5], [],
464 AC_MSG_ERROR([$2 library not found or too old.]),
465 $5)
466 AC_MSG_RESULT([not found])
467 fi
468 popdef([upname])])
469
470 dnl --- *@-mdw_MLIB-@* ---
471 dnl
472 dnl Author: Mark Wooding
473 dnl
474 dnl Synopsis: mdw_MLIB(VERSION, IF-FOUND, IF-NOT-FOUND
475 dnl
476 dnl Arguments: VERSION = version of library required
477 dnl IF-FOUND = what to do if found
478 dnl IF-NOT-FOUND = what to do if not found
479 dnl
480 dnl Use: Configures an mLib client program.
481
482 AC_DEFUN([mdw_MLIB], [mdw_LIB_CONFIG(mLib, mLib, $@)])
483
484 dnl --- *@-mdw_MGLIB-@* ---
485 dnl
486 dnl Author: Mark Wooding
487 dnl
488 dnl Synopsis: mdw_MGLIB(VERSION, IF-FOUND, IF-NOT-FOUND
489 dnl
490 dnl Arguments: VERSION = version of library required
491 dnl IF-FOUND = what to do if found
492 dnl IF-NOT-FOUND = what to do if not found
493 dnl
494 dnl Use: Configures an mgLib client program.
495
496 AC_DEFUN([mdw_MGLIB],
497 [AC_REQUIRE([mdw_MLIB], [mdw_MLIB([2.0.3])])
498 mdw_LIB_CONFIG(mgLib, mgLib, $@)])
499
500 dnl --- *@-mdw_CATACOMB-@* ---
501 dnl
502 dnl Author: Mark Wooding
503 dnl
504 dnl Synopsis: mdw_CATACOMB([VERSION], [IF-FOUND], [IF-NOT-FOUND])
505 dnl
506 dnl Arguments: VERSION = version of Catacomb required
507 dnl IF-FOUND = what to do if found
508 dnl IF-NOT-FOUND = what to do if not found
509 dnl
510 dnl Use: Configures the program as a Catacomb client.
511
512 AC_DEFUN([mdw_CATACOMB],
513 [AC_REQUIRE([mdw_MLIB], [mdw_MLIB([2.0.3])])
514 mdw_LIB_CONFIG(catacomb, Catacomb, $@)])
515
516 dnl --- *@-mdw_PK-@* ---
517 dnl
518 dnl Author: Mark Wooding
519 dnl
520 dnl Synopsis: mdw_PK([VERSION], [IF-FOUND], [IF-NOT-FOUND])
521 dnl
522 dnl Arguments: VERSION = version of PK required
523 dnl IF-FOUND = what to do if found
524 dnl IF-NOT-FOUND = what to do if not found
525 dnl
526 dnl Use: Configures the program as a PK client.
527
528 AC_DEFUN([mdw_PK],
529 [AC_REQUIRE([mdw_MLIB], [mdw_MLIB([2.0.3])])
530 mdw_LIB_CONFIG(pk, PK, $@)])
531
532 dnl --- *@-mdw_OPT_NDEBUG-@* ---
533 dnl
534 dnl Author: Mark Wooding
535 dnl
536 dnl Synopsis: mdw_OPT_NDEBUG
537 dnl
538 dnl Arguments: ---
539 dnl
540 dnl Use: Turns on the `NDEBUG' flag, to disable useful things like
541 dnl assertions.
542
543 AC_DEFUN([mdw_OPT_NDEBUG],
544 [AC_ARG_ENABLE(debugging,
545 [ --disable-debugging spews vast swathes of useless information],
546 [if test "$enableval" = "no"; then
547 AC_DEFINE([NDEBUG], [1],
548 [Define to turn off assertions and other debugging. Not recommended.])
549 fi])])
550
551 dnl --- *@-mdw_OPT_EFENCE-@* ---
552 dnl
553 dnl Author: Mark Wooding
554 dnl
555 dnl Synopsis: mdw_OPT_EFENCE
556 dnl
557 dnl Arguments: ---
558 dnl
559 dnl Use: Links with the Electric Fence library.
560
561 AC_DEFUN([mdw_OPT_EFENCE],
562 [AC_ARG_WITH(electric-fence,
563 [ --with-electric-fence link programs with Electric Fence],
564 [if test "$withval" = "yes"; then
565 AC_CHECK_LIB(efence, malloc)
566 fi])])
567
568 dnl --- *@-mdw_OPT_TRACE-@* ---
569 dnl
570 dnl Author: Mark Wooding
571 dnl
572 dnl Synopsis: mdw_OPT_TRACE
573 dnl
574 dnl Arguments: ---
575 dnl
576 dnl Use: Turns on the `NTRACE' flag, to disable useful things like
577 dnl trace outputs.
578
579 AC_DEFUN([mdw_OPT_TRACE],
580 [AC_ARG_ENABLE(tracing,
581 [ --disable-tracing disable output of trace information],
582 [if test "$enableval" = "no"; then
583 AC_DEFINE([NTRACE], [1], [Define to turn off tracing.])
584 fi])])
585
586 dnl --- *@-mdw_OPT_mLib_TRACK-@* ---
587 dnl
588 dnl Author: Mark Wooding
589 dnl
590 dnl Synopsis: mdw_OPT_mLib_TRACK(PROGRAM)
591 dnl
592 dnl Arguments: PROGRAM = name of this program or package.
593 dnl
594 dnl Use: Controls the unsupported mLib memory tracker. The
595 dnl following are defined:
596 dnl
597 dnl --enable-track turns on malloc tracking
598 dnl --enable-blame-PROGRAM tracks malloc contexts in PROGRAM
599 dnl
600 dnl There must be a separate `blame' option for each program,
601 dnl so that the various blame options in a hierarchy get
602 dnl propagated properly. This is an obsolete feature from the
603 dnl days when mLib was provided as a subdirectory of other
604 dnl packages.
605
606 AC_DEFUN([mdw_OPT_mLib_TRACK],
607 [AC_REQUIRE([mdw_OPT_TRACE])
608 AC_ARG_ENABLE(track,
609 [ --enable-track enable tracking of malloc and free],
610 [AC_DEFINE([TRACK_ENABLE], [1],
611 [Define to turn on memory tracking. Doesn't work properly.])])
612 AC_ARG_ENABLE(blame-$1,
613 [ --enable-blame-$1
614 track malloc contexts while in $1],
615 [AC_DEFINE([TRACK_BLAME], [1],
616 [Define to track mallocs in this code.])])])
617
618 dnl --- *@-mdw_OPT_mLib_DEBUG-@* ---
619 dnl
620 dnl Author: Mark Wooding
621 dnl
622 dnl Synopsis: mdw_OPT_mLib_DEBUG(PROGRAM)
623 dnl
624 dnl Arguments: PROGRAM = name of this program or package.
625 dnl
626 dnl Use: Provides all of the above debugging options.
627
628 AC_DEFUN([mdw_OPT_mLib_DEBUG],
629 [AC_REQUIRE([mdw_OPT_NDEBUG])
630 AC_REQUIRE([mdw_OPT_mLib_TRACK], [mdw_OPT_mLib_TRACK([$1])])])
631
632 dnl --- *@-mdw_DEFINE_PATHS-@*
633 dnl
634 dnl Author: Mark Wooding
635 dnl
636 dnl Synopsis: mdw_DEFINE_PATHS(CODE)
637 dnl
638 dnl Arguments: CODE = shell script code to execute
639 dnl
640 dnl Use: Fixes up various variables so that pathname defines can be
641 dnl defined. Within CODE, you may use the following macros:
642 dnl
643 dnl mdw_PROG(NAME) Transformed program name
644 dnl
645 dnl mdw_PATH(PATH) Expanded path (may contain variables)
646 dnl
647 dnl mdw_DEFINE_PROG(SYMBOL, PROG)
648 dnl Define a symbol as a transformed
649 dnl program name.
650 dnl
651 dnl mdw_DEFINE_PATH(SYMBOL, NAME)
652 dnl Define a symbol as an expanded path
653
654 AC_DEFUN([mdw_DEFINE_PATHS],
655 [mdw_prefix=$prefix mdw_exec_prefix=$exec_prefix
656 mdw_transform=`echo "$program_transform_name"|sed 's,\\\\\\\\,\\\\,g; s,\\$\\$,$,g'`
657 test "$prefix" = "NONE" && prefix=$ac_default_prefix
658 test "$exec_prefix" = "NONE" && exec_prefix=$prefix
659 $1
660 prefix=$mdw_prefix exec_prefix=$mdw_exec_prefix])
661
662 AC_DEFUN([mdw_PROG], [`echo "$1"|sed "$mdw_transform"`])
663 AC_DEFUN([mdw_PATH], [dnl
664 `t="$1"; dnl
665 while :; do dnl
666 case "$t" in dnl
667 *\\$[]*) t=\`eval echo "$t"\`;; dnl
668 *) break;; dnl
669 esac; done; dnl
670 echo "$t"`])
671 AC_DEFUN([mdw_DEFINE_PROG],
672 [AC_DEFINE_UNQUOTED([$1], ["mdw_PROG([$2])"],
673 [Program name for $2.])])
674 AC_DEFUN([mdw_DEFINE_PATH], [AC_DEFINE_UNQUOTED([$1], ["mdw_PATH([$2])"],
675 [Pathname for $2.])])
676
677 dnl --- *@-mdw_DIR_TEXMF-@* ---
678 dnl
679 dnl Author: Mark Wooding
680 dnl
681 dnl Synopsis: mdw_DIR_TEXMF
682 dnl
683 dnl Arguments: ---
684 dnl
685 dnl Use: Sets the substitution `texmfdir' as a sensible TeX install
686 dnl tree.
687
688 AC_DEFUN([mdw_DIR_TEXMF], [
689 AC_ARG_WITH([texmfdir],
690 [ --with-texmfdir=DIR set the TeX install directory to DIR],
691 [texmfdir=$withval],
692 [AC_MSG_CHECKING([where to put installed TeX files])
693 mdw_DEFINE_PATHS([
694 texmfdir='${datadir}/texmf'
695 for d in \
696 '${datadir}/texmf' '${prefix}/lib/texmf' \
697 '${prefix}/texmf' '${libdir}/lib/texmf'; do
698 if test -d "mdw_PATH([$d])"; then
699 texmfdir=$d
700 break
701 fi
702 done
703 AC_MSG_RESULT([$texmfdir])])])
704 AC_SUBST(texmfdir)])
705
706 dnl --- *@-mdw_MANEXT-@* ---
707 dnl
708 dnl Author: Mark Wooding
709 dnl
710 dnl Synopsis: mdw_MANEXT
711 dnl
712 dnl Arguments: ---
713 dnl
714 dnl Use: Sets the substitution `manext' for man page extensions.
715
716 AC_DEFUN([mdw_MANEXT], [
717 AC_ARG_WITH([man-ext],
718 [ --with-man-ext=EXT give manpages the EXT extension (e.g., foo.3EXT)],
719 [manext=$withval], [manext=mLib])
720 AC_SUBST(manext)])
721
722 dnl----- That's all, folks --------------------------------- *@--GLOB-END--@*