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)
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,[
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
16 echo "WARNING: This is a development version. Expect bugs."
20 if echo "$VERSION" | grep 'pre' > /dev/null ; then
22 echo "WARNING: This is a prerelease. Be careful and backup your documents."
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)
33 dnl Usage: LYX_ERROR(message) Displays the warning "message" and sets the
34 dnl flag lyx_error to yes.
36 lyx_error_txt="$lyx_error_txt
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
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.])])
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
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)
68 deleting cache $cache_file
73 if test x$lyx_warning = xyes; then
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)
82 Configuration of LyX was successful.
83 Type 'make' to compile the program,
84 and then 'make install' to install it.
89 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
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
107 if test -n "[$]$1"; then
113 test -n "[$]$1" && break
118 AC_DEFUN(LYX_PROG_CXX_WORKS,
121 AC_TRY_COMPILER([class foo { int bar; }; int main(){return(0);}], ac_cv_prog_cxx_works, ac_cv_prog_cxx_cross)
123 if test $ac_cv_prog_cxx_works = no; then
126 cross_compiling=$ac_cv_prog_cxx_cross
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)
135 if test -z "$CXX" ; then
136 AC_ERROR([Unable to find a working C++ compiler])
142 AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])
143 AC_MSG_RESULT($cross_compiling)
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
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])
162 # optimize less for development versions
163 if test $lyx_devel_version = yes -o $lyx_prerelease = yes ; then
169 # set the debug flags correctly.
170 if test $ac_cv_prog_gxx = yes; then
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"
178 dnl Check the version of g++
179 gxx_version=`g++ --version`
182 if test "$ac_test_CXXFLAGS" = set; then
183 CXXFLAGS="$ac_save_CXXFLAGS"
184 elif test $ac_cv_prog_cxx_g = yes; then
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 -fno-exceptions";;
189 *) CXXFLAGS="-g $lyx_opt -fno-exceptions -fno-rtti";;
194 if test x$with_warnings = xyes ; then
196 2.95.*) CXXFLAGS="$CXXFLAGS -Wall -W -Wconversion";;
197 *) CXXFLAGS="$CXXFLAGS -ansi -Wall -W";;
199 if test $lyx_devel_version = yes ; then
202 *) CXXFLAGS="$CXXFLAGS -pedantic";;
208 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
213 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
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,
221 virtual int tag() { return 0; }
223 class derived1 : public rtti {
225 int tag() { return 1; }
227 class derived2 : public rtti {
229 int tag() { return 2; }
232 derived1 * foo1 = new derived1();
233 derived2 * foo2 = new derived2();
235 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
239 bar1 = dynamic_cast<derived1 *>(bar);
244 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
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])
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,
261 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
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])
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,
280 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
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
289 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
290 dnl count template, if not the old HP version is assumed.
291 AC_DEFUN(LYX_STD_COUNT,[
292 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
298 int countChar(string const & a, char const c)
300 return count(a.begin(), a.end(), c);
304 int i = countChar(a, 'l');
305 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
307 if test $lyx_cv_std_count = yes ; then
308 AC_DEFINE(HAVE_STD_COUNT, 1,
309 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
313 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
314 dnl supports modern STL streams
315 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
316 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
320 std::streambuf * test = std::cerr.rdbuf();
322 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
324 if test $lyx_cv_modern_streams = yes ; then
325 AC_DEFINE(MODERN_STL_STREAMS, 1,
326 [Define if you have modern standard-compliant STL streams])
330 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
331 dnl has a working stl string container, the check is really stupid
332 dnl and could need some improvement.
333 AC_DEFUN(LYX_CXX_STL_STRING,[
334 AC_REQUIRE([LYX_PROG_CXX])
335 AC_MSG_CHECKING(whether the included std::string should be used)
336 AC_ARG_WITH(included-string,
337 [ --with-included-string use LyX string class instead of STL string],
338 [with_included_string=$withval],
343 string a("hello there");
348 with_included_string=no
350 with_included_string=yes
354 if test x$with_included_string = xyes ; then
355 AC_DEFINE(USE_INCLUDED_STRING, 1,
356 [Define to use the lyxstring class bundled with LyX.])
357 lyx_flags="$lyx_flags included-string"
359 AM_CONDITIONAL(USE_LYXSTRING, test x$with_included_string = xyes)
360 AC_MSG_RESULT([$with_included_string])
364 dnl Usage: LYX_REGEX : checks if the header regex.h is available
365 dnl if it is not available the automake variable USE_REGEX will be
366 dnl defined and the regex.h and regex.c that we provide will be used.
368 AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
369 AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
374 AC_DEFUN(LYX_CXX_MUTABLE, [
375 AC_REQUIRE([LYX_PROG_CXX])
376 AC_MSG_CHECKING(if C++ compiler supports mutable)
382 void foo() const { c=0; }
387 AC_DEFINE(HAVE_MUTABLE, 1,
388 [Defined if you compiler supports 'mutable'.])
392 AC_MSG_RESULT([$ac_mutable])
397 AC_DEFUN(LYX_CXX_PARTIAL, [
398 AC_REQUIRE([LYX_PROG_CXX])
399 AC_MSG_CHECKING(if C++ compiler supports partial specialization)
402 template<class T, class K>
406 template<class T> class k<void,T> { };
411 ac_partial_specialization=yes
412 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
413 [Defined if your compiler supports partial specialization.])
415 ac_partial_specialization=no
417 AC_MSG_RESULT([$ac_partial_specialization])
421 dnl Usage: LYX_CXX_NAMESPACES : checks whether the C++ compiler
422 dnl has a correct namespace handling and define CXX_WORKING_NAMESPACES
423 dnl if true. This macro does not do a thourough test, but it should be
424 dnl good enough to suit our needs.
425 AC_DEFUN(LYX_CXX_NAMESPACES,[
426 AC_CACHE_CHECK(for correct namespaces support,lyx_cv_cxx_namespace,
433 ],lyx_cv_cxx_namespace=yes,lyx_cv_cxx_namespace=no)
435 if test $lyx_cv_cxx_namespace = yes ; then
436 AC_DEFINE(CXX_WORKING_NAMESPACES, 1,
437 [Define if your C++ compiler has correct support for namespaces])
441 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
442 dnl provides wrappers for C headers and use our alternate version otherwise.
443 AC_DEFUN(LYX_CXX_CHEADERS,[
444 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
454 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
455 if test $lyx_cv_cxx_cheaders = no ; then
456 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
460 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
461 AC_DEFUN(LYX_PATH_XPM,[
462 ### Check for Xpm library
463 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
464 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
466 ### Check for Xpm headers
467 lyx_cv_xpm_h_location="<xpm.h>"
468 AC_CHECK_HEADER(X11/xpm.h,[
469 ac_cv_header_xpm_h=yes
470 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
471 AC_CHECK_HEADER(xpm.h,[],[
472 LYX_LIB_ERROR(xpm.h,Xpm)])])
473 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
475 ### Test for the header version
476 if test $ac_cv_header_xpm_h = yes; then
477 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
478 [ cat > conftest.$ac_ext <<EOF
479 #line __oline__ "configure"
480 #include "confdefs.h"
482 #include XPM_H_LOCATION
483 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
485 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
486 grep '^"%%%"' 2>/dev/null | \
487 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
488 case "$lyx_cv_xpmr" in
490 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
491 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
495 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
497 case "$lyx_cv_xpmr" in
499 [789]|[0-9][0-9]*) ;;
501 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
502 If you experience strange crashes with LyX, try to upgrade
503 to at least version 4.7 (aka 3.4g).
504 If you have installed a newer version of the library, check whether you
505 have an old xpm.h header file in your include path.]);;
510 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
511 AC_DEFUN(LYX_PATH_XFORMS,[
512 ### Check for xforms library
513 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
514 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
515 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
517 ### Check for xforms headers
518 lyx_cv_forms_h_location="<forms.h>"
519 AC_CHECK_HEADER(X11/forms.h,[
520 ac_cv_header_forms_h=yes
521 lyx_cv_forms_h_location="<X11/forms.h>"],[
522 AC_CHECK_HEADER(forms.h,[],[
523 LYX_LIB_ERROR(forms.h,forms)])])
524 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
525 if test $ac_cv_header_forms_h = yes; then
526 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
527 [ cat > conftest.$ac_ext <<EOF
528 #line __oline__ "configure"
529 #include "confdefs.h"
531 #include FORMS_H_LOCATION
532 #if ! defined(FL_INCLUDE_VERSION)
535 "%%%"FL_VERSION.FL_REVISION"%%%"
538 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
539 grep '^"%%%"' 2>/dev/null | \
540 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
542 case "$lyx_cv_xfversion" in
543 "(unknown)"|0.82|0.83|0.84|0.85)
545 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
546 This version of LyX works best with version 0.88[,] although it
547 supports also versions 0.81[,] 0.86 and 0.87.) ;;
550 While LyX is compatible with version $lyx_cv_xfversion of xforms[,]
551 it is recommended that you upgrade to version 0.88.) ;;
553 0.89) LYX_WARNING(dnl
554 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
555 it is an unproven version and might still have some bugs. If you
556 have problems[,] please use version 0.88 instead.) ;;
558 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
559 since it is newer than 0.88. You might have slight problems with it.);;
564 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
566 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
567 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
568 os=`uname -s | tr '[A-Z]' '[a-z]'`
570 test "$os" = hp-ux && ac_cv_hpux=yes])
571 if test "$ac_cv_hpux" = yes; then
572 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
576 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
579 [#The headers are not correct under SunOS4
580 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
582 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
583 changequote([, ]) dnl
585 test "$os" = SunOS4 && ac_cv_sunos4=yes])
586 if test "$ac_cv_sunos4" = yes; then
587 test "x$GXX" = xyes && lyx_broken_headers=yes
591 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
594 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
596 if test `uname -s` != "SCO_SV"; then
597 lyx_machine_rel=`uname -m`:`uname -r`
598 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
600 if test -f /usr/options/cb.name; then
602 elif /bin/uname -X 2>/dev/null >/dev/null ; then
607 if test "$ac_cv_sco" = yes; then
608 test "x$GXX" = xyes && lyx_broken_headers=yes
611 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
612 dnl Checks whether putenv() takes 'char const *' or 'char *' as
613 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
614 dnl while everybody else uses the former...
615 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
616 [AC_MSG_CHECKING([type of argument for putenv()])
617 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
619 [#include <cstdlib>],
620 [char const * foo = "bar";
622 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
623 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
624 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
625 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
628 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
629 dnl [default-yes-value])
630 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
631 dnl resulting directory name in 'dir-var-name'.
632 AC_DEFUN(LYX_WITH_DIR,[
633 AC_ARG_WITH($1,[ --with-$1 specify $2])
634 AC_MSG_CHECKING([for $2])
635 if test -z "$with_$3"; then
636 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
638 test "x$with_$3" = xyes && with_$3=$5
641 AC_MSG_RESULT($lyx_cv_$3)])
644 dnl Usage: LYX_LOOP_DIR(value,action)
645 dnl Executes action for values of variable `dir' in `values'. `values' can
646 dnl use ":" as a separator.
647 AC_DEFUN(LYX_LOOP_DIR,[
648 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
649 for dir in `eval "echo $1"`; do
650 if test ! "$dir" = NONE; then
651 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
659 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
661 AC_DEFUN(LYX_ADD_LIB_DIR,[
663 if test "`(uname) 2>/dev/null`" = SunOS &&
664 uname -r | grep '^5' >/dev/null; then
665 if test $ac_cv_prog_gxx = yes ; then
666 $1="${$1} -Wl[,]-R$2"
673 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
675 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
677 ### Check for a headers existence and location iff it exists
678 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
679 ## It almost works. I've tried a few variations but they give errors
680 ## of one sort or other: bad substitution or file not found etc. The
681 ## actual header _is_ found though and the cache variable is set however
682 ## the reported setting (on screen) is equal to $ac_safe for some unknown
684 AC_DEFUN(LYX_PATH_HEADER,
685 [ AC_CHECK_HEADER($1,[
686 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
687 AC_CACHE_CHECK([path to $1],lyx_cv_path_$ac_safe,
688 [ cat > conftest.$ac_ext <<EOF
689 #line __oline__ "configure"
690 #include "confdefs.h"
694 lyx_cv_path_$ac_safe=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
695 grep $1 2>/dev/null | \
696 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
698 AC_DEFINE_UNQUOTED(${ac_tr_safe},${lyx_cv_path_$ac_safe})])
700 ### end of LYX_PATH_HEADER
702 ### Check for stl_string_fwd.h existence and location if it exists
703 AC_DEFUN(LYX_STL_STRING_FWD,
704 [ AC_CHECK_HEADER(stl_string_fwd.h,[
705 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
706 [ cat > conftest.$ac_ext <<EOF
707 #line __oline__ "configure"
708 #include "confdefs.h"
710 #include <stl_string_fwd.h>
712 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
713 grep 'stl_string_fwd.h' 2>/dev/null | \
714 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
716 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
717 [define this to the location of stl_string_fwd.h to be used with #include,
718 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
719 supplied version of the header.
720 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
724 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
725 dnl if the cache file is inconsistent with the current host,
726 dnl target and build system types, execute CMD or print a default
728 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
729 AC_REQUIRE([AC_CANONICAL_SYSTEM])
730 AC_MSG_CHECKING([config.cache system type])
731 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
732 test x"$ac_cv_host_system_type" != x"$host"; } ||
733 { test x"${ac_cv_build_system_type+set}" = x"set" &&
734 test x"$ac_cv_build_system_type" != x"$build"; } ||
735 { test x"${ac_cv_target_system_type+set}" = x"set" &&
736 test x"$ac_cv_target_system_type" != x"$target"; }; then
737 AC_MSG_RESULT([different])
739 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
741 AC_MSG_RESULT([same])
743 ac_cv_host_system_type="$host"
744 ac_cv_build_system_type="$build"
745 ac_cv_target_system_type="$target"
748 dnl We use this until autoconf fixes its version.
749 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
750 [AC_MSG_CHECKING([types of arguments for select()])
751 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
752 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
753 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
754 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
755 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
757 [#ifdef HAVE_SYS_TYPES_H
758 #include <sys/types.h>
760 #ifdef HAVE_SYS_TIME_H
761 #include <sys/time.h>
763 #ifdef HAVE_SYS_SELECT_H
764 #include <sys/select.h>
766 #ifdef HAVE_SYS_SOCKET_H
767 #include <sys/socket.h>
769 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
770 [ac_not_found=no ; break 3],ac_not_found=yes)
777 if test "$ac_not_found" = yes; then
778 ac_cv_func_select_arg1=int
779 ac_cv_func_select_arg234='int *'
780 ac_cv_func_select_arg5='struct timeval *'
782 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
783 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1)
784 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234))
785 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5))