]> git.lyx.org Git - features.git/blob - acinclude.m4
New dutch example files; the usual set of dec cxx fixes.
[features.git] / acinclude.m4
1 dnl Some useful functions for LyXs configure.in                 -*- sh -*-
2 dnl Author: Jean-Marc Lasgouttes (Jean-Marc.Lasgouttes@inria.fr)
3 dnl         Lars Gullik Bjønnes (larsbj@lyx.org)
4
5
6 dnl Usage LYX_GET_VERSION   Sets "lyx_version" to the version of LyX being 
7 dnl   built, displays it and sets variable "lyx_devel" to yes or no depending 
8 dnl   whether the version is a development release or not. 
9 AC_DEFUN(LYX_GET_VERSION,[
10 changequote(, ) dnl
11 VERSION=`grep '#define *LYX_VERSION' $1 |
12               sed -e 's/^.*"\(.*\)"$/\1/' 2>/dev/null`
13 echo "configuring LyX version $VERSION"
14 if echo "$VERSION" | grep 'cvs' >/dev/null ; then
15   lyx_devel_version=yes
16   echo "WARNING: This is a development version. Expect bugs."
17 else
18   lyx_devel_version=no
19 fi
20 if echo "$VERSION" | grep 'pre' > /dev/null ; then
21     lyx_prerelease=yes
22     echo "WARNING: This is a prerelease. Be careful and backup your documents."
23 else
24     lyx_prerelease=no
25 fi
26 changequote([, ]) dnl
27 PACKAGE=lyx${program_suffix}
28 AC_SUBST(lyx_devel_version)
29 if test $lyx_devel_version = yes ; then 
30   AC_DEFINE(DEVEL_VERSION, 1, Define if you are building a development version of LyX)
31 fi])
32
33 dnl Usage: LYX_ERROR(message)  Displays the warning "message" and sets the
34 dnl flag lyx_error to yes.
35 AC_DEFUN(LYX_ERROR,[
36 lyx_error_txt="$lyx_error_txt
37 ** $1
38 "
39 lyx_error=yes])
40
41
42 dnl Usage: LYX_WARNING(message)  Displays the warning "message" and sets the
43 dnl flag lyx_warning to yes.
44 AC_DEFUN(LYX_WARNING,[
45 lyx_warning_txt="$lyx_warning_txt
46 == $1
47 "
48 lyx_warning=yes])
49
50
51 dnl Usage: LYX_LIB_ERROR(file,library)  Displays an error message indication 
52 dnl  that 'file' cannot be found because 'lib' may be uncorrectly installed.
53 AC_DEFUN(LYX_LIB_ERROR,[
54 LYX_ERROR([Cannot find $1. Please check that the $2 library
55    is correctly installed on your system.])])
56
57
58 dnl Usage: LYX_CHECK_ERRORS  Displays a warning message if a LYX_ERROR
59 dnl   has occured previously. 
60 AC_DEFUN(LYX_CHECK_ERRORS,[
61 if test x$lyx_error = xyes; then
62 cat <<EOF
63 **** The following problems have been detected by configure. 
64 **** Please check the messages below before running 'make'.
65 **** (see the section 'Problems' in the INSTALL file)
66 $lyx_error_txt
67 $lyx_warning_txt
68 deleting cache $cache_file
69 EOF
70   rm -f $cache_file
71 else
72
73 if test x$lyx_warning = xyes; then
74 cat <<EOF
75 === The following minor problems have been detected by configure. 
76 === Please check the messages below before running 'make'.
77 === (see the section 'Problems' in the INSTALL file)
78 $lyx_warning_txt
79 EOF
80 fi
81 cat <<EOF
82 Configuration of LyX was successful.  
83 Type 'make' to compile the program, 
84 and then 'make install' to install it.
85 EOF
86 fi])
87
88
89 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
90 dnl             
91 define(LYX_SEARCH_PROG,[dnl
92 for ac_prog in $2 ; do
93 # Extract the first word of "$ac_prog", so it can be a program name with args.
94   set dummy $ac_prog ; ac_word=$[2]
95   if test -z "[$]$1"; then
96     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS=":"
97     for ac_dir in $PATH; do
98       test -z "$ac_dir" && ac_dir=.
99       if test -f [$ac_dir/$ac_word]; then
100         $1="$ac_prog"
101         break
102       fi
103     done
104     IFS="$ac_save_ifs"
105   fi
106
107   if test -n "[$]$1"; then
108     ac_result=yes
109   else
110     ac_result=no
111   fi
112   ifelse($3,,,[$3])
113   test -n "[$]$1" && break
114 done
115 ])dnl
116
117
118 AC_DEFUN(LYX_PROG_CXX_WORKS,
119 [AC_LANG_SAVE
120 AC_LANG_CPLUSPLUS
121 AC_TRY_COMPILER([class foo { int bar; }; int main(){return(0);}], ac_cv_prog_cxx_works, ac_cv_prog_cxx_cross)
122 AC_LANG_RESTORE
123 if test $ac_cv_prog_cxx_works = no; then
124   CXX=
125 fi
126 cross_compiling=$ac_cv_prog_cxx_cross
127 ])
128
129
130 AC_DEFUN(LYX_PROG_CXX,
131 [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
132 AC_MSG_CHECKING([for a working C++ compiler])
133 LYX_SEARCH_PROG(CXX, $CCC g++ gcc c++ CC cxx xlC cc++, LYX_PROG_CXX_WORKS)
134
135 if test -z "$CXX" ; then
136   AC_ERROR([Unable to find a working C++ compiler])
137 fi
138
139 AC_SUBST(CXX)
140 AC_MSG_RESULT($CXX)
141
142 AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])
143 AC_MSG_RESULT($cross_compiling)
144
145 AC_PROG_CXX_GNU
146
147 dnl We might want to get or shut warnings.
148 AC_ARG_WITH(warnings,
149   [  --with-warnings         tell GNU C++ to display more warnings],,
150   [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
151         with_warnings=yes;
152     else
153         with_warnings=no;
154     fi;])
155 if test x$with_warnings = xyes ; then
156   lyx_flags="$lyx_flags warnings"
157   AC_DEFINE(WITH_WARNINGS, 1,
158   [Define this if you want to see the warning directives put here and
159    there by the developpers to get attention])
160 fi
161
162 # optimize less for development versions
163 if test $lyx_devel_version = yes -o $lyx_prerelease = yes ; then
164   lyx_opt="-O"
165 else
166   lyx_opt="-O2"
167 fi
168
169 # set the debug flags correctly.
170 if test $ac_cv_prog_gxx = yes; then
171   GXX=yes
172 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
173 dnl plays around with CXXFLAGS (such as to build both debugging and
174 dnl normal versions of a library), tasteless as that idea is.
175   ac_test_CXXFLAGS="${CXXFLAGS+set}"
176   ac_save_CXXFLAGS="$CXXFLAGS"
177   CXXFLAGS=
178 dnl Check the version of g++
179   gxx_version=`g++ --version`
180   
181   AC_PROG_CXX_G
182   if test "$ac_test_CXXFLAGS" = set; then
183     CXXFLAGS="$ac_save_CXXFLAGS"
184   elif test $ac_cv_prog_cxx_g = yes; then
185     case $gxx_version in
186       2.7*) CXXFLAGS="$lyx_opt";;
187       2.95.*) CXXFLAGS="-g $lyx_opt";;
188       *)    CXXFLAGS="-g $lyx_opt -fno-exceptions -fno-rtti";;
189     esac
190   else
191     CXXFLAGS="$lyx_opt"
192   fi
193   if test x$with_warnings = xyes ; then
194     case $gxx_version in
195         2.95.*) CXXFLAGS="$CXXFLAGS -Wall";;
196         *) CXXFLAGS="$CXXFLAGS -ansi -Wall";;
197     esac
198     if test $lyx_devel_version = yes ; then
199         case $gxx_version in
200             2.95.*) ;;
201             *) CXXFLAGS="$CXXFLAGS -pedantic";;
202         esac
203     fi
204   fi
205 else
206   GXX=
207   test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
208 fi
209 ])dnl
210
211
212 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
213 dnl   supports RTTI
214 AC_DEFUN(LYX_CXX_RTTI,[
215 ### Check whether the compiler supports runtime type information
216 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
217  [AC_TRY_RUN([
218 class rtti {
219 public:
220    virtual int tag() { return 0; }
221 };
222 class derived1 : public rtti {
223 public:
224     int tag() { return 1; }
225 };
226 class derived2 : public rtti {
227 public:
228     int tag() { return 2; }
229 };
230 int main() {
231     derived1 * foo1 = new derived1();
232     derived2 * foo2 = new derived2();
233     rtti * bar = foo1;
234     derived1 * bar1 = dynamic_cast<derived1 *>(bar);
235     if (bar1 == 0)
236         exit(1);
237     bar = foo2;
238     bar1 = dynamic_cast<derived1 *>(bar);
239     if (bar1 != 0)
240         exit(1);
241     return 0;
242 }
243 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
244 ])
245 if test x$lyx_cv_rtti = xyes ; then
246   AC_DEFINE(HAVE_RTTI, 1, 
247    [Define to 1 if your compiler supports runtime type information])
248 fi])
249
250
251 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
252 dnl   understands the "explicit" directive.
253 AC_DEFUN(LYX_CXX_EXPLICIT,[
254 ### Check whether the compiler understands the keyword `explicit'
255 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
256  [AC_TRY_COMPILE([
257 class Expl {
258 public:
259         explicit Expl() {};
260 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
261 ])
262 if test $lyx_cv_explicit = no ; then
263   AC_DEFINE(explicit,[ ], 
264    [Define to nothing if your compiler does not understand the
265    'explicit' directive])
266 fi])
267
268
269 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
270 dnl   has a working stl stack template
271 AC_DEFUN(LYX_CXX_STL_STACK,[
272 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
273  [AC_TRY_COMPILE([
274 #include <stack>
275 using std::stack;
276 ],[
277     stack<int> stakk;
278     stakk.push(0);
279 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
280 ])
281 if test $lyx_cv_broken_stack = yes ; then
282   AC_DEFINE(BROKEN_STL_STACK, 1, 
283    [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
284    correctly])
285 fi])
286
287
288 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
289 dnl   supports modern STL streams
290 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
291 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
292  [AC_TRY_COMPILE([
293 #include <iostream>
294 ],[
295  std::streambuf * test = std::cerr.rdbuf();
296  test->pubsync();
297 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
298 ])
299 if test $lyx_cv_modern_streams = yes ; then
300   AC_DEFINE(MODERN_STL_STREAMS, 1, 
301    [Define if you have modern standard-compliant STL streams])
302 fi])
303
304
305 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
306 dnl   has a working stl string container, the check is really stupid
307 dnl   and could need some improvement.
308 AC_DEFUN(LYX_CXX_STL_STRING,[
309     AC_REQUIRE([LYX_PROG_CXX])
310     AC_MSG_CHECKING(whether the included std::string should be used)
311     AC_ARG_WITH(included-string,[
312         --with-included-string  use LyX string class instead of STL string
313     ],[
314         with_included_string=$withval
315     ],[
316         AC_TRY_COMPILE([
317             #include <string>
318             using std::string;
319         ],[
320             string a("hello there");
321             a.clear();
322             a = "hey";
323             a.erase();
324         ],[
325             with_included_string=no
326         ],[
327             with_included_string=yes
328             
329         ])
330     ])
331     if test x$with_included_string = xyes ; then
332         AC_DEFINE(USE_INCLUDED_STRING, 1,
333             [Define to use the lyxstring class bundled with LyX.])
334             lyx_flags="$lyx_flags included-string"
335     fi
336     AM_CONDITIONAL(USE_LYXSTRING, test x$with_included_string = xyes)
337     AC_MSG_RESULT([$with_included_string])
338 ])
339
340
341 dnl LYX_CXX_MUTABLE
342 AC_DEFUN(LYX_CXX_MUTABLE, [
343 AC_REQUIRE([LYX_PROG_CXX])
344 AC_MSG_CHECKING(if C++ compiler supports mutable)
345 AC_TRY_COMPILE(
346 [
347 class k {       
348         mutable char *c;
349 public:
350    void foo() const { c=0; }
351 };
352 ],[
353 ],[
354   ac_mutable=yes
355   AC_DEFINE(HAVE_MUTABLE, 1, 
356    [Defined if you compiler supports 'mutable'.])
357 ],[
358   ac_mutable=no
359 ]) 
360 AC_MSG_RESULT([$ac_mutable])
361 ])
362
363
364 dnl LYX_CXX_PARTIAL
365 AC_DEFUN(LYX_CXX_PARTIAL, [
366 AC_REQUIRE([LYX_PROG_CXX])
367 AC_MSG_CHECKING(if C++ compiler supports partial specialization)
368 AC_TRY_COMPILE(
369 [
370 template<class T, class K>
371 class k {       
372 public:
373 };
374 template<class T> class k<void,T> { };
375 ],[
376   k<float, float> b;
377   k<void,void> a;
378 ],[
379   ac_partial_specialization=yes
380   AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1, 
381    [Defined if your compiler supports partial specialization.])
382 ],[
383   ac_partial_specialization=no
384 ]) 
385 AC_MSG_RESULT([$ac_partial_specialization])
386 ])
387
388
389 dnl Usage: LYX_CXX_NAMESPACES : checks whether the C++ compiler
390 dnl   has a correct namespace handling and define CXX_WORKING_NAMESPACES 
391 dnl   if true. This macro does not do a thourough test, but it should be 
392 dnl   good enough to suit our needs.
393 AC_DEFUN(LYX_CXX_NAMESPACES,[
394 AC_CACHE_CHECK(for correct namespaces support,lyx_cv_cxx_namespace,
395  [AC_TRY_COMPILE([
396   #include <vector>
397   using std::vector;
398 ],[
399         vector<int> test;
400         return 0;
401 ],lyx_cv_cxx_namespace=yes,lyx_cv_cxx_namespace=no)
402 ])
403 if test $lyx_cv_cxx_namespace = yes ; then
404   AC_DEFINE(CXX_WORKING_NAMESPACES, 1, 
405    [Define if your C++ compiler has correct support for namespaces])
406 fi])
407
408
409 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
410 dnl   provides wrappers for C headers and use our alternate version otherwise.
411 AC_DEFUN(LYX_CXX_CHEADERS,[
412 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
413  [AC_TRY_CPP([
414 #include <clocale>
415 #include <cctype>
416 #include <cerrno>
417 #include <cmath>
418 #include <csignal>
419 #include <cstdio>
420 #include <cstdlib>
421 #include <cstring>
422 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
423 if test $lyx_cv_cxx_cheaders = no ; then
424   LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)  
425 fi])
426
427
428 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
429 AC_DEFUN(LYX_PATH_XPM,[
430 ### Check for Xpm library
431 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
432         [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
433
434 ### Check for Xpm headers
435 lyx_cv_xpm_h_location="<xpm.h>"
436 AC_CHECK_HEADER(X11/xpm.h,[
437   ac_cv_header_xpm_h=yes
438   lyx_cv_xpm_h_location="<X11/xpm.h>"],[
439 AC_CHECK_HEADER(xpm.h,[],[
440 LYX_LIB_ERROR(xpm.h,Xpm)])])
441 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
442
443 ### Test for the header version
444 if test $ac_cv_header_xpm_h = yes; then
445   AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
446   [ cat > conftest.$ac_ext <<EOF
447 #line __oline__ "configure"
448 #include "confdefs.h"
449
450 #include XPM_H_LOCATION
451 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
452 EOF
453     eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
454       grep '^"%%%"'  2>/dev/null | \
455       sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
456     case "$lyx_cv_xpmr" in
457 changequote(,)
458      [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
459             lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
460 changequote([,])
461          *) ;;
462     esac
463     lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
464     rm -f conftest*])
465   case "$lyx_cv_xpmr" in 
466 changequote(,)
467         [789]|[0-9][0-9]*) ;;
468 changequote([,])
469         *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old. 
470    If you experience strange crashes with LyX, try to upgrade 
471    to at least version 4.7 (aka 3.4g).
472    If you have installed a newer version of the library, check whether you
473    have an old xpm.h header file in your include path.]);;
474   esac
475 fi])
476
477
478 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
479 AC_DEFUN(LYX_PATH_XFORMS,[
480 ### Check for xforms library
481 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS", 
482   [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS", 
483     [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS) 
484
485 ### Check for xforms headers
486 lyx_cv_forms_h_location="<forms.h>"
487 AC_CHECK_HEADER(X11/forms.h,[
488   ac_cv_header_forms_h=yes
489   lyx_cv_forms_h_location="<X11/forms.h>"],[
490 AC_CHECK_HEADER(forms.h,[],[
491 LYX_LIB_ERROR(forms.h,forms)])])
492 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
493 if test $ac_cv_header_forms_h = yes; then
494   AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
495   [ cat > conftest.$ac_ext <<EOF
496 #line __oline__ "configure"
497 #include "confdefs.h"
498
499 #include FORMS_H_LOCATION
500 #if ! defined(FL_INCLUDE_VERSION)
501 "%%%"(unknown)"%%%"
502 #else
503 "%%%"FL_VERSION.FL_REVISION"%%%"
504 #endif
505 EOF
506 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
507   grep '^"%%%"'  2>/dev/null | \
508   sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
509 rm -f conftest*])
510 case "$lyx_cv_xfversion" in 
511   "(unknown)"|0.82|0.83|0.84|0.85) 
512      LYX_ERROR(dnl
513 Version $lyx_cv_xfversion of xforms is not compatible with LyX. 
514    This version of LyX works best with version 0.88[,] although it
515    supports also versions 0.81[,] 0.86 and 0.87.) ;;
516   0.81|0.86|0.87) 
517      LYX_WARNING(dnl
518 While LyX is compatible with version $lyx_cv_xfversion of xforms[,] 
519    it is recommended that you upgrade to version 0.88.) ;;
520      0.88) ;;
521      0.89) LYX_WARNING(dnl
522 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
523 it is an unproven version and might still have some bugs. If you
524 have problems[,] please use version 0.88 instead.) ;;
525           *) LYX_WARNING(dnl
526 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,] 
527    since it is newer than 0.88. You might have slight problems with it.);;
528 esac
529 fi])
530
531
532 dnl Usage: LYX_HPUX  Checks for HP-UX and update CXXFLAGS accordingly
533 AC_DEFUN(LYX_HPUX,
534 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
535 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
536 os=`uname -s | tr '[A-Z]' '[a-z]'`
537 ac_cv_hpux=no
538 test "$os" = hp-ux && ac_cv_hpux=yes])
539 if test "$ac_cv_hpux" = yes; then
540  test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
541 fi])
542
543
544 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
545 dnl   if necessary
546 AC_DEFUN(LYX_SUNOS4,
547 [#The headers are not correct under SunOS4
548 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
549 changequote(, ) dnl
550 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
551 changequote([, ]) dnl
552 ac_cv_sunos4=no
553 test "$os" = SunOS4 && ac_cv_sunos4=yes])
554 if test "$ac_cv_sunos4" = yes; then
555  test "x$GXX" = xyes && lyx_broken_headers=yes
556 fi])
557
558
559 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
560 dnl   if necessary
561 AC_DEFUN(LYX_SCO,
562 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
563 ac_cv_sco=no
564 if test `uname -s` != "SCO_SV"; then
565   lyx_machine_rel=`uname -m`:`uname -r`
566   if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
567   then
568     if test -f /usr/options/cb.name; then
569       ac_cv_sco=no
570     elif /bin/uname -X 2>/dev/null >/dev/null ; then
571       ac_cv_sco=yes
572     fi
573   fi
574 fi])
575 if test "$ac_cv_sco" = yes; then
576  test "x$GXX" = xyes && lyx_broken_headers=yes
577 fi])
578
579
580 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value, 
581 dnl                       [default-yes-value])  
582 dnl  Adds a --with-'dir-name' option (described by 'desc') and puts the 
583 dnl  resulting directory name in 'dir-var-name'.
584 AC_DEFUN(LYX_WITH_DIR,[
585   AC_ARG_WITH($1,[  --with-$1     specify $2])
586   AC_MSG_CHECKING([for $2])
587   if test -z "$with_$3"; then
588      AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
589   else
590     test "x$with_$3" = xyes && with_$3=$5
591     lyx_cv_$3="$with_$3"
592   fi
593   AC_MSG_RESULT($lyx_cv_$3)])
594
595
596 dnl Usage: LYX_LOOP_DIR(value,action)
597 dnl Executes action for values of variable `dir' in `values'. `values' can 
598 dnl use ":" as a separator.
599 AC_DEFUN(LYX_LOOP_DIR,[
600 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
601 for dir in `eval "echo $1"`; do
602   if test ! "$dir" = NONE; then
603     test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
604     $2
605   fi
606 done
607 IFS=$ac_save_ifs
608 ])
609
610
611 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable 
612 dnl var-name. 
613 AC_DEFUN(LYX_ADD_LIB_DIR,[
614 $1="${$1} -L$2"
615 if test "`(uname) 2>/dev/null`" = SunOS &&
616     uname -r | grep '^5' >/dev/null; then
617   if test $ac_cv_prog_gxx = yes ; then 
618     $1="${$1} -Wl[,]-R$2" 
619   else
620     $1="${$1} -R$2"
621   fi
622 fi])
623
624
625 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable 
626 dnl var-name. 
627 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
628
629
630 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
631 dnl if the cache file is inconsistent with the current host,
632 dnl target and build system types, execute CMD or print a default
633 dnl error message.
634 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
635     AC_REQUIRE([AC_CANONICAL_SYSTEM])
636     AC_MSG_CHECKING([config.cache system type])
637     if { test x"${ac_cv_host_system_type+set}" = x"set" &&
638          test x"$ac_cv_host_system_type" != x"$host"; } ||
639        { test x"${ac_cv_build_system_type+set}" = x"set" &&
640          test x"$ac_cv_build_system_type" != x"$build"; } ||
641        { test x"${ac_cv_target_system_type+set}" = x"set" &&
642          test x"$ac_cv_target_system_type" != x"$target"; }; then
643         AC_MSG_RESULT([different])
644         ifelse($#, 1, [$1],
645                 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
646     else
647         AC_MSG_RESULT([same])
648     fi
649     ac_cv_host_system_type="$host"
650     ac_cv_build_system_type="$build"
651     ac_cv_target_system_type="$target"
652 ])
653
654
655 dnl We use this until autoconf fixes its version.
656 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
657 [AC_MSG_CHECKING([types of arguments for select()])
658  AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
659  [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
660   [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
661    [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
662      for ac_cv_func_select_arg1 in 'int' 'size_t' 'unsigned long' 'unsigned'; do      for ac_cv_func_select_arg5 in 'struct timeval *' 'const struct timeval *'; do
663        AC_TRY_COMPILE(dnl
664 [#ifdef HAVE_SYS_TYPES_H
665 #include <sys/types.h>
666 #endif
667 #ifdef HAVE_SYS_TIME_H
668 #include <sys/time.h>
669 #endif
670 #ifdef HAVE_SYS_SELECT_H
671 #include <sys/select.h>
672 #endif
673 #ifdef HAVE_SYS_SOCKET_H
674 #include <sys/socket.h>
675 #endif
676 extern int select ($ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg234,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5);],,dnl
677         [ac_not_found=no ; break 3],ac_not_found=yes)
678       done
679      done
680     done
681    ])dnl AC_CACHE_VAL
682   ])dnl AC_CACHE_VAL
683  ])dnl AC_CACHE_VAL
684  if test "$ac_not_found" = yes; then
685   ac_cv_func_select_arg1=int 
686   ac_cv_func_select_arg234='int *' 
687   ac_cv_func_select_arg5='struct timeval *'
688  fi
689  AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
690  AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1)
691  AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234))
692  AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5))
693 ])
694
695 ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
696 ## Copyright (C) 1996-1999 Free Software Foundation, Inc.
697 ## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
698 ##
699 ## This program is free software; you can redistribute it and/or modify
700 ## it under the terms of the GNU General Public License as published by
701 ## the Free Software Foundation; either version 2 of the License, or
702 ## (at your option) any later version.
703 ##
704 ## This program is distributed in the hope that it will be useful, but
705 ## WITHOUT ANY WARRANTY; without even the implied warranty of
706 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
707 ## General Public License for more details.
708 ##
709 ## You should have received a copy of the GNU General Public License
710 ## along with this program; if not, write to the Free Software
711 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
712 ##
713 ## As a special exception to the GNU General Public License, if you
714 ## distribute this file as part of a program that contains a
715 ## configuration script generated by Autoconf, you may include it under
716 ## the same distribution terms that you use for the rest of that program.
717
718 # serial 40 AC_PROG_LIBTOOL
719 AC_DEFUN(AC_PROG_LIBTOOL,
720 [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
721
722 # Save cache, so that ltconfig can load it
723 AC_CACHE_SAVE
724
725 # Actually configure libtool.  ac_aux_dir is where install-sh is found.
726 CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
727 LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
728 LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
729 DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
730 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
731 $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
732 || AC_MSG_ERROR([libtool configure failed])
733
734 # Reload cache, that may have been modified by ltconfig
735 AC_CACHE_LOAD
736
737 # This can be used to rebuild libtool when needed
738 LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
739
740 # Always use our own libtool.
741 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
742 AC_SUBST(LIBTOOL)dnl
743
744 # Redirect the config.log output again, so that the ltconfig log is not
745 # clobbered by the next message.
746 exec 5>>./config.log
747 ])
748
749 AC_DEFUN(AC_LIBTOOL_SETUP,
750 [AC_PREREQ(2.13)dnl
751 AC_REQUIRE([AC_ENABLE_SHARED])dnl
752 AC_REQUIRE([AC_ENABLE_STATIC])dnl
753 AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
754 AC_REQUIRE([AC_CANONICAL_HOST])dnl
755 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
756 AC_REQUIRE([AC_PROG_RANLIB])dnl
757 AC_REQUIRE([AC_PROG_CC])dnl
758 AC_REQUIRE([AC_PROG_LD])dnl
759 AC_REQUIRE([AC_PROG_NM])dnl
760 AC_REQUIRE([AC_PROG_LN_S])dnl
761 dnl
762
763 # Check for any special flags to pass to ltconfig.
764 #
765 # the following will cause an existing older ltconfig to fail, so
766 # we ignore this at the expense of the cache file... Checking this 
767 # will just take longer ... bummer!
768 #libtool_flags="--cache-file=$cache_file"
769 #
770 test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
771 test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
772 test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
773 test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
774 test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
775 ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
776 [libtool_flags="$libtool_flags --enable-dlopen"])
777 ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
778 [libtool_flags="$libtool_flags --enable-win32-dll"])
779 AC_ARG_ENABLE(libtool-lock,
780   [  --disable-libtool-lock  avoid locking (might break parallel builds)])
781 test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
782 test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
783
784 # Some flags need to be propagated to the compiler or linker for good
785 # libtool support.
786 case "$host" in
787 *-*-irix6*)
788   # Find out which ABI we are using.
789   echo '[#]line __oline__ "configure"' > conftest.$ac_ext
790   if AC_TRY_EVAL(ac_compile); then
791     case "`/usr/bin/file conftest.o`" in
792     *32-bit*)
793       LD="${LD-ld} -32"
794       ;;
795     *N32*)
796       LD="${LD-ld} -n32"
797       ;;
798     *64-bit*)
799       LD="${LD-ld} -64"
800       ;;
801     esac
802   fi
803   rm -rf conftest*
804   ;;
805
806 *-*-sco3.2v5*)
807   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
808   SAVE_CFLAGS="$CFLAGS"
809   CFLAGS="$CFLAGS -belf"
810   AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
811     [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
812   if test x"$lt_cv_cc_needs_belf" != x"yes"; then
813     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
814     CFLAGS="$SAVE_CFLAGS"
815   fi
816   ;;
817
818 ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
819 [*-*-cygwin* | *-*-mingw*)
820   AC_CHECK_TOOL(DLLTOOL, dlltool, false)
821   AC_CHECK_TOOL(AS, as, false)
822   AC_CHECK_TOOL(OBJDUMP, objdump, false)
823   ;;
824 ])
825 esac
826 ])
827
828 # AC_LIBTOOL_DLOPEN - enable checks for dlopen support
829 AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
830
831 # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
832 AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
833
834 # AC_ENABLE_SHARED - implement the --enable-shared flag
835 # Usage: AC_ENABLE_SHARED[(DEFAULT)]
836 #   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
837 #   `yes'.
838 AC_DEFUN(AC_ENABLE_SHARED, [dnl
839 define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
840 AC_ARG_ENABLE(shared,
841 changequote(<<, >>)dnl
842 <<  --enable-shared[=PKGS]  build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
843 changequote([, ])dnl
844 [p=${PACKAGE-default}
845 case "$enableval" in
846 yes) enable_shared=yes ;;
847 no) enable_shared=no ;;
848 *)
849   enable_shared=no
850   # Look at the argument we got.  We use all the common list separators.
851   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
852   for pkg in $enableval; do
853     if test "X$pkg" = "X$p"; then
854       enable_shared=yes
855     fi
856   done
857   IFS="$ac_save_ifs"
858   ;;
859 esac],
860 enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
861 ])
862
863 # AC_DISABLE_SHARED - set the default shared flag to --disable-shared
864 AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
865 AC_ENABLE_SHARED(no)])
866
867 # AC_ENABLE_STATIC - implement the --enable-static flag
868 # Usage: AC_ENABLE_STATIC[(DEFAULT)]
869 #   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
870 #   `yes'.
871 AC_DEFUN(AC_ENABLE_STATIC, [dnl
872 define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
873 AC_ARG_ENABLE(static,
874 changequote(<<, >>)dnl
875 <<  --enable-static[=PKGS]  build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
876 changequote([, ])dnl
877 [p=${PACKAGE-default}
878 case "$enableval" in
879 yes) enable_static=yes ;;
880 no) enable_static=no ;;
881 *)
882   enable_static=no
883   # Look at the argument we got.  We use all the common list separators.
884   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
885   for pkg in $enableval; do
886     if test "X$pkg" = "X$p"; then
887       enable_static=yes
888     fi
889   done
890   IFS="$ac_save_ifs"
891   ;;
892 esac],
893 enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
894 ])
895
896 # AC_DISABLE_STATIC - set the default static flag to --disable-static
897 AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
898 AC_ENABLE_STATIC(no)])
899
900
901 # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
902 # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
903 #   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
904 #   `yes'.
905 AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
906 define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
907 AC_ARG_ENABLE(fast-install,
908 changequote(<<, >>)dnl
909 <<  --enable-fast-install[=PKGS]  optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
910 changequote([, ])dnl
911 [p=${PACKAGE-default}
912 case "$enableval" in
913 yes) enable_fast_install=yes ;;
914 no) enable_fast_install=no ;;
915 *)
916   enable_fast_install=no
917   # Look at the argument we got.  We use all the common list separators.
918   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
919   for pkg in $enableval; do
920     if test "X$pkg" = "X$p"; then
921       enable_fast_install=yes
922     fi
923   done
924   IFS="$ac_save_ifs"
925   ;;
926 esac],
927 enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
928 ])
929
930 # AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
931 AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
932 AC_ENABLE_FAST_INSTALL(no)])
933
934 # AC_PROG_LD - find the path to the GNU or non-GNU linker
935 AC_DEFUN(AC_PROG_LD,
936 [AC_ARG_WITH(gnu-ld,
937 [  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
938 test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
939 AC_REQUIRE([AC_PROG_CC])dnl
940 AC_REQUIRE([AC_CANONICAL_HOST])dnl
941 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
942 ac_prog=ld
943 if test "$ac_cv_prog_gcc" = yes; then
944   # Check if gcc -print-prog-name=ld gives a path.
945   AC_MSG_CHECKING([for ld used by GCC])
946   ac_prog=`($CC -print-prog-name=ld) 2>&5`
947   case "$ac_prog" in
948     # Accept absolute paths.
949 changequote(,)dnl
950     [\\/]* | [A-Za-z]:[\\/]*)
951       re_direlt='/[^/][^/]*/\.\./'
952 changequote([,])dnl
953       # Canonicalize the path of ld
954       ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
955       while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
956         ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
957       done
958       test -z "$LD" && LD="$ac_prog"
959       ;;
960   "")
961     # If it fails, then pretend we aren't using GCC.
962     ac_prog=ld
963     ;;
964   *)
965     # If it is relative, then search for the first ld in PATH.
966     with_gnu_ld=unknown
967     ;;
968   esac
969 elif test "$with_gnu_ld" = yes; then
970   AC_MSG_CHECKING([for GNU ld])
971 else
972   AC_MSG_CHECKING([for non-GNU ld])
973 fi
974 AC_CACHE_VAL(ac_cv_path_LD,
975 [if test -z "$LD"; then
976   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
977   for ac_dir in $PATH; do
978     test -z "$ac_dir" && ac_dir=.
979     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
980       ac_cv_path_LD="$ac_dir/$ac_prog"
981       # Check to see if the program is GNU ld.  I'd rather use --version,
982       # but apparently some GNU ld's only accept -v.
983       # Break only if it was the GNU/non-GNU ld that we prefer.
984       if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
985         test "$with_gnu_ld" != no && break
986       else
987         test "$with_gnu_ld" != yes && break
988       fi
989     fi
990   done
991   IFS="$ac_save_ifs"
992 else
993   ac_cv_path_LD="$LD" # Let the user override the test with a path.
994 fi])
995 LD="$ac_cv_path_LD"
996 if test -n "$LD"; then
997   AC_MSG_RESULT($LD)
998 else
999   AC_MSG_RESULT(no)
1000 fi
1001 test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
1002 AC_SUBST(LD)
1003 AC_PROG_LD_GNU
1004 ])
1005
1006 AC_DEFUN(AC_PROG_LD_GNU,
1007 [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
1008 [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
1009 if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
1010   ac_cv_prog_gnu_ld=yes
1011 else
1012   ac_cv_prog_gnu_ld=no
1013 fi])
1014 ])
1015
1016 # AC_PROG_NM - find the path to a BSD-compatible name lister
1017 AC_DEFUN(AC_PROG_NM,
1018 [AC_MSG_CHECKING([for BSD-compatible nm])
1019 AC_CACHE_VAL(ac_cv_path_NM,
1020 [if test -n "$NM"; then
1021   # Let the user override the test.
1022   ac_cv_path_NM="$NM"
1023 else
1024   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
1025   for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
1026     test -z "$ac_dir" && ac_dir=.
1027     if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
1028       # Check to see if the nm accepts a BSD-compat flag.
1029       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
1030       #   nm: unknown option "B" ignored
1031       if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
1032         ac_cv_path_NM="$ac_dir/nm -B"
1033         break
1034       elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
1035         ac_cv_path_NM="$ac_dir/nm -p"
1036         break
1037       else
1038         ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
1039         continue # so that we can try to find one that supports BSD flags
1040       fi
1041     fi
1042   done
1043   IFS="$ac_save_ifs"
1044   test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
1045 fi])
1046 NM="$ac_cv_path_NM"
1047 AC_MSG_RESULT([$NM])
1048 AC_SUBST(NM)
1049 ])
1050
1051 # AC_CHECK_LIBM - check for math library
1052 AC_DEFUN(AC_CHECK_LIBM,
1053 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
1054 LIBM=
1055 case "$host" in
1056 *-*-beos* | *-*-cygwin*)
1057   # These system don't have libm
1058   ;;
1059 *-ncr-sysv4.3*)
1060   AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
1061   AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
1062   ;;
1063 *)
1064   AC_CHECK_LIB(m, main, LIBM="-lm")
1065   ;;
1066 esac
1067 ])
1068
1069 # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
1070 # the libltdl convenience library, adds --enable-ltdl-convenience to
1071 # the configure arguments.  Note that LIBLTDL is not AC_SUBSTed, nor
1072 # is AC_CONFIG_SUBDIRS called.  If DIR is not provided, it is assumed
1073 # to be `${top_builddir}/libltdl'.  Make sure you start DIR with
1074 # '${top_builddir}/' (note the single quotes!) if your package is not
1075 # flat, and, if you're not using automake, define top_builddir as
1076 # appropriate in the Makefiles.
1077 AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
1078   case "$enable_ltdl_convenience" in
1079   no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
1080   "") enable_ltdl_convenience=yes
1081       ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
1082   esac
1083   LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
1084   INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
1085 ])
1086
1087 # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
1088 # the libltdl installable library, and adds --enable-ltdl-install to
1089 # the configure arguments.  Note that LIBLTDL is not AC_SUBSTed, nor
1090 # is AC_CONFIG_SUBDIRS called.  If DIR is not provided, it is assumed
1091 # to be `${top_builddir}/libltdl'.  Make sure you start DIR with
1092 # '${top_builddir}/' (note the single quotes!) if your package is not
1093 # flat, and, if you're not using automake, define top_builddir as
1094 # appropriate in the Makefiles.
1095 # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
1096 AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
1097   AC_CHECK_LIB(ltdl, main,
1098   [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
1099   [if test x"$enable_ltdl_install" = xno; then
1100      AC_MSG_WARN([libltdl not installed, but installation disabled])
1101    else
1102      enable_ltdl_install=yes
1103    fi
1104   ])
1105   if test x"$enable_ltdl_install" = x"yes"; then
1106     ac_configure_args="$ac_configure_args --enable-ltdl-install"
1107     LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
1108     INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
1109   else
1110     ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
1111     LIBLTDL="-lltdl"
1112     INCLTDL=
1113   fi
1114 ])
1115
1116 dnl old names
1117 AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
1118 AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
1119 AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
1120 AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
1121 AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
1122 AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
1123 AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
1124
1125 dnl This is just to silence aclocal about the macro not being used
1126 ifelse([AC_DISABLE_FAST_INSTALL])dnl
1127
1128 # Macro to add for using GNU gettext.
1129 # Ulrich Drepper <drepper@cygnus.com>, 1995.
1130 #
1131 # This file can be copied and used freely without restrictions.  It can
1132 # be used in projects which are not available under the GNU Public License
1133 # but which still want to provide support for the GNU gettext functionality.
1134 # Please note that the actual code is *not* freely available.
1135
1136 # serial 5
1137
1138 AC_DEFUN(AM_WITH_NLS,
1139   [AC_MSG_CHECKING([whether NLS is requested])
1140     dnl Default is enabled NLS
1141     AC_ARG_ENABLE(nls,
1142       [  --disable-nls           do not use Native Language Support],
1143       USE_NLS=$enableval, USE_NLS=yes)
1144     AC_MSG_RESULT($USE_NLS)
1145     AC_SUBST(USE_NLS)
1146
1147     USE_INCLUDED_LIBINTL=no
1148
1149     dnl If we use NLS figure out what method
1150     if test "$USE_NLS" = "yes"; then
1151       AC_DEFINE(ENABLE_NLS)
1152       AC_MSG_CHECKING([whether included gettext is requested])
1153       AC_ARG_WITH(included-gettext,
1154         [  --with-included-gettext use the GNU gettext library included here],
1155         nls_cv_force_use_gnu_gettext=$withval,
1156         nls_cv_force_use_gnu_gettext=no)
1157       AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
1158
1159       nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
1160       if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
1161         dnl User does not insist on using GNU NLS library.  Figure out what
1162         dnl to use.  If gettext or catgets are available (in this order) we
1163         dnl use this.  Else we have to fall back to GNU NLS library.
1164         dnl catgets is only used if permitted by option --with-catgets.
1165         nls_cv_header_intl=
1166         nls_cv_header_libgt=
1167         CATOBJEXT=NONE
1168
1169         AC_CHECK_HEADER(libintl.h,
1170           [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
1171             [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
1172                gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
1173
1174            if test "$gt_cv_func_gettext_libc" != "yes"; then
1175              AC_CHECK_LIB(intl, bindtextdomain,
1176                [AC_CACHE_CHECK([for gettext in libintl],
1177                  gt_cv_func_gettext_libintl,
1178                  [AC_CHECK_LIB(intl, gettext,
1179                   gt_cv_func_gettext_libintl=yes,
1180                   gt_cv_func_gettext_libintl=no)],
1181                  gt_cv_func_gettext_libintl=no)])
1182            fi
1183
1184            if test "$gt_cv_func_gettext_libc" = "yes" \
1185               || test "$gt_cv_func_gettext_libintl" = "yes"; then
1186               AC_DEFINE(HAVE_GETTEXT)
1187               AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
1188                 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
1189               if test "$MSGFMT" != "no"; then
1190                 AC_CHECK_FUNCS(dcgettext)
1191                 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
1192                 AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
1193                   [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
1194                 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
1195                                return _nl_msg_cat_cntr],
1196                   [CATOBJEXT=.gmo
1197                    DATADIRNAME=share],
1198                   [CATOBJEXT=.mo
1199                    DATADIRNAME=lib])
1200                 INSTOBJEXT=.mo
1201               fi
1202             fi
1203         ])
1204
1205         if test "$CATOBJEXT" = "NONE"; then
1206           AC_MSG_CHECKING([whether catgets can be used])
1207           AC_ARG_WITH(catgets,
1208             [  --with-catgets          use catgets functions if available],
1209             nls_cv_use_catgets=$withval, nls_cv_use_catgets=no)
1210           AC_MSG_RESULT($nls_cv_use_catgets)
1211
1212           if test "$nls_cv_use_catgets" = "yes"; then
1213             dnl No gettext in C library.  Try catgets next.
1214             AC_CHECK_LIB(i, main)
1215             AC_CHECK_FUNC(catgets,
1216               [AC_DEFINE(HAVE_CATGETS)
1217                INTLOBJS="\$(CATOBJS)"
1218                AC_PATH_PROG(GENCAT, gencat, no)dnl
1219                if test "$GENCAT" != "no"; then
1220                  AC_PATH_PROG(GMSGFMT, gmsgfmt, no)
1221                  if test "$GMSGFMT" = "no"; then
1222                    AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
1223                     [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)
1224                  fi
1225                  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
1226                    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
1227                  USE_INCLUDED_LIBINTL=yes
1228                  CATOBJEXT=.cat
1229                  INSTOBJEXT=.cat
1230                  DATADIRNAME=lib
1231                  INTLDEPS='$(top_builddir)/intl/libintl.a'
1232                  INTLLIBS=$INTLDEPS
1233                  LIBS=`echo $LIBS | sed -e 's/-lintl//'`
1234                  nls_cv_header_intl=intl/libintl.h
1235                  nls_cv_header_libgt=intl/libgettext.h
1236                fi])
1237           fi
1238         fi
1239
1240         if test "$CATOBJEXT" = "NONE"; then
1241           dnl Neither gettext nor catgets in included in the C library.
1242           dnl Fall back on GNU gettext library.
1243           nls_cv_use_gnu_gettext=yes
1244         fi
1245       fi
1246
1247       if test "$nls_cv_use_gnu_gettext" = "yes"; then
1248         dnl Mark actions used to generate GNU NLS library.
1249         INTLOBJS="\$(GETTOBJS)"
1250         AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
1251           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
1252         AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
1253         AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
1254           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
1255         AC_SUBST(MSGFMT)
1256         USE_INCLUDED_LIBINTL=yes
1257         CATOBJEXT=.gmo
1258         INSTOBJEXT=.mo
1259         DATADIRNAME=share
1260         INTLDEPS='$(top_builddir)/intl/libintl.a'
1261         INTLLIBS=$INTLDEPS
1262         LIBS=`echo $LIBS | sed -e 's/-lintl//'`
1263         nls_cv_header_intl=intl/libintl.h
1264         nls_cv_header_libgt=intl/libgettext.h
1265       fi
1266
1267       dnl Test whether we really found GNU xgettext.
1268       if test "$XGETTEXT" != ":"; then
1269         dnl If it is no GNU xgettext we define it as : so that the
1270         dnl Makefiles still can work.
1271         if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
1272           : ;
1273         else
1274           AC_MSG_RESULT(
1275             [found xgettext program is not GNU xgettext; ignore it])
1276           XGETTEXT=":"
1277         fi
1278       fi
1279
1280       # We need to process the po/ directory.
1281       POSUB=po
1282     else
1283       DATADIRNAME=share
1284       nls_cv_header_intl=intl/libintl.h
1285       nls_cv_header_libgt=intl/libgettext.h
1286     fi
1287     AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
1288     AC_OUTPUT_COMMANDS(
1289      [case "$CONFIG_FILES" in *po/Makefile.in*)
1290         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
1291       esac])
1292
1293
1294     # If this is used in GNU gettext we have to set USE_NLS to `yes'
1295     # because some of the sources are only built for this goal.
1296     if test "$PACKAGE" = gettext; then
1297       USE_NLS=yes
1298       USE_INCLUDED_LIBINTL=yes
1299     fi
1300
1301     dnl These rules are solely for the distribution goal.  While doing this
1302     dnl we only have to keep exactly one list of the available catalogs
1303     dnl in configure.in.
1304     for lang in $ALL_LINGUAS; do
1305       GMOFILES="$GMOFILES $lang.gmo"
1306       POFILES="$POFILES $lang.po"
1307     done
1308
1309     dnl Make all variables we use known to autoconf.
1310     AC_SUBST(USE_INCLUDED_LIBINTL)
1311     AC_SUBST(CATALOGS)
1312     AC_SUBST(CATOBJEXT)
1313     AC_SUBST(DATADIRNAME)
1314     AC_SUBST(GMOFILES)
1315     AC_SUBST(INSTOBJEXT)
1316     AC_SUBST(INTLDEPS)
1317     AC_SUBST(INTLLIBS)
1318     AC_SUBST(INTLOBJS)
1319     AC_SUBST(POFILES)
1320     AC_SUBST(POSUB)
1321   ])
1322
1323 AC_DEFUN(AM_GNU_GETTEXT,
1324   [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
1325    AC_REQUIRE([AC_PROG_CC])dnl
1326    AC_REQUIRE([AC_PROG_RANLIB])dnl
1327    AC_REQUIRE([AC_ISC_POSIX])dnl
1328    AC_REQUIRE([AC_HEADER_STDC])dnl
1329    AC_REQUIRE([AC_C_CONST])dnl
1330    AC_REQUIRE([AC_C_INLINE])dnl
1331    AC_REQUIRE([AC_TYPE_OFF_T])dnl
1332    AC_REQUIRE([AC_TYPE_SIZE_T])dnl
1333    AC_REQUIRE([AC_FUNC_ALLOCA])dnl
1334    AC_REQUIRE([AC_FUNC_MMAP])dnl
1335
1336    AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
1337 unistd.h sys/param.h])
1338    AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
1339 strdup __argz_count __argz_stringify __argz_next])
1340
1341    if test "${ac_cv_func_stpcpy+set}" != "set"; then
1342      AC_CHECK_FUNCS(stpcpy)
1343    fi
1344    if test "${ac_cv_func_stpcpy}" = "yes"; then
1345      AC_DEFINE(HAVE_STPCPY)
1346    fi
1347
1348    AM_LC_MESSAGES
1349    AM_WITH_NLS
1350
1351    if test "x$CATOBJEXT" != "x"; then
1352      if test "x$ALL_LINGUAS" = "x"; then
1353        LINGUAS=
1354      else
1355        AC_MSG_CHECKING(for catalogs to be installed)
1356        NEW_LINGUAS=
1357 dnl ============== Fix is here! =======================
1358 dnl Some sh do not like substitution in bounds of for loops
1359 dnl       for lang in ${LINGUAS=$ALL_LINGUAS}; do
1360     tmplinguas=${LINGUAS=$ALL_LINGUAS}
1361     for lang in ${tmplinguas}; do
1362          case "$ALL_LINGUAS" in
1363           *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
1364          esac
1365        done
1366        LINGUAS=$NEW_LINGUAS
1367        AC_MSG_RESULT($LINGUAS)
1368      fi
1369
1370      dnl Construct list of names of catalog files to be constructed.
1371      if test -n "$LINGUAS"; then
1372        for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
1373      fi
1374    fi
1375
1376    dnl The reference to <locale.h> in the installed <libintl.h> file
1377    dnl must be resolved because we cannot expect the users of this
1378    dnl to define HAVE_LOCALE_H.
1379    if test $ac_cv_header_locale_h = yes; then
1380      INCLUDE_LOCALE_H="#include <locale.h>"
1381    else
1382      INCLUDE_LOCALE_H="\
1383 /* The system does not provide the header <locale.h>.  Take care yourself.  */"
1384    fi
1385    AC_SUBST(INCLUDE_LOCALE_H)
1386
1387    dnl Determine which catalog format we have (if any is needed)
1388    dnl For now we know about two different formats:
1389    dnl   Linux libc-5 and the normal X/Open format
1390    test -d intl || mkdir intl
1391    if test "$CATOBJEXT" = ".cat"; then
1392      AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
1393
1394      dnl Transform the SED scripts while copying because some dumb SEDs
1395      dnl cannot handle comments.
1396      sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
1397    fi
1398    dnl po2tbl.sed is always needed.
1399    sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
1400      $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
1401
1402    dnl In the intl/Makefile.in we have a special dependency which makes
1403    dnl only sense for gettext.  We comment this out for non-gettext
1404    dnl packages.
1405    if test "$PACKAGE" = "gettext"; then
1406      GT_NO="#NO#"
1407      GT_YES=
1408    else
1409      GT_NO=
1410      GT_YES="#YES#"
1411    fi
1412    AC_SUBST(GT_NO)
1413    AC_SUBST(GT_YES)
1414
1415    dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
1416    dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
1417    dnl Try to locate is.
1418    MKINSTALLDIRS=
1419    if test -n "$ac_aux_dir"; then
1420      MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
1421    fi
1422    if test -z "$MKINSTALLDIRS"; then
1423      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
1424    fi
1425    AC_SUBST(MKINSTALLDIRS)
1426
1427    dnl *** For now the libtool support in intl/Makefile is not for real.
1428    l=
1429    AC_SUBST(l)
1430
1431    dnl Generate list of files to be processed by xgettext which will
1432    dnl be included in po/Makefile.
1433    test -d po || mkdir po
1434    if test "x$srcdir" != "x."; then
1435      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
1436        posrcprefix="$srcdir/"
1437      else
1438        posrcprefix="../$srcdir/"
1439      fi
1440    else
1441      posrcprefix="../"
1442    fi
1443    rm -f po/POTFILES
1444    sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
1445         < $srcdir/po/POTFILES.in > po/POTFILES
1446   ])