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_CHECK_VERSION Displays version of LyX being built and
8 dnl sets variables "lyx_devel_version" and "lyx_prerelease"
9 AC_DEFUN(LYX_CHECK_VERSION,[
11 echo "configuring LyX version $VERSION"
12 if echo "$VERSION" | grep 'cvs' >/dev/null ; then
14 echo "WARNING: This is a development version. Expect bugs."
18 if echo "$VERSION" | grep 'pre' > /dev/null ; then
20 echo "WARNING: This is a prerelease. Be careful and backup your documents."
25 AC_SUBST(lyx_devel_version)
26 if test $lyx_devel_version = yes ; then
27 AC_DEFINE(DEVEL_VERSION, 1, Define if you are building a development version of LyX)
31 dnl Define the option to set a LyX version on installed executables and directories
34 AC_DEFUN(LYX_VERSION_SUFFIX,[
35 AC_MSG_CHECKING([for install target ... ])
36 AC_ARG_WITH(version-suffix,
37 [ --with-version-suffix[=<version>] install lyx files as lyx<version>],
38 [if test "x$withval" = "xyes";
41 ac_configure_args=`echo $ac_configure_args | sed "s,--with-version-suffix,--with-version-suffix=$withval,"`
44 program_suffix=$withval],
46 AC_MSG_RESULT([$lyxname])
49 dnl Usage: LYX_ERROR(message) Displays the warning "message" and sets the
50 dnl flag lyx_error to yes.
52 lyx_error_txt="$lyx_error_txt
58 dnl Usage: LYX_WARNING(message) Displays the warning "message" and sets the
59 dnl flag lyx_warning to yes.
60 AC_DEFUN(LYX_WARNING,[
61 lyx_warning_txt="$lyx_warning_txt
67 dnl Usage: LYX_LIB_ERROR(file,library) Displays an error message indication
68 dnl that 'file' cannot be found because 'lib' may be uncorrectly installed.
69 AC_DEFUN(LYX_LIB_ERROR,[
70 LYX_ERROR([Cannot find $1. Please check that the $2 library
71 is correctly installed on your system.])])
74 dnl Usage: LYX_CHECK_ERRORS Displays a warning message if a LYX_ERROR
75 dnl has occured previously.
76 AC_DEFUN(LYX_CHECK_ERRORS,[
77 if test x$lyx_error = xyes; then
79 **** The following problems have been detected by configure.
80 **** Please check the messages below before running 'make'.
81 **** (see the section 'Problems' in the INSTALL file)
84 deleting cache $cache_file
89 if test x$lyx_warning = xyes; then
91 === The following minor problems have been detected by configure.
92 === Please check the messages below before running 'make'.
93 === (see the section 'Problems' in the INSTALL file)
98 Configuration of LyX was successful.
99 Type 'make' to compile the program,
100 and then 'make install' to install it.
105 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
107 define(LYX_SEARCH_PROG,[dnl
108 for ac_prog in $2 ; do
109 # Extract the first word of "$ac_prog", so it can be a program name with args.
110 set dummy $ac_prog ; ac_word=$[2]
111 if test -z "[$]$1"; then
112 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
113 for ac_dir in $PATH; do
114 test -z "$ac_dir" && ac_dir=.
115 if test -f [$ac_dir/$ac_word]; then
123 if test -n "[$]$1"; then
129 test -n "[$]$1" && break
134 AC_DEFUN([LYX_PROG_CXX_WORKS],
136 cat >conftest.C <<EOF
138 // we require the mutable keyword
141 // we require namespace support
149 $CXX -c $CXXFLAGS $CPPFLAGS conftest.C >&5 || CXX=
150 rm -f conftest.C conftest.o conftest.obj || true
154 AC_DEFUN(LYX_PROG_CXX,
155 [AC_MSG_CHECKING([for a good enough C++ compiler])
156 LYX_SEARCH_PROG(CXX, $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS])
158 if test -z "$CXX" ; then
159 AC_ERROR([Unable to find a good enough C++ compiler])
165 ### We might want to get or shut warnings.
166 AC_ARG_ENABLE(warnings,
167 [ --enable-warnings tell the compiler to display more warnings],,
168 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
173 if test x$enable_warnings = xyes ; then
174 lyx_flags="$lyx_flags warnings"
175 AC_DEFINE(WITH_WARNINGS, 1,
176 [Define this if you want to see the warning directives put here and
177 there by the developpers to get attention])
180 ### set up optimization
181 AC_ARG_ENABLE(optimization,
182 [ --enable-optimization[=value] enable compiler optimisation],,
183 enable_optimization=yes;)
184 case $enable_optimization in
187 *) lyx_opt=${enable_optimization};;
190 # set the debug flags correctly.
191 if test x$GXX = xyes; then
192 dnl Useful for global version info
193 gxx_version=`${CXX} --version`
194 CXX_VERSION="($gxx_version)"
196 if test "$ac_test_CXXFLAGS" = set; then
197 CXXFLAGS="$ac_save_CXXFLAGS"
200 2.95.1) CXXFLAGS="-g $lyx_opt -fpermissive -fno-rtti -fno-exceptions";;
201 2.95.2) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
202 2.95.*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
203 2.96*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
204 3.0*) CXXFLAGS="-g $lyx_opt";;
205 *2.91.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
206 *) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
209 if test x$enable_warnings = xyes ; then
211 2.95.*) CXXFLAGS="$CXXFLAGS -W -Wall";;
212 2.96*) CXXFLAGS="$CXXFLAGS -W -Wall";;
213 *) CXXFLAGS="$CXXFLAGS -W -Wall";;
215 if test $lyx_devel_version = yes ; then
228 dnl NOT USED CURRENTLY*************************************
229 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
231 AC_DEFUN(LYX_CXX_RTTI,[
232 ### Check whether the compiler supports runtime type information
233 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
237 virtual int tag() { return 0; }
239 class derived1 : public rtti {
241 int tag() { return 1; }
243 class derived2 : public rtti {
245 int tag() { return 2; }
248 derived1 * foo1 = new derived1();
249 derived2 * foo2 = new derived2();
251 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
255 bar1 = dynamic_cast<derived1 *>(bar);
260 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
262 if test x$lyx_cv_rtti = xyes ; then
263 AC_DEFINE(HAVE_RTTI, 1,
264 [Define to 1 if your compiler supports runtime type information])
268 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
269 dnl understands the "explicit" directive.
270 AC_DEFUN(LYX_CXX_EXPLICIT,[
271 ### Check whether the compiler understands the keyword `explicit'
272 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
277 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
279 if test $lyx_cv_explicit = no ; then
280 AC_DEFINE(explicit,[ ],
281 [Define to nothing if your compiler does not understand the
282 'explicit' directive])
286 dnl NOT USED CURRENTLY*************************************
287 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
288 dnl has a working stl stack template
289 AC_DEFUN(LYX_CXX_STL_STACK,[
290 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
297 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
299 if test $lyx_cv_broken_stack = yes ; then
300 AC_DEFINE(BROKEN_STL_STACK, 1,
301 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
306 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
307 dnl count template, if not the old HP version is assumed.
308 AC_DEFUN(LYX_STD_COUNT,[
309 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
313 int countChar(char * b, char * e, char const c)
315 return count(b, e, c);
319 int i = countChar(a, a + 5, 'l');
320 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
322 if test $lyx_cv_std_count = yes ; then
323 AC_DEFINE(HAVE_STD_COUNT, 1,
324 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
328 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
329 dnl supports modern STL streams
330 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
331 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
335 std::streambuf * test = std::cerr.rdbuf();
337 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
339 if test $lyx_cv_modern_streams = yes ; then
340 AC_DEFINE(MODERN_STL_STREAMS, 1,
341 [Define if you have modern standard-compliant STL streams])
345 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
346 dnl has a std::string that is usable for LyX. LyX does not require this
347 dnl std::string to be standard.
348 AC_DEFUN(LYX_CXX_STL_STRING,[
349 AC_REQUIRE([AC_PROG_CXX])
350 AC_MSG_CHECKING(whether the included std::string should be used)
351 AC_ARG_WITH(included-string,
352 [ --with-included-string use LyX string class instead of STL string],
353 [lyx_cv_with_included_string=$withval
354 AC_MSG_RESULT([$with_included_string])],
355 [AC_CACHE_CHECK([],lyx_cv_with_included_string,
360 // LyX has reduced its requirements on the basic_string
361 // implementation so that the basic_string supplied
362 // with gcc is usable. In particular this means that
363 // lyx does not use std::string::clear and not the
364 // strncmp version of std::string::compare. This is mainly
365 // done so that LyX can use precompiled C++ libraries that
366 // already uses the systems basic_string, e.g. gtk--
367 string a("hello there");
371 //int t = a.compare(a.length() - 1, 1, s);
374 lyx_cv_with_included_string=no
376 lyx_cv_with_included_string=yes
380 if test x$lyx_cv_with_included_string = xyes ; then
381 AC_DEFINE(USE_INCLUDED_STRING, 1,
382 [Define to use the lyxstring class bundled with LyX.])
383 lyx_flags="$lyx_flags included-string"
385 AM_CONDITIONAL(USE_LYXSTRING, test x$lyx_cv_with_included_string = xyes)
386 dnl AC_MSG_RESULT([$with_included_string])
390 dnl Usage: LYX_CXX_GOOD_STD_STRING : checks whether the C++ compiler
391 dnl has a std::string that is close to the standard. So close that
392 dnl methods not found in "unstandard" std::strings are present here.
393 AC_DEFUN(LYX_CXX_GOOD_STD_STRING,[
394 AC_REQUIRE([AC_PROG_CXX])
395 AC_CACHE_CHECK([whether the systems std::string is really good],
396 [lyx_cv_std_string_good],
401 // From a std::string that is supposed to be close to the
402 // standard we require at least three things:
403 // - clear() and erase()
404 // - the strncmp of compare()
406 string a("hello there");
410 int t = a.compare(a.length() - 1, 1, s);
414 lyx_cv_std_string_good=yes
416 lyx_cv_std_string_good=no
420 if test x$lyx_cv_std_string_good = xyes ; then
421 AC_DEFINE(STD_STRING_IS_GOOD, 1,
422 [Define if the systems std::string is really good.])
427 dnl Usage: LYX_REGEX : checks if the header regex.h is available
428 dnl if it is not available the automake variable USE_REGEX will be
429 dnl defined and the regex.h and regex.c that we provide will be used.
431 AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
432 AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
435 dnl NOT USED CURRENTLY*************************************
437 AC_DEFUN(LYX_CXX_PARTIAL, [
438 AC_REQUIRE([AC_PROG_CXX])
439 AC_CACHE_CHECK([if C++ compiler supports partial specialization],
440 [lyx_cv_cxx_partial_specialization],
443 template<class T, class K>
447 template<class T> class k<void,T> { };
452 lyx_cv_cxx_partial_specialization=yes
454 lyx_cv_cxx_partial_specialization=no
457 if test x$lyx_cv_cxx_partial_specialization = xyes ; then
458 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
459 [Defined if your compiler supports partial specialization.])
464 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
465 dnl provides wrappers for C headers and use our alternate version otherwise.
466 AC_DEFUN(LYX_CXX_CHEADERS,[
467 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
477 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
478 if test $lyx_cv_cxx_cheaders = no ; then
479 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
482 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
483 dnl are already in the global namespace
484 AC_DEFUN(LYX_CXX_GLOBAL_CSTD,[
485 AC_CACHE_CHECK(whether C library functions are already in the global namespace,
486 lyx_cv_cxx_global_cstd,
492 ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
493 if test x$lyx_cv_cxx_global_cstd = xyes; then
494 AC_DEFINE(CXX_GLOBAL_CSTD,1,
495 [Define if your C++ compiler puts C library functions in the global namespace])
499 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
500 AC_DEFUN(LYX_PATH_XPM,[
501 ### Check for Xpm library
502 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
503 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
505 ### Check for Xpm headers
506 lyx_cv_xpm_h_location="<xpm.h>"
507 AC_CHECK_HEADER(X11/xpm.h,[
508 ac_cv_header_xpm_h=yes
509 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
510 AC_CHECK_HEADER(xpm.h,[],[
511 LYX_LIB_ERROR(xpm.h,Xpm)])])
512 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
514 ### Test for the header version
515 if test $ac_cv_header_xpm_h = yes; then
516 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
517 [ cat > conftest.$ac_ext <<EOF
518 #line __oline__ "configure"
519 #include "confdefs.h"
521 #include XPM_H_LOCATION
522 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
524 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
525 grep '^"%%%"' 2>/dev/null | \
526 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
527 case "$lyx_cv_xpmr" in
529 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
530 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
534 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
536 XPM_VERSION=${lyx_cv_xpmversion}
537 case "$lyx_cv_xpmr" in
539 [789]|[0-9][0-9]*) ;;
541 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
542 If you experience strange crashes with LyX, try to upgrade
543 to at least version 4.7 (aka 3.4g).
544 If you have installed a newer version of the library, check whether you
545 have an old xpm.h header file in your include path.]);;
550 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
551 AC_DEFUN(LYX_PATH_XFORMS,[
552 ### Check for xforms library
553 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
554 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
555 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
557 ### Check for xforms headers
558 lyx_cv_forms_h_location="<forms.h>"
559 AC_CHECK_HEADER(X11/forms.h,[
560 ac_cv_header_forms_h=yes
561 lyx_cv_forms_h_location="<X11/forms.h>"],[
562 AC_CHECK_HEADER(forms.h,[],[
563 LYX_LIB_ERROR(forms.h,forms)])])
564 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
565 if test $ac_cv_header_forms_h = yes; then
566 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
567 [ cat > conftest.$ac_ext <<EOF
568 #line __oline__ "configure"
569 #include "confdefs.h"
571 #include FORMS_H_LOCATION
572 #if ! defined(FL_INCLUDE_VERSION)
575 "%%%"FL_VERSION.FL_REVISION.FL_FIXLEVEL"%%%"
578 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
579 grep '^"%%%"' 2>/dev/null | \
580 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
582 XFORMS_VERSION=$lyx_cv_xfversion
583 case "$lyx_cv_xfversion" in
584 "(unknown)"|0.8[1-7]*)
586 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
587 This version of LyX works best with versions 0.88 (recommended) and later.) ;;
589 0.89[01234]) LYX_WARNING(dnl
590 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
591 it is an unproven version and might still have some bugs. You should
592 probably use version 0.89.6 (or 0.88) instead) ;;
595 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
596 since it is newer than 0.88. You might have slight problems with it.);;
601 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
603 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
604 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
605 os=`uname -s | tr '[A-Z]' '[a-z]'`
607 test "$os" = hp-ux && ac_cv_hpux=yes])
608 if test "$ac_cv_hpux" = yes; then
609 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
613 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
616 [#The headers are not correct under SunOS4
617 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
619 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
620 changequote([, ]) dnl
622 test "$os" = SunOS4 && ac_cv_sunos4=yes])
623 if test "$ac_cv_sunos4" = yes; then
624 test "x$GXX" = xyes && lyx_broken_headers=yes
628 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
631 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
633 if test `uname -s` != "SCO_SV"; then
634 lyx_machine_rel=`uname -m`:`uname -r`
635 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
637 if test -f /usr/options/cb.name; then
639 elif /bin/uname -X 2>/dev/null >/dev/null ; then
644 if test "$ac_cv_sco" = yes; then
645 test "x$GXX" = xyes && lyx_broken_headers=yes
648 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
649 dnl Checks whether putenv() takes 'char const *' or 'char *' as
650 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
651 dnl while everybody else uses the former...
652 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
653 [AC_MSG_CHECKING([type of argument for putenv()])
654 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
656 [#include <cstdlib>],
657 [char const * foo = "bar";
659 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
660 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
661 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
662 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
665 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
666 dnl [default-yes-value])
667 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
668 dnl resulting directory name in 'dir-var-name'.
669 AC_DEFUN(LYX_WITH_DIR,[
670 AC_ARG_WITH($1,[ --with-$1 specify $2])
671 AC_MSG_CHECKING([for $2])
672 if test -z "$with_$3"; then
673 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
675 test "x$with_$3" = xyes && with_$3=$5
678 AC_MSG_RESULT($lyx_cv_$3)])
681 dnl Usage: LYX_LOOP_DIR(value,action)
682 dnl Executes action for values of variable `dir' in `values'. `values' can
683 dnl use ":" as a separator.
684 AC_DEFUN(LYX_LOOP_DIR,[
685 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
686 for dir in `eval "echo $1"`; do
687 if test ! "$dir" = NONE; then
688 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
696 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
698 AC_DEFUN(LYX_ADD_LIB_DIR,[
700 if test "`(uname) 2>/dev/null`" = SunOS &&
701 uname -r | grep '^5' >/dev/null; then
702 if test $ac_cv_prog_gxx = yes ; then
703 $1="${$1} -Wl[,]-R$2"
710 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
712 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
714 ### Check which libsigc++ we're using and make sure any external one works
715 ### Check for libsigc++ library
716 AC_DEFUN(LYX_WITH_SIGC,
717 [AC_MSG_CHECKING(whether the included libsigc++ should be used)
718 AC_ARG_WITH([included-libsigc],
719 [ --without-included-libsigc
720 Use the libsigc++ installed on the system],
721 [lyx_use_included_libsigc=$withval],
722 [lyx_use_included_libsigc=yes])
723 AC_MSG_RESULT([$lyx_use_included_libsigc])
724 if test x$lyx_use_included_libsigc = xno; then
725 ### Check for libsigc++
726 ## can't use AC_SUBST right here!
731 [Cannot find libsigc++ library or headers at least as recent as 0.8.7.
732 Check your installation. Have you installed the development package?])
735 ### Use the included libsigc++
736 ### sigc-config hasn't been created yet so we can't just do the same as above
737 ### unless of course someone gets keen and merges the sigc++ configure.in
738 ### with this one. We don't really gain much by doing that though except
739 ### a considerably smaller dist and more difficult maintenance.
740 ### It'd also mean we'd have the equivalent of config/gettext.m4
741 lyx_flags="$lyx_flags included-libsigc"
742 SIGC_LIBS="\`\${top_builddir}/sigc++/sigc-config --libs-names | sed -e 's/-lsigc//'\`"
743 # Libsigc++ always installs into a subdirectory called sigc++. Therefore we
744 # have to always use #include <sigc++/signal_system.h> in our code.
745 # Remember if you decide to do anything to the sigc++ code to do your mods on
746 # the makeLyXsigc.sh script in development/tools using a current cvs checkout
747 # of libsigc++. A tarball distribution doesn't have everything in it that we
749 # We need both these -I entries to build when builddir != srcdir
750 if test "x$src_dir" = "x." ; then
751 SIGC_CFLAGS="-I\${top_srcdir}"
753 SIGC_CFLAGS="-I\${top_builddir} -I\${top_srcdir}"
755 INCLUDED_SIGC="\${top_builddir}/sigc++/libsigc.la"
756 ## can't substitute these here like this otherwise all remaining tests fail
757 ## instead we SUBST directly into the Makefiles
758 ##LIBS="$LIBS \$SIGC_LIBS"
759 ##CPPFLAGS="$CPPFLAGS \$SIGC_CFLAGS"
761 AC_SUBST(SIGC_CFLAGS)
763 AC_SUBST(INCLUDED_SIGC)
766 ### Check for a headers existence and location iff it exists
767 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
768 ## It almost works. I've tried a few variations but they give errors
769 ## of one sort or other: bad substitution or file not found etc. The
770 ## actual header _is_ found though and the cache variable is set however
771 ## the reported setting (on screen) is equal to $ac_safe for some unknown
773 ## Additionally, autoheader can't figure out what to use as the name in
774 ## the config.h.in file so we need to write our own entries there -- one for
775 ## each header in the form PATH_HEADER_NAME_H
777 AC_DEFUN(LYX_PATH_HEADER,
778 [ AC_CHECK_HEADER($1,[
779 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
780 ### the only remaining problem is getting the second parameter to this
781 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
782 ### of $ac_safe being printed.
783 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
784 [ cat > conftest.$ac_ext <<EOF
785 #line __oline__ "configure"
786 #include "confdefs.h"
790 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
791 grep $1 2>/dev/null | \
792 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
793 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
795 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path)])
797 ### end of LYX_PATH_HEADER
799 ### Check for stl_string_fwd.h existence and location if it exists
800 AC_DEFUN(LYX_STL_STRING_FWD,
801 [ AC_CHECK_HEADER(stl_string_fwd.h,[
802 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
803 [ cat > conftest.$ac_ext <<EOF
804 #line __oline__ "configure"
805 #include "confdefs.h"
807 #include <stl_string_fwd.h>
809 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
810 grep 'stl_string_fwd.h' 2>/dev/null | \
811 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
813 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
814 [define this to the location of stl_string_fwd.h to be used with #include,
815 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
816 supplied version of the header.
817 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
821 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
822 dnl if the cache file is inconsistent with the current host,
823 dnl target and build system types, execute CMD or print a default
825 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
826 AC_REQUIRE([AC_CANONICAL_SYSTEM])
827 AC_MSG_CHECKING([config.cache system type])
828 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
829 test x"$ac_cv_host_system_type" != x"$host"; } ||
830 { test x"${ac_cv_build_system_type+set}" = x"set" &&
831 test x"$ac_cv_build_system_type" != x"$build"; } ||
832 { test x"${ac_cv_target_system_type+set}" = x"set" &&
833 test x"$ac_cv_target_system_type" != x"$target"; }; then
834 AC_MSG_RESULT([different])
836 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
838 AC_MSG_RESULT([same])
840 ac_cv_host_system_type="$host"
841 ac_cv_build_system_type="$build"
842 ac_cv_target_system_type="$target"
845 dnl We use this until autoconf fixes its version.
846 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
847 [AC_MSG_CHECKING([types of arguments for select()])
848 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
849 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
850 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
851 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
852 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
854 [#ifdef HAVE_SYS_TYPES_H
855 #include <sys/types.h>
857 #ifdef HAVE_SYS_TIME_H
858 #include <sys/time.h>
860 #ifdef HAVE_SYS_SELECT_H
861 #include <sys/select.h>
863 #ifdef HAVE_SYS_SOCKET_H
864 #include <sys/socket.h>
866 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
867 [ac_not_found=no ; break 3],ac_not_found=yes)
874 if test "$ac_not_found" = yes; then
875 ac_cv_func_select_arg1=int
876 ac_cv_func_select_arg234='int *'
877 ac_cv_func_select_arg5='struct timeval *'
879 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
880 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1,
881 [Define to the type of arg1 for select().])
882 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234),
883 [Define to the type of args 2, 3 and 4 for select().])
884 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5),
885 [Define to the type of arg5 for select().])
888 ### Check which frontend we want to use. The default is XForms
890 AC_DEFUN(LYX_USE_FRONTEND,
891 [AC_MSG_CHECKING([what frontend should be used as main GUI])
892 AC_ARG_WITH(frontend,
893 [ --with-frontend=THIS Use THIS frontend as main GUI:
894 Possible values: xforms, qt2, gnome],
895 [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"])
896 AC_MSG_RESULT($lyx_use_frontend)
898 AC_SUBST(FRONTEND_GUILIB)
899 AC_SUBST(FRONTEND_LDFLAGS)
900 AC_SUBST(FRONTEND_INCLUDES)
901 AC_SUBST(FRONTEND_LIBS)
905 dnl Check things are declared in headers to avoid errors or warnings.
906 dnl Called like LYX_CHECK_DECL(function, headerfile)
907 dnl Defines HAVE_DECL_{FUNCTION}
908 AC_DEFUN(LYX_CHECK_DECL,
909 [AC_MSG_CHECKING(if $1 is declared by header $2)
910 tr_func=`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
912 tr_hdr=`echo $2 | tr . _`
913 AC_CACHE_VAL([lyx_cv_declare_${tr_hdr}_$1],
914 [AC_EGREP_HEADER($1, $2, [eval "lyx_cv_declare_${tr_hdr}_$1=yes"], [eval "lyx_cv_declare_${tr_hdr}_$1=no"])])
915 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
916 AC_DEFINE_UNQUOTED(HAVE_DECL_${tr_func})
922 dnl This is the multiple headers version of the LYX_CHECK_DECL macro above.
923 dnl Called like LYX_CHECK_DECL_HDRS(function, file1 file2 file3)
924 AC_DEFUN(LYX_CHECK_DECL_HDRS,
927 tr_hdr=`echo $I | tr . _`
928 if test "${got}" = "no"; then
929 LYX_CHECK_DECL($1, $I)
931 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
937 ## ------------------------------------------------------------------------
938 ## Find a file (or one of more files in a list of dirs)
939 ## ------------------------------------------------------------------------
941 AC_DEFUN(AC_FIND_FILE,
948 if test -r "$i/$j"; then
956 dnl just a wrapper to clean up configure.in
957 AC_DEFUN(LYX_PROG_LIBTOOL,
959 AC_REQUIRE([AC_ENABLE_SHARED])
960 AC_REQUIRE([AC_ENABLE_STATIC])
961 dnl libtool is only for C, so I must force him
962 dnl to find the correct flags for C++
964 ac_save_cflags="$CFLAGS"
967 AM_PROG_LIBTOOL dnl for libraries
969 CFLAGS="$ac_save_cflags"