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