chiark / gitweb /
aclocal (mdw_CURSES): Fix definition of HAVE_CURSES.
[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 [$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--@*