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