]> git.lyx.org Git - lyx.git/blob - acinclude.m4
Factor the export code between the two Dispatch methods, update .lyx and .sgml file...
[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 -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_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 ### Check for stl_string_fwd.h existence and location if it exists
1071 ###
1072 ### Three problems remain:
1073 ###   1.  I don't check if $lyx_cv_extra_inc has a value before testing it.
1074 ###   2.  I don't issue a warning/error if AC_CHECK_HEADERS finds it but I
1075 ###       don't.  The warning should only need to be something like:
1076 ###       "Can't find path to stl_string_fwd.h please define
1077 ###        STL_STRING_FWD_H_LOCATION in src/config.h or supply the path
1078 ###        using --with-extra-inc"
1079 ###   3. Multiple extra include dirs? and I don't check --with-extra-prefix yet
1080 ###
1081 AC_DEFUN(LYX_STL_STRING_FWD,
1082 [AC_CHECK_HEADERS(stl_string_fwd.h,[
1083   lyx_cv_stl_string_fwd_h_location="<../include/stl_string_fwd.h>"
1084   AC_CHECK_HEADER(../include/stl_string_fwd.h,[
1085     ac_cv_header_stl_string_fwd_h=yes
1086     lyx_cv_stl_string_fwd_h_location="<../include/stl_string_fwd.h>"],[
1087   AC_CHECK_HEADER($lyx_cv_extra_inc/stl_string_fwd.h,[
1088     ac_cv_header_stl_string_fwd_h=yes
1089     lyx_cv_stl_string_fwd_h_location="<$lyx_cv_extra_inc/stl_string_fwd.h>"],[
1090     ac_cv_header_stl_string_fwd_h=no])])
1091   AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_stl_string_fwd_h_location)])
1092 ])
1093
1094
1095 # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
1096 # the libltdl convenience library, adds --enable-ltdl-convenience to
1097 # the configure arguments.  Note that LIBLTDL is not AC_SUBSTed, nor
1098 # is AC_CONFIG_SUBDIRS called.  If DIR is not provided, it is assumed
1099 # to be `${top_builddir}/libltdl'.  Make sure you start DIR with
1100 # '${top_builddir}/' (note the single quotes!) if your package is not
1101 # flat, and, if you're not using automake, define top_builddir as
1102 # appropriate in the Makefiles.
1103 AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
1104   case "$enable_ltdl_convenience" in
1105   no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
1106   "") enable_ltdl_convenience=yes
1107       ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
1108   esac
1109   LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
1110   INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
1111 ])
1112
1113 # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
1114 # the libltdl installable library, and adds --enable-ltdl-install to
1115 # the configure arguments.  Note that LIBLTDL is not AC_SUBSTed, nor
1116 # is AC_CONFIG_SUBDIRS called.  If DIR is not provided, it is assumed
1117 # to be `${top_builddir}/libltdl'.  Make sure you start DIR with
1118 # '${top_builddir}/' (note the single quotes!) if your package is not
1119 # flat, and, if you're not using automake, define top_builddir as
1120 # appropriate in the Makefiles.
1121 # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
1122 AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
1123   AC_CHECK_LIB(ltdl, main,
1124   [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
1125   [if test x"$enable_ltdl_install" = xno; then
1126      AC_MSG_WARN([libltdl not installed, but installation disabled])
1127    else
1128      enable_ltdl_install=yes
1129    fi
1130   ])
1131   if test x"$enable_ltdl_install" = x"yes"; then
1132     ac_configure_args="$ac_configure_args --enable-ltdl-install"
1133     LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
1134     INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
1135   else
1136     ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
1137     LIBLTDL="-lltdl"
1138     INCLTDL=
1139   fi
1140 ])
1141
1142 dnl old names
1143 AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
1144 AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
1145 AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
1146 AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
1147 AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
1148 AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
1149 AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
1150
1151 dnl This is just to silence aclocal about the macro not being used
1152 ifelse([AC_DISABLE_FAST_INSTALL])dnl
1153
1154 # Macro to add for using GNU gettext.
1155 # Ulrich Drepper <drepper@cygnus.com>, 1995.
1156 #
1157 # This file can be copied and used freely without restrictions.  It can
1158 # be used in projects which are not available under the GNU Public License
1159 # but which still want to provide support for the GNU gettext functionality.
1160 # Please note that the actual code is *not* freely available.
1161
1162 # serial 5
1163
1164 AC_DEFUN(AM_WITH_NLS,
1165   [AC_MSG_CHECKING([whether NLS is requested])
1166     dnl Default is enabled NLS
1167     AC_ARG_ENABLE(nls,
1168       [  --disable-nls           do not use Native Language Support],
1169       USE_NLS=$enableval, USE_NLS=yes)
1170     AC_MSG_RESULT($USE_NLS)
1171     AC_SUBST(USE_NLS)
1172
1173     USE_INCLUDED_LIBINTL=no
1174
1175     dnl If we use NLS figure out what method
1176     if test "$USE_NLS" = "yes"; then
1177       AC_DEFINE(ENABLE_NLS)
1178       AC_MSG_CHECKING([whether included gettext is requested])
1179       AC_ARG_WITH(included-gettext,
1180         [  --with-included-gettext use the GNU gettext library included here],
1181         nls_cv_force_use_gnu_gettext=$withval,
1182         nls_cv_force_use_gnu_gettext=no)
1183       AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
1184
1185       nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
1186       if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
1187         dnl User does not insist on using GNU NLS library.  Figure out what
1188         dnl to use.  If gettext or catgets are available (in this order) we
1189         dnl use this.  Else we have to fall back to GNU NLS library.
1190         dnl catgets is only used if permitted by option --with-catgets.
1191         nls_cv_header_intl=
1192         nls_cv_header_libgt=
1193         CATOBJEXT=NONE
1194
1195         AC_CHECK_HEADER(libintl.h,
1196           [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
1197             [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
1198                gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
1199
1200            if test "$gt_cv_func_gettext_libc" != "yes"; then
1201              AC_CHECK_LIB(intl, bindtextdomain,
1202                [AC_CACHE_CHECK([for gettext in libintl],
1203                  gt_cv_func_gettext_libintl,
1204                  [AC_CHECK_LIB(intl, gettext,
1205                   gt_cv_func_gettext_libintl=yes,
1206                   gt_cv_func_gettext_libintl=no)],
1207                  gt_cv_func_gettext_libintl=no)])
1208            fi
1209
1210            if test "$gt_cv_func_gettext_libc" = "yes" \
1211               || test "$gt_cv_func_gettext_libintl" = "yes"; then
1212               AC_DEFINE(HAVE_GETTEXT)
1213               AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
1214                 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
1215               if test "$MSGFMT" != "no"; then
1216                 AC_CHECK_FUNCS(dcgettext)
1217                 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
1218                 AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
1219                   [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
1220                 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
1221                                return _nl_msg_cat_cntr],
1222                   [CATOBJEXT=.gmo
1223                    DATADIRNAME=share],
1224                   [CATOBJEXT=.mo
1225                    DATADIRNAME=lib])
1226                 INSTOBJEXT=.mo
1227               fi
1228             fi
1229         ])
1230
1231         if test "$CATOBJEXT" = "NONE"; then
1232           AC_MSG_CHECKING([whether catgets can be used])
1233           AC_ARG_WITH(catgets,
1234             [  --with-catgets          use catgets functions if available],
1235             nls_cv_use_catgets=$withval, nls_cv_use_catgets=no)
1236           AC_MSG_RESULT($nls_cv_use_catgets)
1237
1238           if test "$nls_cv_use_catgets" = "yes"; then
1239             dnl No gettext in C library.  Try catgets next.
1240             AC_CHECK_LIB(i, main)
1241             AC_CHECK_FUNC(catgets,
1242               [AC_DEFINE(HAVE_CATGETS)
1243                INTLOBJS="\$(CATOBJS)"
1244                AC_PATH_PROG(GENCAT, gencat, no)dnl
1245                if test "$GENCAT" != "no"; then
1246                  AC_PATH_PROG(GMSGFMT, gmsgfmt, no)
1247                  if test "$GMSGFMT" = "no"; then
1248                    AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
1249                     [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)
1250                  fi
1251                  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
1252                    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
1253                  USE_INCLUDED_LIBINTL=yes
1254                  CATOBJEXT=.cat
1255                  INSTOBJEXT=.cat
1256                  DATADIRNAME=lib
1257                  INTLDEPS='$(top_builddir)/intl/libintl.a'
1258                  INTLLIBS=$INTLDEPS
1259                  LIBS=`echo $LIBS | sed -e 's/-lintl//'`
1260                  nls_cv_header_intl=intl/libintl.h
1261                  nls_cv_header_libgt=intl/libgettext.h
1262                fi])
1263           fi
1264         fi
1265
1266         if test "$CATOBJEXT" = "NONE"; then
1267           dnl Neither gettext nor catgets in included in the C library.
1268           dnl Fall back on GNU gettext library.
1269           nls_cv_use_gnu_gettext=yes
1270         fi
1271       fi
1272
1273       if test "$nls_cv_use_gnu_gettext" = "yes"; then
1274         dnl Mark actions used to generate GNU NLS library.
1275         INTLOBJS="\$(GETTOBJS)"
1276         AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
1277           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
1278         AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
1279         AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
1280           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
1281         AC_SUBST(MSGFMT)
1282         USE_INCLUDED_LIBINTL=yes
1283         CATOBJEXT=.gmo
1284         INSTOBJEXT=.mo
1285         DATADIRNAME=share
1286         INTLDEPS='$(top_builddir)/intl/libintl.a'
1287         INTLLIBS=$INTLDEPS
1288         LIBS=`echo $LIBS | sed -e 's/-lintl//'`
1289         nls_cv_header_intl=intl/libintl.h
1290         nls_cv_header_libgt=intl/libgettext.h
1291       fi
1292
1293       dnl Test whether we really found GNU xgettext.
1294       if test "$XGETTEXT" != ":"; then
1295         dnl If it is no GNU xgettext we define it as : so that the
1296         dnl Makefiles still can work.
1297         if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
1298           : ;
1299         else
1300           AC_MSG_RESULT(
1301             [found xgettext program is not GNU xgettext; ignore it])
1302           XGETTEXT=":"
1303         fi
1304       fi
1305
1306       # We need to process the po/ directory.
1307       POSUB=po
1308     else
1309       DATADIRNAME=share
1310       nls_cv_header_intl=intl/libintl.h
1311       nls_cv_header_libgt=intl/libgettext.h
1312     fi
1313     AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
1314     AC_OUTPUT_COMMANDS(
1315      [case "$CONFIG_FILES" in *po/Makefile.in*)
1316         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
1317       esac])
1318
1319
1320     # If this is used in GNU gettext we have to set USE_NLS to `yes'
1321     # because some of the sources are only built for this goal.
1322     if test "$PACKAGE" = gettext; then
1323       USE_NLS=yes
1324       USE_INCLUDED_LIBINTL=yes
1325     fi
1326
1327     dnl These rules are solely for the distribution goal.  While doing this
1328     dnl we only have to keep exactly one list of the available catalogs
1329     dnl in configure.in.
1330     for lang in $ALL_LINGUAS; do
1331       GMOFILES="$GMOFILES $lang.gmo"
1332       POFILES="$POFILES $lang.po"
1333     done
1334
1335     dnl Make all variables we use known to autoconf.
1336     AC_SUBST(USE_INCLUDED_LIBINTL)
1337     AC_SUBST(CATALOGS)
1338     AC_SUBST(CATOBJEXT)
1339     AC_SUBST(DATADIRNAME)
1340     AC_SUBST(GMOFILES)
1341     AC_SUBST(INSTOBJEXT)
1342     AC_SUBST(INTLDEPS)
1343     AC_SUBST(INTLLIBS)
1344     AC_SUBST(INTLOBJS)
1345     AC_SUBST(POFILES)
1346     AC_SUBST(POSUB)
1347   ])
1348
1349 AC_DEFUN(AM_GNU_GETTEXT,
1350   [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
1351    AC_REQUIRE([AC_PROG_CC])dnl
1352    AC_REQUIRE([AC_PROG_RANLIB])dnl
1353    AC_REQUIRE([AC_ISC_POSIX])dnl
1354    AC_REQUIRE([AC_HEADER_STDC])dnl
1355    AC_REQUIRE([AC_C_CONST])dnl
1356    AC_REQUIRE([AC_C_INLINE])dnl
1357    AC_REQUIRE([AC_TYPE_OFF_T])dnl
1358    AC_REQUIRE([AC_TYPE_SIZE_T])dnl
1359    AC_REQUIRE([AC_FUNC_ALLOCA])dnl
1360    AC_REQUIRE([AC_FUNC_MMAP])dnl
1361
1362    AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
1363 unistd.h sys/param.h])
1364    AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
1365 strdup __argz_count __argz_stringify __argz_next])
1366
1367    if test "${ac_cv_func_stpcpy+set}" != "set"; then
1368      AC_CHECK_FUNCS(stpcpy)
1369    fi
1370    if test "${ac_cv_func_stpcpy}" = "yes"; then
1371      AC_DEFINE(HAVE_STPCPY)
1372    fi
1373
1374    AM_LC_MESSAGES
1375    AM_WITH_NLS
1376
1377    if test "x$CATOBJEXT" != "x"; then
1378      if test "x$ALL_LINGUAS" = "x"; then
1379        LINGUAS=
1380      else
1381        AC_MSG_CHECKING(for catalogs to be installed)
1382        NEW_LINGUAS=
1383 dnl ============== Fix is here! =======================
1384 dnl Some sh do not like substitution in bounds of for loops
1385 dnl       for lang in ${LINGUAS=$ALL_LINGUAS}; do
1386     tmplinguas=${LINGUAS=$ALL_LINGUAS}
1387     for lang in ${tmplinguas}; do
1388          case "$ALL_LINGUAS" in
1389           *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
1390          esac
1391        done
1392        LINGUAS=$NEW_LINGUAS
1393        AC_MSG_RESULT($LINGUAS)
1394      fi
1395
1396      dnl Construct list of names of catalog files to be constructed.
1397      if test -n "$LINGUAS"; then
1398        for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
1399      fi
1400    fi
1401
1402    dnl The reference to <locale.h> in the installed <libintl.h> file
1403    dnl must be resolved because we cannot expect the users of this
1404    dnl to define HAVE_LOCALE_H.
1405    if test $ac_cv_header_locale_h = yes; then
1406      INCLUDE_LOCALE_H="#include <locale.h>"
1407    else
1408      INCLUDE_LOCALE_H="\
1409 /* The system does not provide the header <locale.h>.  Take care yourself.  */"
1410    fi
1411    AC_SUBST(INCLUDE_LOCALE_H)
1412
1413    dnl Determine which catalog format we have (if any is needed)
1414    dnl For now we know about two different formats:
1415    dnl   Linux libc-5 and the normal X/Open format
1416    test -d intl || mkdir intl
1417    if test "$CATOBJEXT" = ".cat"; then
1418      AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
1419
1420      dnl Transform the SED scripts while copying because some dumb SEDs
1421      dnl cannot handle comments.
1422      sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
1423    fi
1424    dnl po2tbl.sed is always needed.
1425    sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
1426      $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
1427
1428    dnl In the intl/Makefile.in we have a special dependency which makes
1429    dnl only sense for gettext.  We comment this out for non-gettext
1430    dnl packages.
1431    if test "$PACKAGE" = "gettext"; then
1432      GT_NO="#NO#"
1433      GT_YES=
1434    else
1435      GT_NO=
1436      GT_YES="#YES#"
1437    fi
1438    AC_SUBST(GT_NO)
1439    AC_SUBST(GT_YES)
1440
1441    dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
1442    dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
1443    dnl Try to locate is.
1444    MKINSTALLDIRS=
1445    if test -n "$ac_aux_dir"; then
1446      MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
1447    fi
1448    if test -z "$MKINSTALLDIRS"; then
1449      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
1450    fi
1451    AC_SUBST(MKINSTALLDIRS)
1452
1453    dnl *** For now the libtool support in intl/Makefile is not for real.
1454    l=
1455    AC_SUBST(l)
1456
1457    dnl Generate list of files to be processed by xgettext which will
1458    dnl be included in po/Makefile.
1459    test -d po || mkdir po
1460    if test "x$srcdir" != "x."; then
1461      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
1462        posrcprefix="$srcdir/"
1463      else
1464        posrcprefix="../$srcdir/"
1465      fi
1466    else
1467      posrcprefix="../"
1468    fi
1469    rm -f po/POTFILES
1470    sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
1471         < $srcdir/po/POTFILES.in > po/POTFILES
1472   ])