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