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)
35 dnl Define the option to set a LyX version on installed executables and directories
38 AC_DEFUN(LYX_VERSION_SUFFIX,[
39 AC_MSG_CHECKING([for install target ... ])
40 AC_ARG_WITH(version-suffix,
41 [ --with-version-suffix[=<version>] install lyx files as lyx<version>],
42 [if test "x$withval" = "xyes";
45 ac_configure_args=`echo $ac_configure_args | sed "s,--with-version-suffix,--with-version-suffix=$withval,"`
48 program_suffix=$withval],
50 AC_MSG_RESULT([$lyxname])
53 dnl Usage: LYX_ERROR(message) Displays the warning "message" and sets the
54 dnl flag lyx_error to yes.
56 lyx_error_txt="$lyx_error_txt
62 dnl Usage: LYX_WARNING(message) Displays the warning "message" and sets the
63 dnl flag lyx_warning to yes.
64 AC_DEFUN(LYX_WARNING,[
65 lyx_warning_txt="$lyx_warning_txt
71 dnl Usage: LYX_LIB_ERROR(file,library) Displays an error message indication
72 dnl that 'file' cannot be found because 'lib' may be uncorrectly installed.
73 AC_DEFUN(LYX_LIB_ERROR,[
74 LYX_ERROR([Cannot find $1. Please check that the $2 library
75 is correctly installed on your system.])])
78 dnl Usage: LYX_CHECK_ERRORS Displays a warning message if a LYX_ERROR
79 dnl has occured previously.
80 AC_DEFUN(LYX_CHECK_ERRORS,[
81 if test x$lyx_error = xyes; then
83 **** The following problems have been detected by configure.
84 **** Please check the messages below before running 'make'.
85 **** (see the section 'Problems' in the INSTALL file)
88 deleting cache $cache_file
93 if test x$lyx_warning = xyes; then
95 === The following minor problems have been detected by configure.
96 === Please check the messages below before running 'make'.
97 === (see the section 'Problems' in the INSTALL file)
102 Configuration of LyX was successful.
103 Type 'make' to compile the program,
104 and then 'make install' to install it.
109 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
111 define(LYX_SEARCH_PROG,[dnl
112 for ac_prog in $2 ; do
113 # Extract the first word of "$ac_prog", so it can be a program name with args.
114 set dummy $ac_prog ; ac_word=$[2]
115 if test -z "[$]$1"; then
116 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
117 for ac_dir in $PATH; do
118 test -z "$ac_dir" && ac_dir=.
119 if test -f [$ac_dir/$ac_word]; then
127 if test -n "[$]$1"; then
133 test -n "[$]$1" && break
138 AC_DEFUN(LYX_PROG_CXX_WORKS,
143 // we require the mutable keyword
146 // we require namespace support
153 ], ac_cv_prog_cxx_works, ac_cv_prog_cxx_cross)
155 if test $ac_cv_prog_cxx_works = no; then
158 cross_compiling=$ac_cv_prog_cxx_cross
162 AC_DEFUN(LYX_PROG_CXX,
163 [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
164 AC_MSG_CHECKING([for a working C++ compiler])
165 LYX_SEARCH_PROG(CXX, $CCC g++ gcc c++ CC cxx xlC cc++, LYX_PROG_CXX_WORKS)
167 if test -z "$CXX" ; then
168 AC_ERROR([Unable to find a working C++ compiler])
174 AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])
175 AC_MSG_RESULT($cross_compiling)
179 dnl We might want to get or shut warnings.
180 AC_ARG_WITH(warnings,
181 [ --with-warnings tell the compiler to display more warnings],,
182 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
187 if test x$with_warnings = xyes ; then
188 lyx_flags="$lyx_flags warnings"
189 AC_DEFINE(WITH_WARNINGS, 1,
190 [Define this if you want to see the warning directives put here and
191 there by the developpers to get attention])
194 # optimize less for development versions
195 if test $lyx_devel_version = yes -o $lyx_prerelease = yes ; then
201 # set the debug flags correctly.
202 if test $ac_cv_prog_gxx = yes; then
204 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
205 dnl plays around with CXXFLAGS (such as to build both debugging and
206 dnl normal versions of a library), tasteless as that idea is.
207 ac_test_CXXFLAGS="${CXXFLAGS+set}"
208 ac_save_CXXFLAGS="$CXXFLAGS"
210 dnl Check the version of g++
211 gxx_version=`${CXX} --version`
214 if test "$ac_test_CXXFLAGS" = set; then
215 CXXFLAGS="$ac_save_CXXFLAGS"
216 elif test $ac_cv_prog_cxx_g = yes; then
218 2.95.1) CXXFLAGS="-g $lyx_opt -fpermissive -fno-rtti -fno-exceptions";;
219 2.95.2) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
220 2.95.*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
221 2.96*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
222 3.0*) CXXFLAGS="-g $lyx_opt";;
223 *2.91.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
224 *) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
229 if test x$with_warnings = xyes ; then
231 2.95.*) CXXFLAGS="$CXXFLAGS -W -Wall";;
232 2.96*) CXXFLAGS="$CXXFLAGS -W -Wall";;
233 2.97*) CXXFLAGS="$CXXFLAGS -W -Wall";;
234 *) CXXFLAGS="$CXXFLAGS -W -Wall";;
236 if test $lyx_devel_version = yes ; then
240 2.97*) CXXFLAGS="$CXXFLAGS -Wconversion -Winline";;
248 test "${CXXFLAGS+set}" = set || CXXFLAGS=""
253 dnl NOT USED CURRENTLY*************************************
254 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
256 AC_DEFUN(LYX_CXX_RTTI,[
257 ### Check whether the compiler supports runtime type information
258 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
262 virtual int tag() { return 0; }
264 class derived1 : public rtti {
266 int tag() { return 1; }
268 class derived2 : public rtti {
270 int tag() { return 2; }
273 derived1 * foo1 = new derived1();
274 derived2 * foo2 = new derived2();
276 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
280 bar1 = dynamic_cast<derived1 *>(bar);
285 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
287 if test x$lyx_cv_rtti = xyes ; then
288 AC_DEFINE(HAVE_RTTI, 1,
289 [Define to 1 if your compiler supports runtime type information])
293 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
294 dnl understands the "explicit" directive.
295 AC_DEFUN(LYX_CXX_EXPLICIT,[
296 ### Check whether the compiler understands the keyword `explicit'
297 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
302 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
304 if test $lyx_cv_explicit = no ; then
305 AC_DEFINE(explicit,[ ],
306 [Define to nothing if your compiler does not understand the
307 'explicit' directive])
311 dnl NOT USED CURRENTLY*************************************
312 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
313 dnl has a working stl stack template
314 AC_DEFUN(LYX_CXX_STL_STACK,[
315 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
322 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
324 if test $lyx_cv_broken_stack = yes ; then
325 AC_DEFINE(BROKEN_STL_STACK, 1,
326 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
331 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
332 dnl count template, if not the old HP version is assumed.
333 AC_DEFUN(LYX_STD_COUNT,[
334 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
338 int countChar(char * b, char * e, char const c)
340 return count(b, e, c);
344 int i = countChar(a, a + 5, 'l');
345 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
347 if test $lyx_cv_std_count = yes ; then
348 AC_DEFINE(HAVE_STD_COUNT, 1,
349 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
353 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
354 dnl supports modern STL streams
355 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
356 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
360 std::streambuf * test = std::cerr.rdbuf();
362 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
364 if test $lyx_cv_modern_streams = yes ; then
365 AC_DEFINE(MODERN_STL_STREAMS, 1,
366 [Define if you have modern standard-compliant STL streams])
370 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
371 dnl has a std::string that is usable for LyX. LyX does not require this
372 dnl std::string to be standard.
373 AC_DEFUN(LYX_CXX_STL_STRING,[
374 AC_REQUIRE([LYX_PROG_CXX])
375 AC_MSG_CHECKING(whether the included std::string should be used)
376 AC_ARG_WITH(included-string,
377 [ --with-included-string use LyX string class instead of STL string],
378 [lyx_cv_with_included_string=$withval
379 AC_MSG_RESULT([$with_included_string])],
380 [AC_CACHE_CHECK([],lyx_cv_with_included_string,
385 // LyX has reduced its requirements on the basic_string
386 // implementation so that the basic_string supplied
387 // with gcc is usable. In particular this means that
388 // lyx does not use std::string::clear and not the
389 // strncmp version of std::string::compare. This is mainly
390 // done so that LyX can use precompiled C++ libraries that
391 // already uses the systems basic_string, e.g. gtk--
392 string a("hello there");
396 //int t = a.compare(a.length() - 1, 1, s);
399 lyx_cv_with_included_string=no
401 lyx_cv_with_included_string=yes
405 if test x$lyx_cv_with_included_string = xyes ; then
406 AC_DEFINE(USE_INCLUDED_STRING, 1,
407 [Define to use the lyxstring class bundled with LyX.])
408 lyx_flags="$lyx_flags included-string"
410 AM_CONDITIONAL(USE_LYXSTRING, test x$lyx_cv_with_included_string = xyes)
411 dnl AC_MSG_RESULT([$with_included_string])
415 dnl Usage: LYX_CXX_GOOD_STD_STRING : checks whether the C++ compiler
416 dnl has a std::string that is close to the standard. So close that
417 dnl methods not found in "unstandard" std::strings are present here.
418 AC_DEFUN(LYX_CXX_GOOD_STD_STRING,[
419 AC_REQUIRE([LYX_PROG_CXX])
420 AC_CACHE_CHECK([whether the systems std::string is really good],
421 [lyx_cv_std_string_good],
426 // From a std::string that is supposed to be close to the
427 // standard we require at least three things:
428 // - clear() and erase()
429 // - the strncmp of compare()
431 string a("hello there");
435 int t = a.compare(a.length() - 1, 1, s);
439 lyx_cv_std_string_good=yes
441 lyx_cv_std_string_good=no
445 if test x$lyx_cv_std_string_good = xyes ; then
446 AC_DEFINE(STD_STRING_IS_GOOD, 1,
447 [Define if the systems std::string is really good.])
452 dnl Usage: LYX_REGEX : checks if the header regex.h is available
453 dnl if it is not available the automake variable USE_REGEX will be
454 dnl defined and the regex.h and regex.c that we provide will be used.
456 AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
457 AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
460 dnl NOT USED CURRENTLY*************************************
462 AC_DEFUN(LYX_CXX_PARTIAL, [
463 AC_REQUIRE([LYX_PROG_CXX])
464 AC_CACHE_CHECK([if C++ compiler supports partial specialization],
465 [lyx_cv_cxx_partial_specialization],
468 template<class T, class K>
472 template<class T> class k<void,T> { };
477 lyx_cv_cxx_partial_specialization=yes
479 lyx_cv_cxx_partial_specialization=no
482 if test x$lyx_cv_cxx_partial_specialization = xyes ; then
483 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
484 [Defined if your compiler supports partial specialization.])
489 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
490 dnl provides wrappers for C headers and use our alternate version otherwise.
491 AC_DEFUN(LYX_CXX_CHEADERS,[
492 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
502 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
503 if test $lyx_cv_cxx_cheaders = no ; then
504 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
507 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
508 dnl are already in the global namespace
509 AC_DEFUN(LYX_CXX_GLOBAL_CSTD,[
510 AC_CACHE_CHECK(whether C library functions are already in the global namespace,
511 lyx_cv_cxx_global_cstd,
517 ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
518 if test x$lyx_cv_cxx_global_cstd = xyes; then
519 AC_DEFINE(CXX_GLOBAL_CSTD,1,
520 [Define if your C++ compiler puts C library functions in the global namespace])
524 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
525 AC_DEFUN(LYX_PATH_XPM,[
526 ### Check for Xpm library
527 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
528 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
530 ### Check for Xpm headers
531 lyx_cv_xpm_h_location="<xpm.h>"
532 AC_CHECK_HEADER(X11/xpm.h,[
533 ac_cv_header_xpm_h=yes
534 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
535 AC_CHECK_HEADER(xpm.h,[],[
536 LYX_LIB_ERROR(xpm.h,Xpm)])])
537 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
539 ### Test for the header version
540 if test $ac_cv_header_xpm_h = yes; then
541 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
542 [ cat > conftest.$ac_ext <<EOF
543 #line __oline__ "configure"
544 #include "confdefs.h"
546 #include XPM_H_LOCATION
547 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
549 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
550 grep '^"%%%"' 2>/dev/null | \
551 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
552 case "$lyx_cv_xpmr" in
554 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
555 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
559 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
561 case "$lyx_cv_xpmr" in
563 [789]|[0-9][0-9]*) ;;
565 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
566 If you experience strange crashes with LyX, try to upgrade
567 to at least version 4.7 (aka 3.4g).
568 If you have installed a newer version of the library, check whether you
569 have an old xpm.h header file in your include path.]);;
574 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
575 AC_DEFUN(LYX_PATH_XFORMS,[
576 ### Check for xforms library
577 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
578 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
579 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
581 ### Check for xforms headers
582 lyx_cv_forms_h_location="<forms.h>"
583 AC_CHECK_HEADER(X11/forms.h,[
584 ac_cv_header_forms_h=yes
585 lyx_cv_forms_h_location="<X11/forms.h>"],[
586 AC_CHECK_HEADER(forms.h,[],[
587 LYX_LIB_ERROR(forms.h,forms)])])
588 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
589 if test $ac_cv_header_forms_h = yes; then
590 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
591 [ cat > conftest.$ac_ext <<EOF
592 #line __oline__ "configure"
593 #include "confdefs.h"
595 #include FORMS_H_LOCATION
596 #if ! defined(FL_INCLUDE_VERSION)
599 "%%%"FL_VERSION.FL_REVISION.FL_FIXLEVEL"%%%"
602 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
603 grep '^"%%%"' 2>/dev/null | \
604 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
606 case "$lyx_cv_xfversion" in
607 "(unknown)"|0.8[1-7]*)
609 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
610 This version of LyX works best with versions 0.88 (recommended) and later.) ;;
612 0.89[012345]) LYX_WARNING(dnl
613 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
614 it is an unproven version and might still have some bugs. You should
615 probably use version 0.89.6 (or 0.88) instead) ;;
618 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
619 since it is newer than 0.88. You might have slight problems with it.);;
624 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
626 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
627 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
628 os=`uname -s | tr '[A-Z]' '[a-z]'`
630 test "$os" = hp-ux && ac_cv_hpux=yes])
631 if test "$ac_cv_hpux" = yes; then
632 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
636 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
639 [#The headers are not correct under SunOS4
640 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
642 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
643 changequote([, ]) dnl
645 test "$os" = SunOS4 && ac_cv_sunos4=yes])
646 if test "$ac_cv_sunos4" = yes; then
647 test "x$GXX" = xyes && lyx_broken_headers=yes
651 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
654 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
656 if test `uname -s` != "SCO_SV"; then
657 lyx_machine_rel=`uname -m`:`uname -r`
658 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
660 if test -f /usr/options/cb.name; then
662 elif /bin/uname -X 2>/dev/null >/dev/null ; then
667 if test "$ac_cv_sco" = yes; then
668 test "x$GXX" = xyes && lyx_broken_headers=yes
671 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
672 dnl Checks whether putenv() takes 'char const *' or 'char *' as
673 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
674 dnl while everybody else uses the former...
675 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
676 [AC_MSG_CHECKING([type of argument for putenv()])
677 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
679 [#include <cstdlib>],
680 [char const * foo = "bar";
682 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
683 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
684 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
685 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
688 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
689 dnl [default-yes-value])
690 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
691 dnl resulting directory name in 'dir-var-name'.
692 AC_DEFUN(LYX_WITH_DIR,[
693 AC_ARG_WITH($1,[ --with-$1 specify $2])
694 AC_MSG_CHECKING([for $2])
695 if test -z "$with_$3"; then
696 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
698 test "x$with_$3" = xyes && with_$3=$5
701 AC_MSG_RESULT($lyx_cv_$3)])
704 dnl Usage: LYX_LOOP_DIR(value,action)
705 dnl Executes action for values of variable `dir' in `values'. `values' can
706 dnl use ":" as a separator.
707 AC_DEFUN(LYX_LOOP_DIR,[
708 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
709 for dir in `eval "echo $1"`; do
710 if test ! "$dir" = NONE; then
711 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
719 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
721 AC_DEFUN(LYX_ADD_LIB_DIR,[
723 if test "`(uname) 2>/dev/null`" = SunOS &&
724 uname -r | grep '^5' >/dev/null; then
725 if test $ac_cv_prog_gxx = yes ; then
726 $1="${$1} -Wl[,]-R$2"
733 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
735 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
737 ### Check which libsigc++ we're using and make sure any external one works
738 ### Check for libsigc++ library
739 AC_DEFUN(LYX_WITH_SIGC,
740 [AC_MSG_CHECKING(whether the included libsigc++ should be used)
741 AC_ARG_WITH([included-libsigc],
742 [ --without-included-libsigc
743 Use the libsigc++ installed on the system],
744 [lyx_use_included_libsigc=$withval],
745 [lyx_use_included_libsigc=yes])
746 AC_MSG_RESULT([$lyx_use_included_libsigc])
747 if test x$lyx_use_included_libsigc = xno; then
748 ### Check for libsigc++
749 ## can't use AC_SUBST right here!
754 [Cannot find libsigc++ library or headers at least as recent as 0.8.7.
755 Check your installation. Have you installed the development package?])
758 ### Use the included libsigc++
759 ### sigc-config hasn't been created yet so we can't just do the same as above
760 ### unless of course someone gets keen and merges the sigc++ configure.in
761 ### with this one. We don't really gain much by doing that though except
762 ### a considerably smaller dist and more difficult maintenance.
763 ### It'd also mean we'd have the equivalent of config/gettext.m4
764 lyx_flags="$lyx_flags included-libsigc"
765 SIGC_LIBS="\`\${top_builddir}/sigc++/sigc-config --libs-names | sed -e 's/-lsigc//'\`"
766 # Libsigc++ always installs into a subdirectory called sigc++. Therefore we
767 # have to always use #include <sigc++/signal_system.h> in our code.
768 # Remember if you decide to do anything to the sigc++ code to do your mods on
769 # the makeLyXsigc.sh script in development/tools using a current cvs checkout
770 # of libsigc++. A tarball distribution doesn't have everything in it that we
772 # We need both these -I entries to build when builddir != srcdir
773 if test "x$src_dir" = "x." ; then
774 SIGC_CFLAGS="-I\${top_srcdir}"
776 SIGC_CFLAGS="-I\${top_builddir} -I\${top_srcdir}"
778 INCLUDED_SIGC="\${top_builddir}/sigc++/libsigc.la"
779 ## can't substitute these here like this otherwise all remaining tests fail
780 ## instead we SUBST directly into the Makefiles
781 ##LIBS="$LIBS \$SIGC_LIBS"
782 ##CPPFLAGS="$CPPFLAGS \$SIGC_CFLAGS"
784 AC_SUBST(SIGC_CFLAGS)
786 AC_SUBST(INCLUDED_SIGC)
789 ### Check for a headers existence and location iff it exists
790 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
791 ## It almost works. I've tried a few variations but they give errors
792 ## of one sort or other: bad substitution or file not found etc. The
793 ## actual header _is_ found though and the cache variable is set however
794 ## the reported setting (on screen) is equal to $ac_safe for some unknown
796 ## Additionally, autoheader can't figure out what to use as the name in
797 ## the config.h.in file so we need to write our own entries there -- one for
798 ## each header in the form PATH_HEADER_NAME_H
800 AC_DEFUN(LYX_PATH_HEADER,
801 [ AC_CHECK_HEADER($1,[
802 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
803 ### the only remaining problem is getting the second parameter to this
804 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
805 ### of $ac_safe being printed.
806 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
807 [ cat > conftest.$ac_ext <<EOF
808 #line __oline__ "configure"
809 #include "confdefs.h"
813 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
814 grep $1 2>/dev/null | \
815 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
816 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
818 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path)])
820 ### end of LYX_PATH_HEADER
822 ### Check for stl_string_fwd.h existence and location if it exists
823 AC_DEFUN(LYX_STL_STRING_FWD,
824 [ AC_CHECK_HEADER(stl_string_fwd.h,[
825 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
826 [ cat > conftest.$ac_ext <<EOF
827 #line __oline__ "configure"
828 #include "confdefs.h"
830 #include <stl_string_fwd.h>
832 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
833 grep 'stl_string_fwd.h' 2>/dev/null | \
834 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
836 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
837 [define this to the location of stl_string_fwd.h to be used with #include,
838 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
839 supplied version of the header.
840 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
844 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
845 dnl if the cache file is inconsistent with the current host,
846 dnl target and build system types, execute CMD or print a default
848 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
849 AC_REQUIRE([AC_CANONICAL_SYSTEM])
850 AC_MSG_CHECKING([config.cache system type])
851 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
852 test x"$ac_cv_host_system_type" != x"$host"; } ||
853 { test x"${ac_cv_build_system_type+set}" = x"set" &&
854 test x"$ac_cv_build_system_type" != x"$build"; } ||
855 { test x"${ac_cv_target_system_type+set}" = x"set" &&
856 test x"$ac_cv_target_system_type" != x"$target"; }; then
857 AC_MSG_RESULT([different])
859 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
861 AC_MSG_RESULT([same])
863 ac_cv_host_system_type="$host"
864 ac_cv_build_system_type="$build"
865 ac_cv_target_system_type="$target"
868 dnl We use this until autoconf fixes its version.
869 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
870 [AC_MSG_CHECKING([types of arguments for select()])
871 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
872 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
873 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
874 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
875 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
877 [#ifdef HAVE_SYS_TYPES_H
878 #include <sys/types.h>
880 #ifdef HAVE_SYS_TIME_H
881 #include <sys/time.h>
883 #ifdef HAVE_SYS_SELECT_H
884 #include <sys/select.h>
886 #ifdef HAVE_SYS_SOCKET_H
887 #include <sys/socket.h>
889 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
890 [ac_not_found=no ; break 3],ac_not_found=yes)
897 if test "$ac_not_found" = yes; then
898 ac_cv_func_select_arg1=int
899 ac_cv_func_select_arg234='int *'
900 ac_cv_func_select_arg5='struct timeval *'
902 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
903 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1)
904 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234))
905 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5))
908 ### Check which frontend we want to use. The default is XForms
910 AC_DEFUN(LYX_USE_FRONTEND,
911 [AC_MSG_CHECKING(what frontend should be used as main GUI)
912 AC_ARG_WITH(frontend,
913 [ --with-frontend[=value] Use THIS frontend as main GUI:
914 Possible values: xforms,kde,gnome],
915 [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"])
916 AC_MSG_RESULT($lyx_use_frontend)
917 lyx_flags="$lyx_flags frontend-$lyx_use_frontend"
919 AC_SUBST(FRONTEND_GUILIB)
920 AC_SUBST(FRONTEND_LDFLAGS)
921 AC_SUBST(FRONTEND_INCLUDES)
922 AC_SUBST(FRONTEND_LIBS)
926 dnl Check things are declared in headers to avoid errors or warnings.
927 dnl Called like LYX_CHECK_DECL(function, headerfile)
928 dnl Defines HAVE_DECL_{FUNCTION}
929 AC_DEFUN(LYX_CHECK_DECL,
930 [AC_MSG_CHECKING(if $1 is declared by header $2)
931 tr_func=`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
933 tr_hdr=`echo $2 | tr . _`
934 AC_CACHE_VAL([lyx_cv_declare_${tr_hdr}_$1],
935 [AC_EGREP_HEADER($1, $2, [eval "lyx_cv_declare_${tr_hdr}_$1=yes"], [eval "lyx_cv_declare_${tr_hdr}_$1=no"])])
936 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
937 AC_DEFINE_UNQUOTED(HAVE_DECL_${tr_func})
943 dnl This is the multiple headers version of the LYX_CHECK_DECL macro above.
944 dnl Called like LYX_CHECK_DECL_HDRS(function, file1 file2 file3)
945 AC_DEFUN(LYX_CHECK_DECL_HDRS,
948 tr_hdr=`echo $I | tr . _`
949 if test "${got}" = "no"; then
950 LYX_CHECK_DECL($1, $I)
952 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
958 ## ------------------------------------------------------------------------
959 ## Find a file (or one of more files in a list of dirs)
960 ## ------------------------------------------------------------------------
962 AC_DEFUN(AC_FIND_FILE,
969 if test -r "$i/$j"; then
977 dnl just a wrapper to clean up configure.in
978 AC_DEFUN(LYX_PROG_LIBTOOL,
980 AC_REQUIRE([AC_ENABLE_SHARED])
981 AC_REQUIRE([AC_ENABLE_STATIC])
982 dnl libtool is only for C, so I must force him
983 dnl to find the correct flags for C++
985 ac_save_cflags="$CFLAGS"
988 AM_PROG_LIBTOOL dnl for libraries
990 CFLAGS="$ac_save_cflags"