chiark / gitweb /
Kill mdw_REQUIRE.
[runlisp] / 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 as int if you don'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 environ is declared somewhere sensible.])
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 [mdw_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 [mdw_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 mdw_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 [mdw_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 [mdw_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 [mdw_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], [Define to turn off debugging.])
544 fi])])
545
546 dnl --- *@-mdw_OPT_EFENCE-@* ---
547 dnl
548 dnl Author:     Mark Wooding
549 dnl
550 dnl Synopsis:   mdw_OPT_EFENCE
551 dnl
552 dnl Arguments:  ---
553 dnl
554 dnl Use:        Links with the Electric Fence library.
555
556 AC_DEFUN([mdw_OPT_EFENCE],
557 [AC_ARG_WITH(electric-fence,
558 [  --with-electric-fence   link programs with Electric Fence],
559 [if test "$withval" = "yes"; then
560   AC_CHECK_LIB(efence, malloc)
561 fi])])
562
563 dnl --- *@-mdw_OPT_TRACE-@* ---
564 dnl
565 dnl Author:     Mark Wooding
566 dnl
567 dnl Synopsis:   mdw_OPT_TRACE
568 dnl
569 dnl Arguments:  ---
570 dnl
571 dnl Use:        Turns on the `NTRACE' flag, to disable useful things like
572 dnl             trace outputs.
573
574 AC_DEFUN([mdw_OPT_TRACE],
575 [AC_ARG_ENABLE(tracing,    
576 [  --disable-tracing       disable output of trace information],
577 [if test "$enableval" = "no"; then
578   AC_DEFINE([NTRACE], [1], [Define to disable tracing output.])
579 fi])])
580
581 dnl --- *@-mdw_OPT_mLib_TRACK-@* ---
582 dnl
583 dnl Author:     Mark Wooding
584 dnl
585 dnl Synopsis:   mdw_OPT_mLib_TRACK(PROGRAM)
586 dnl
587 dnl Arguments:  PROGRAM = name of this program or package.
588 dnl
589 dnl Use:        Controls the unsupported mLib memory tracker.  The
590 dnl             following are defined:
591 dnl
592 dnl               --enable-track          turns on malloc tracking
593 dnl               --enable-blame-PROGRAM  tracks malloc contexts in PROGRAM
594 dnl
595 dnl             There must be  a separate `blame' option for each program,
596 dnl             so that the various blame options in a hierarchy get
597 dnl             propagated properly.  This is an obsolete feature from the
598 dnl             days when mLib was provided as a subdirectory of other
599 dnl             packages.
600
601 AC_DEFUN([mdw_OPT_mLib_TRACK],
602 [AC_REQUIRE([mdw_OPT_TRACE])
603 AC_ARG_ENABLE(track,
604 [  --enable-track          enable tracking of malloc and free],
605 [AC_DEFINE([TRACK_ENABLE], [1], [Define to enable malloc tracking.])])
606 AC_ARG_ENABLE(blame-$1,
607 [  --enable-blame-$1
608                           track malloc contexts while in $1],
609 [AC_DEFINE([TRACK_BLAME], [1],
610            [Define to track mallocs in this code.])])])
611
612 dnl --- *@-mdw_OPT_mLib_DEBUG-@* ---
613 dnl
614 dnl Author:     Mark Wooding
615 dnl
616 dnl Synopsis:   mdw_OPT_mLib_DEBUG(PROGRAM)
617 dnl
618 dnl Arguments:  PROGRAM = name of this program or package.
619 dnl
620 dnl Use:        Provides all of the above debugging options.
621
622 AC_DEFUN([mdw_OPT_mLib_DEBUG],
623 [AC_REQUIRE([mdw_OPT_NDEBUG])
624 AC_REQUIRE([mdw_OPT_mLib_TRACK], [mdw_OPT_mLib_TRACK([$1])])])
625
626 dnl --- *@-mdw_DEFINE_PATHS-@*
627 dnl
628 dnl Author:     Mark Wooding
629 dnl
630 dnl Synopsis:   mdw_DEFINE_FILES(CODE)
631 dnl
632 dnl Arguments:  CODE = shell script code to execute
633 dnl
634 dnl Use:        Fixes up various variables so that pathname defines can be
635 dnl             defined.  Within CODE, you may use the following macros:
636 dnl
637 dnl             mdw_PROG(NAME)          Transformed program name
638 dnl
639 dnl             mdw_PATH(PATH)          Expanded path (may contain variables)
640 dnl
641 dnl             mdw_DEFINE_PROG(SYMBOL, PROG)
642 dnl                                     Define a symbol as a transformed
643 dnl                                     program name.
644 dnl
645 dnl             mdw_DEFINE_PATH(SYMBOL, NAME)
646 dnl                                     Define a symbol as an expanded path
647
648 AC_DEFUN([mdw_DEFINE_PATHS],
649 [mdw_prefix=$prefix mdw_exec_prefix=$exec_prefix
650 mdw_transform=`echo "$program_transform_name"|sed 's,\\\\\\\\,\\\\,g; s,\\$\\$,$,g'`
651 test "$prefix" = "NONE" && prefix=$ac_default_prefix
652 test "$exec_prefix" = "NONE" && exec_prefix=$prefix
653 $1
654 prefix=$mdw_prefix exec_prefix=$mdw_exec_prefix])
655
656 AC_DEFUN([mdw_PROG], [`echo "$1"|sed "$mdw_transform"`])
657 AC_DEFUN([mdw_PATH], [dnl
658 `t="$1"; dnl
659 while :; do dnl
660 case "$t" in dnl
661 *\\$[]*) t=\`eval echo "$t"\`;; dnl
662 *) break;; dnl
663 esac; done; dnl
664 echo "$t"`])
665 AC_DEFUN([mdw_DEFINE_PROG], 
666          [AC_DEFINE_UNQUOTED([$1], ["mdw_PROG([$2])"],
667                              [Program name for $2.])])
668 AC_DEFUN([mdw_DEFINE_PATH], [AC_DEFINE_UNQUOTED([$1], ["mdw_PATH([$2])"],
669                                                 [Pathname for $2.])])
670
671 dnl --- *@-mdw_DIR_TEXMF-@* ---
672 dnl
673 dnl Author:     Mark Wooding
674 dnl
675 dnl Synopsis:   mdw_DIR_TEXMF
676 dnl
677 dnl Arguments:  ---
678 dnl
679 dnl Use:        Sets the substitution `texmfdir' as a sensible TeX install
680 dnl             tree.
681
682 AC_DEFUN([mdw_DIR_TEXMF], [
683 AC_ARG_WITH([texmfdir], 
684 [  --with-texmfdir=DIR     set the TeX install directory to DIR],
685 [texmfdir=$withval],
686 [AC_MSG_CHECKING([where to put installed TeX files])
687 mdw_DEFINE_PATHS([
688 texmfdir='${datadir}/texmf'
689 for d in \
690   '${datadir}/texmf' '${prefix}/lib/texmf' \
691   '${prefix}/texmf' '${libdir}/lib/texmf'; do
692   if test -d "mdw_PATH([$d])"; then
693     texmfdir=$d
694     break
695   fi
696 done
697 AC_MSG_RESULT([$texmfdir])])])
698 AC_SUBST(texmfdir)])
699
700 dnl --- *@-mdw_MANEXT-@* ---
701 dnl
702 dnl Author:     Mark Wooding
703 dnl
704 dnl Synopsis:   mdw_MANEXT
705 dnl
706 dnl Arguments:  ---
707 dnl
708 dnl Use:        Sets the substitution `manext' for man page extensions.
709
710 AC_DEFUN([mdw_MANEXT], [
711 AC_ARG_WITH([man-ext],
712 [  --with-man-ext=EXT      give manpages the EXT extension (e.g., foo.3EXT)],
713 [manext=$withval], [manext=mLib])
714 AC_SUBST(manext)])
715
716 dnl----- That's all, folks --------------------------------- *@--GLOB-END--@*