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