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