Fix mdw__PERL_VERSION stuff. Grumble.
[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_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--@*