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 dnl Allan Rae (rae@lyx.org)
7 dnl Usage LYX_GET_VERSION Sets "lyx_version" to the version of LyX being
8 dnl built, displays it and sets variable "lyx_devel" to yes or no depending
9 dnl whether the version is a development release or not.
10 AC_DEFUN(LYX_GET_VERSION,[
12 VERSION=`grep '#define *LYX_VERSION' $1 |
13 sed -e 's/^.*"\(.*\)"$/\1/' 2>/dev/null`
14 echo "configuring LyX version $VERSION"
15 if echo "$VERSION" | grep 'cvs' >/dev/null ; then
17 echo "WARNING: This is a development version. Expect bugs."
21 if echo "$VERSION" | grep 'pre' > /dev/null ; then
23 echo "WARNING: This is a prerelease. Be careful and backup your documents."
28 PACKAGE=lyx${program_suffix}
29 AC_SUBST(lyx_devel_version)
30 if test $lyx_devel_version = yes ; then
31 AC_DEFINE(DEVEL_VERSION, 1, Define if you are building a development version of LyX)
34 dnl Usage: LYX_ERROR(message) Displays the warning "message" and sets the
35 dnl flag lyx_error to yes.
37 lyx_error_txt="$lyx_error_txt
43 dnl Usage: LYX_WARNING(message) Displays the warning "message" and sets the
44 dnl flag lyx_warning to yes.
45 AC_DEFUN(LYX_WARNING,[
46 lyx_warning_txt="$lyx_warning_txt
52 dnl Usage: LYX_LIB_ERROR(file,library) Displays an error message indication
53 dnl that 'file' cannot be found because 'lib' may be uncorrectly installed.
54 AC_DEFUN(LYX_LIB_ERROR,[
55 LYX_ERROR([Cannot find $1. Please check that the $2 library
56 is correctly installed on your system.])])
59 dnl Usage: LYX_CHECK_ERRORS Displays a warning message if a LYX_ERROR
60 dnl has occured previously.
61 AC_DEFUN(LYX_CHECK_ERRORS,[
62 if test x$lyx_error = xyes; then
64 **** The following problems have been detected by configure.
65 **** Please check the messages below before running 'make'.
66 **** (see the section 'Problems' in the INSTALL file)
69 deleting cache $cache_file
74 if test x$lyx_warning = xyes; then
76 === The following minor problems have been detected by configure.
77 === Please check the messages below before running 'make'.
78 === (see the section 'Problems' in the INSTALL file)
83 Configuration of LyX was successful.
84 Type 'make' to compile the program,
85 and then 'make install' to install it.
90 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
92 define(LYX_SEARCH_PROG,[dnl
93 for ac_prog in $2 ; do
94 # Extract the first word of "$ac_prog", so it can be a program name with args.
95 set dummy $ac_prog ; ac_word=$[2]
96 if test -z "[$]$1"; then
97 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
98 for ac_dir in $PATH; do
99 test -z "$ac_dir" && ac_dir=.
100 if test -f [$ac_dir/$ac_word]; then
108 if test -n "[$]$1"; then
114 test -n "[$]$1" && break
119 AC_DEFUN(LYX_PROG_CXX_WORKS,
122 AC_TRY_COMPILER([class foo { int bar; }; int main(){return(0);}], ac_cv_prog_cxx_works, ac_cv_prog_cxx_cross)
124 if test $ac_cv_prog_cxx_works = no; then
127 cross_compiling=$ac_cv_prog_cxx_cross
131 AC_DEFUN(LYX_PROG_CXX,
132 [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
133 AC_MSG_CHECKING([for a working C++ compiler])
134 LYX_SEARCH_PROG(CXX, $CCC g++ gcc c++ CC cxx xlC cc++, LYX_PROG_CXX_WORKS)
136 if test -z "$CXX" ; then
137 AC_ERROR([Unable to find a working C++ compiler])
143 AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])
144 AC_MSG_RESULT($cross_compiling)
148 dnl We might want to get or shut warnings.
149 AC_ARG_WITH(warnings,
150 [ --with-warnings tell the compiler to display more warnings],,
151 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
156 if test x$with_warnings = xyes ; then
157 lyx_flags="$lyx_flags warnings"
158 AC_DEFINE(WITH_WARNINGS, 1,
159 [Define this if you want to see the warning directives put here and
160 there by the developpers to get attention])
163 # optimize less for development versions
164 if test $lyx_devel_version = yes -o $lyx_prerelease = yes ; then
170 # set the debug flags correctly.
171 if test $ac_cv_prog_gxx = yes; then
173 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
174 dnl plays around with CXXFLAGS (such as to build both debugging and
175 dnl normal versions of a library), tasteless as that idea is.
176 ac_test_CXXFLAGS="${CXXFLAGS+set}"
177 ac_save_CXXFLAGS="$CXXFLAGS"
179 dnl Check the version of g++
180 gxx_version=`${CXX} --version`
183 if test "$ac_test_CXXFLAGS" = set; then
184 CXXFLAGS="$ac_save_CXXFLAGS"
185 elif test $ac_cv_prog_cxx_g = yes; then
187 2.95.1) CXXFLAGS="-g $lyx_opt -fpermissive -fno-rtti -fno-exceptions";;
188 2.95.2) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
189 2.95.*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
190 2.96*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
191 2.97*) CXXFLAGS="-g $lyx_opt -fvtable-thunks -fno-builtin -ffunction-sections -fdata-sections"
192 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE=1";;
193 *2.91.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
194 *) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
199 if test x$with_warnings = xyes ; then
201 2.95.*) CXXFLAGS="$CXXFLAGS -W -Wall";;
202 2.96*) CXXFLAGS="$CXXFLAGS -W -Wall";;
203 2.97*) CXXFLAGS="$CXXFLAGS -W -Wall";;
204 *) CXXFLAGS="$CXXFLAGS -W -Wall";;
206 if test $lyx_devel_version = yes ; then
210 2.97*) CXXFLAGS="$CXXFLAGS -Wconversion -Winline";;
218 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
223 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
225 AC_DEFUN(LYX_CXX_RTTI,[
226 ### Check whether the compiler supports runtime type information
227 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
231 virtual int tag() { return 0; }
233 class derived1 : public rtti {
235 int tag() { return 1; }
237 class derived2 : public rtti {
239 int tag() { return 2; }
242 derived1 * foo1 = new derived1();
243 derived2 * foo2 = new derived2();
245 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
249 bar1 = dynamic_cast<derived1 *>(bar);
254 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
256 if test x$lyx_cv_rtti = xyes ; then
257 AC_DEFINE(HAVE_RTTI, 1,
258 [Define to 1 if your compiler supports runtime type information])
262 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
263 dnl understands the "explicit" directive.
264 AC_DEFUN(LYX_CXX_EXPLICIT,[
265 ### Check whether the compiler understands the keyword `explicit'
266 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
271 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
273 if test $lyx_cv_explicit = no ; then
274 AC_DEFINE(explicit,[ ],
275 [Define to nothing if your compiler does not understand the
276 'explicit' directive])
280 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
281 dnl has a working stl stack template
282 AC_DEFUN(LYX_CXX_STL_STACK,[
283 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
290 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
292 if test $lyx_cv_broken_stack = yes ; then
293 AC_DEFINE(BROKEN_STL_STACK, 1,
294 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
299 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
300 dnl count template, if not the old HP version is assumed.
301 AC_DEFUN(LYX_STD_COUNT,[
302 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
306 int countChar(char * b, char * e, char const c)
308 return count(b, e, c);
312 int i = countChar(a, a + 5, 'l');
313 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
315 if test $lyx_cv_std_count = yes ; then
316 AC_DEFINE(HAVE_STD_COUNT, 1,
317 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
321 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
322 dnl supports modern STL streams
323 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
324 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
328 std::streambuf * test = std::cerr.rdbuf();
330 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
332 if test $lyx_cv_modern_streams = yes ; then
333 AC_DEFINE(MODERN_STL_STREAMS, 1,
334 [Define if you have modern standard-compliant STL streams])
338 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
339 dnl has a std::string that is usable for LyX. LyX does not require this
340 dnl std::string to be standard.
341 AC_DEFUN(LYX_CXX_STL_STRING,[
342 AC_REQUIRE([LYX_PROG_CXX])
343 AC_MSG_CHECKING(whether the included std::string should be used)
344 AC_ARG_WITH(included-string,
345 [ --with-included-string use LyX string class instead of STL string],
346 [lyx_cv_with_included_string=$withval],
347 [AC_CACHE_CHECK([],lyx_cv_with_included_string,
352 // LyX has reduced its requirements on the basic_string
353 // implementation so that the basic_string supplied
354 // with gcc is usable. In particular this means that
355 // lyx does not use std::string::clear and not the
356 // strncmp version of std::string::compare. This is mainly
357 // done so that LyX can use precompiled C++ libraries that
358 // already uses the systems basic_string, e.g. gtk--
359 string a("hello there");
363 //int t = a.compare(a.length() - 1, 1, s);
366 lyx_cv_with_included_string=no
368 lyx_cv_with_included_string=yes
372 if test x$lyx_cv_with_included_string = xyes ; then
373 AC_DEFINE(USE_INCLUDED_STRING, 1,
374 [Define to use the lyxstring class bundled with LyX.])
375 lyx_flags="$lyx_flags included-string"
377 AM_CONDITIONAL(USE_LYXSTRING, test x$lyx_cv_with_included_string = xyes)
378 dnl AC_MSG_RESULT([$with_included_string])
382 dnl Usage: LYX_CXX_GOOD_STD_STRING : checks whether the C++ compiler
383 dnl has a std::string that is close to the standard. So close that
384 dnl methods not found in "unstandard" std::strings are present here.
385 AC_DEFUN(LYX_CXX_GOOD_STD_STRING,[
386 AC_REQUIRE([LYX_PROG_CXX])
387 AC_CACHE_CHECK([whether the systems std::string is really good],
388 [lyx_cv_std_string_good],
393 // From a std::string that is supposed to be close to the
394 // standard we require at least three things:
395 // - clear() and erase()
396 // - the strncmp of compare()
398 string a("hello there");
402 int t = a.compare(a.length() - 1, 1, s);
406 lyx_cv_std_string_good=yes
408 lyx_cv_std_string_good=no
412 if test x$lyx_cv_std_string_good = xyes ; then
413 AC_DEFINE(STD_STRING_IS_GOOD, 1,
414 [Define if the systems std::string is really good.])
419 dnl Usage: LYX_REGEX : checks if the header regex.h is available
420 dnl if it is not available the automake variable USE_REGEX will be
421 dnl defined and the regex.h and regex.c that we provide will be used.
423 AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
424 AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
429 AC_DEFUN(LYX_CXX_MUTABLE, [
430 AC_REQUIRE([LYX_PROG_CXX])
431 AC_CACHE_CHECK([if C++ compiler supports mutable],
438 void foo() const { c=0; }
442 lyx_cv_cxx_mutable=yes
444 lyx_cv_cxx_mutable=no
447 if test $lyx_cv_cxx_mutable = yes ; then
448 AC_DEFINE(HAVE_MUTABLE, 1,
449 [Defined if your compiler suports 'mutable'.])
455 AC_DEFUN(LYX_CXX_PARTIAL, [
456 AC_REQUIRE([LYX_PROG_CXX])
457 AC_CACHE_CHECK([if C++ compiler supports partial specialization],
458 [lyx_cv_cxx_partial_specialization],
461 template<class T, class K>
465 template<class T> class k<void,T> { };
470 lyx_cv_cxx_partial_specialization=yes
472 lyx_cv_cxx_partial_specialization=no
475 if test x$lyx_cv_cxx_partial_specialization = xyes ; then
476 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
477 [Defined if your compiler supports partial specialization.])
482 dnl Usage: LYX_CXX_NAMESPACES : checks whether the C++ compiler
483 dnl has a correct namespace handling and define CXX_WORKING_NAMESPACES
484 dnl if true. This macro does not do a thourough test, but it should be
485 dnl good enough to suit our needs.
486 AC_DEFUN(LYX_CXX_NAMESPACES,[
487 AC_CACHE_CHECK(for correct namespaces support,lyx_cv_cxx_namespace,
495 ],lyx_cv_cxx_namespace=yes,lyx_cv_cxx_namespace=no)
497 if test x$lyx_cv_cxx_namespace = xyes ; then
498 AC_DEFINE(CXX_WORKING_NAMESPACES, 1,
499 [Define if your C++ compiler has correct support for namespaces])
504 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
505 dnl provides wrappers for C headers and use our alternate version otherwise.
506 AC_DEFUN(LYX_CXX_CHEADERS,[
507 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
517 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
518 if test $lyx_cv_cxx_cheaders = no ; then
519 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
522 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
523 dnl are already in the global namespace
524 AC_DEFUN(LYX_CXX_GLOBAL_CSTD,[
525 AC_CACHE_CHECK(whether C library functions are already in the global namespace,
526 lyx_cv_cxx_global_cstd,
532 ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
533 if test x$lyx_cv_cxx_global_cstd = xyes; then
534 AC_DEFINE(CXX_GLOBAL_CSTD,1,
535 [Define if your C++ compiler puts C library functions in the global namespace])
539 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
540 AC_DEFUN(LYX_PATH_XPM,[
541 ### Check for Xpm library
542 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
543 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
545 ### Check for Xpm headers
546 lyx_cv_xpm_h_location="<xpm.h>"
547 AC_CHECK_HEADER(X11/xpm.h,[
548 ac_cv_header_xpm_h=yes
549 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
550 AC_CHECK_HEADER(xpm.h,[],[
551 LYX_LIB_ERROR(xpm.h,Xpm)])])
552 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
554 ### Test for the header version
555 if test $ac_cv_header_xpm_h = yes; then
556 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
557 [ cat > conftest.$ac_ext <<EOF
558 #line __oline__ "configure"
559 #include "confdefs.h"
561 #include XPM_H_LOCATION
562 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
564 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
565 grep '^"%%%"' 2>/dev/null | \
566 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
567 case "$lyx_cv_xpmr" in
569 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
570 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
574 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
576 case "$lyx_cv_xpmr" in
578 [789]|[0-9][0-9]*) ;;
580 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
581 If you experience strange crashes with LyX, try to upgrade
582 to at least version 4.7 (aka 3.4g).
583 If you have installed a newer version of the library, check whether you
584 have an old xpm.h header file in your include path.]);;
589 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
590 AC_DEFUN(LYX_PATH_XFORMS,[
591 ### Check for xforms library
592 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
593 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
594 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
596 ### Check for xforms headers
597 lyx_cv_forms_h_location="<forms.h>"
598 AC_CHECK_HEADER(X11/forms.h,[
599 ac_cv_header_forms_h=yes
600 lyx_cv_forms_h_location="<X11/forms.h>"],[
601 AC_CHECK_HEADER(forms.h,[],[
602 LYX_LIB_ERROR(forms.h,forms)])])
603 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
604 if test $ac_cv_header_forms_h = yes; then
605 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
606 [ cat > conftest.$ac_ext <<EOF
607 #line __oline__ "configure"
608 #include "confdefs.h"
610 #include FORMS_H_LOCATION
611 #if ! defined(FL_INCLUDE_VERSION)
614 "%%%"FL_VERSION.FL_REVISION.FL_FIXLEVEL"%%%"
617 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
618 grep '^"%%%"' 2>/dev/null | \
619 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
621 case "$lyx_cv_xfversion" in
622 "(unknown)"|0.8[1-7]*)
624 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
625 This version of LyX works best with versions 0.88 (recommended) and later.) ;;
627 0.89*) LYX_WARNING(dnl
628 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
629 it is an unproven version and might still have some bugs. If you
630 have problems[,] please use version 0.88 instead.) ;;
632 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
633 since it is newer than 0.88. You might have slight problems with it.);;
638 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
640 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
641 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
642 os=`uname -s | tr '[A-Z]' '[a-z]'`
644 test "$os" = hp-ux && ac_cv_hpux=yes])
645 if test "$ac_cv_hpux" = yes; then
646 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
650 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
653 [#The headers are not correct under SunOS4
654 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
656 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
657 changequote([, ]) dnl
659 test "$os" = SunOS4 && ac_cv_sunos4=yes])
660 if test "$ac_cv_sunos4" = yes; then
661 test "x$GXX" = xyes && lyx_broken_headers=yes
665 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
668 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
670 if test `uname -s` != "SCO_SV"; then
671 lyx_machine_rel=`uname -m`:`uname -r`
672 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
674 if test -f /usr/options/cb.name; then
676 elif /bin/uname -X 2>/dev/null >/dev/null ; then
681 if test "$ac_cv_sco" = yes; then
682 test "x$GXX" = xyes && lyx_broken_headers=yes
685 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
686 dnl Checks whether putenv() takes 'char const *' or 'char *' as
687 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
688 dnl while everybody else uses the former...
689 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
690 [AC_MSG_CHECKING([type of argument for putenv()])
691 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
693 [#include <cstdlib>],
694 [char const * foo = "bar";
696 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
697 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
698 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
699 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
702 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
703 dnl [default-yes-value])
704 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
705 dnl resulting directory name in 'dir-var-name'.
706 AC_DEFUN(LYX_WITH_DIR,[
707 AC_ARG_WITH($1,[ --with-$1 specify $2])
708 AC_MSG_CHECKING([for $2])
709 if test -z "$with_$3"; then
710 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
712 test "x$with_$3" = xyes && with_$3=$5
715 AC_MSG_RESULT($lyx_cv_$3)])
718 dnl Usage: LYX_LOOP_DIR(value,action)
719 dnl Executes action for values of variable `dir' in `values'. `values' can
720 dnl use ":" as a separator.
721 AC_DEFUN(LYX_LOOP_DIR,[
722 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
723 for dir in `eval "echo $1"`; do
724 if test ! "$dir" = NONE; then
725 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
733 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
735 AC_DEFUN(LYX_ADD_LIB_DIR,[
737 if test "`(uname) 2>/dev/null`" = SunOS &&
738 uname -r | grep '^5' >/dev/null; then
739 if test $ac_cv_prog_gxx = yes ; then
740 $1="${$1} -Wl[,]-R$2"
747 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
749 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
751 ### Check which libsigc++ we're using and make sure any external one works
752 ### Check for libsigc++ library
753 AC_DEFUN(LYX_WITH_SIGC,
754 [AC_MSG_CHECKING(whether the included libsigc++ should be used)
755 AC_ARG_WITH([included-libsigc],
756 [ --without-included-libsigc
757 Use the libsigc++ installed on the system],
758 [lyx_use_included_libsigc=$withval],
759 [lyx_use_included_libsigc=yes])
760 AC_MSG_RESULT([$lyx_use_included_libsigc])
761 if test x$lyx_use_included_libsigc = xno; then
762 ### Check for libsigc++
763 ## can't use AC_SUBST right here!
768 [Cannot find libsigc++ library or headers at least as recent as 0.8.7.
769 Check your installation. Have you installed the development package?])
772 ### Use the included libsigc++
773 ### sigc-config hasn't been created yet so we can't just do the same as above
774 ### unless of course someone gets keen and merges the sigc++ configure.in
775 ### with this one. We don't really gain much by doing that though except
776 ### a considerably smaller dist and more difficult maintenance.
777 ### It'd also mean we'd have the equivalent of config/gettext.m4
778 lyx_flags="$lyx_flags included-libsigc"
779 SIGC_LIBS="\`\${top_builddir}/sigc++/sigc-config --libs-names | sed -e 's/-lsigc//'\`"
780 # Libsigc++ always installs into a subdirectory called sigc++. Therefore we
781 # have to always use #include <sigc++/signal_system.h> in our code.
782 # Remember if you decide to do anything to the sigc++ code to do your mods on
783 # the makeLyXsigc.sh script in development/tools using a current cvs checkout
784 # of libsigc++. A tarball distribution doesn't have everything in it that we
786 # We need both these -I entries to build when builddir != srcdir
787 if test "x$src_dir" = "x." ; then
788 SIGC_CFLAGS="-I\${top_srcdir}"
790 SIGC_CFLAGS="-I\${top_builddir} -I\${top_srcdir}"
792 INCLUDED_SIGC="\${top_builddir}/sigc++/libsigc.la"
793 ## can't substitute these here like this otherwise all remaining tests fail
794 ## instead we SUBST directly into the Makefiles
795 ##LIBS="$LIBS \$SIGC_LIBS"
796 ##CPPFLAGS="$CPPFLAGS \$SIGC_CFLAGS"
798 AC_SUBST(SIGC_CFLAGS)
800 AC_SUBST(INCLUDED_SIGC)
803 ### Check for a headers existence and location iff it exists
804 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
805 ## It almost works. I've tried a few variations but they give errors
806 ## of one sort or other: bad substitution or file not found etc. The
807 ## actual header _is_ found though and the cache variable is set however
808 ## the reported setting (on screen) is equal to $ac_safe for some unknown
810 ## Additionally, autoheader can't figure out what to use as the name in
811 ## the config.h.in file so we need to write our own entries there -- one for
812 ## each header in the form PATH_HEADER_NAME_H
814 AC_DEFUN(LYX_PATH_HEADER,
815 [ AC_CHECK_HEADER($1,[
816 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
817 ### the only remaining problem is getting the second parameter to this
818 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
819 ### of $ac_safe being printed.
820 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
821 [ cat > conftest.$ac_ext <<EOF
822 #line __oline__ "configure"
823 #include "confdefs.h"
827 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
828 grep $1 2>/dev/null | \
829 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
830 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
832 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path)])
834 ### end of LYX_PATH_HEADER
836 ### Check for stl_string_fwd.h existence and location if it exists
837 AC_DEFUN(LYX_STL_STRING_FWD,
838 [ AC_CHECK_HEADER(stl_string_fwd.h,[
839 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
840 [ cat > conftest.$ac_ext <<EOF
841 #line __oline__ "configure"
842 #include "confdefs.h"
844 #include <stl_string_fwd.h>
846 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
847 grep 'stl_string_fwd.h' 2>/dev/null | \
848 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
850 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
851 [define this to the location of stl_string_fwd.h to be used with #include,
852 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
853 supplied version of the header.
854 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
858 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
859 dnl if the cache file is inconsistent with the current host,
860 dnl target and build system types, execute CMD or print a default
862 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
863 AC_REQUIRE([AC_CANONICAL_SYSTEM])
864 AC_MSG_CHECKING([config.cache system type])
865 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
866 test x"$ac_cv_host_system_type" != x"$host"; } ||
867 { test x"${ac_cv_build_system_type+set}" = x"set" &&
868 test x"$ac_cv_build_system_type" != x"$build"; } ||
869 { test x"${ac_cv_target_system_type+set}" = x"set" &&
870 test x"$ac_cv_target_system_type" != x"$target"; }; then
871 AC_MSG_RESULT([different])
873 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
875 AC_MSG_RESULT([same])
877 ac_cv_host_system_type="$host"
878 ac_cv_build_system_type="$build"
879 ac_cv_target_system_type="$target"
882 dnl We use this until autoconf fixes its version.
883 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
884 [AC_MSG_CHECKING([types of arguments for select()])
885 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
886 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
887 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
888 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
889 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
891 [#ifdef HAVE_SYS_TYPES_H
892 #include <sys/types.h>
894 #ifdef HAVE_SYS_TIME_H
895 #include <sys/time.h>
897 #ifdef HAVE_SYS_SELECT_H
898 #include <sys/select.h>
900 #ifdef HAVE_SYS_SOCKET_H
901 #include <sys/socket.h>
903 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
904 [ac_not_found=no ; break 3],ac_not_found=yes)
911 if test "$ac_not_found" = yes; then
912 ac_cv_func_select_arg1=int
913 ac_cv_func_select_arg234='int *'
914 ac_cv_func_select_arg5='struct timeval *'
916 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
917 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1)
918 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234))
919 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5))
922 ### Check which frontend we want to use. The default is XForms
924 AC_DEFUN(LYX_USE_FRONTEND,
925 [AC_MSG_CHECKING(what frontend should be used as main GUI)
926 AC_ARG_WITH(frontend,
927 [ --with-frontend[=value] Use THIS frontend as main GUI:
928 Possible values: xforms,kde,gnome],
929 [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"])
930 AC_MSG_RESULT($lyx_use_frontend)
931 lyx_flags="$lyx_flags frontend-$lyx_use_frontend"
933 AC_SUBST(FRONTEND_GUILIB)
934 AC_SUBST(FRONTEND_LDFLAGS)
935 AC_SUBST(FRONTEND_INCLUDES)
936 AC_SUBST(FRONTEND_LIBS)
940 dnl Check things are declared in headers to avoid errors or warnings.
941 dnl Called like LYX_CHECK_DECL(function, headerfile)
942 dnl Defines HAVE_DECL_{FUNCTION}
943 AC_DEFUN(LYX_CHECK_DECL,
944 [AC_MSG_CHECKING(if $1 is declared by header $2)
945 tr_func=`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
947 tr_hdr=`echo $2 | tr . _`
948 AC_CACHE_VAL([lyx_cv_declare_${tr_hdr}_$1],
949 [AC_EGREP_HEADER($1, $2, [eval "lyx_cv_declare_${tr_hdr}_$1=yes"], [eval "lyx_cv_declare_${tr_hdr}_$1=no"])])
950 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
951 AC_DEFINE_UNQUOTED(HAVE_DECL_${tr_func})
957 dnl This is the multiple headers version of the LYX_CHECK_DECL macro above.
958 dnl Called like LYX_CHECK_DECL_HDRS(function, file1 file2 file3)
959 AC_DEFUN(LYX_CHECK_DECL_HDRS,
962 tr_hdr=`echo $I | tr . _`
963 if test "${got}" = "no"; then
964 LYX_CHECK_DECL($1, $I)
966 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then