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