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.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
189 2.96*) CXXFLAGS="-g $lyx_opt -fhonor-std -fvtable-thunks -ffunction-sections -fdata-sections";;
190 *2.91.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
191 *) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
196 if test x$with_warnings = xyes ; then
198 2.95.*) CXXFLAGS="$CXXFLAGS -W -Wall -Wconversion -Winline";;
199 2.96*) CXXFLAGS="$CXXFLAGS -W -Wall -Wconversion -Winline";;
200 *) CXXFLAGS="$CXXFLAGS -ansi -W -Wall -Wno-return-type";;
202 if test $lyx_devel_version = yes ; then
207 *) CXXFLAGS="$CXXFLAGS -pedantic";;
213 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
218 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
220 AC_DEFUN(LYX_CXX_RTTI,[
221 ### Check whether the compiler supports runtime type information
222 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
226 virtual int tag() { return 0; }
228 class derived1 : public rtti {
230 int tag() { return 1; }
232 class derived2 : public rtti {
234 int tag() { return 2; }
237 derived1 * foo1 = new derived1();
238 derived2 * foo2 = new derived2();
240 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
244 bar1 = dynamic_cast<derived1 *>(bar);
249 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
251 if test x$lyx_cv_rtti = xyes ; then
252 AC_DEFINE(HAVE_RTTI, 1,
253 [Define to 1 if your compiler supports runtime type information])
257 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
258 dnl understands the "explicit" directive.
259 AC_DEFUN(LYX_CXX_EXPLICIT,[
260 ### Check whether the compiler understands the keyword `explicit'
261 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
266 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
268 if test $lyx_cv_explicit = no ; then
269 AC_DEFINE(explicit,[ ],
270 [Define to nothing if your compiler does not understand the
271 'explicit' directive])
275 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
276 dnl has a working stl stack template
277 AC_DEFUN(LYX_CXX_STL_STACK,[
278 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
285 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
287 if test $lyx_cv_broken_stack = yes ; then
288 AC_DEFINE(BROKEN_STL_STACK, 1,
289 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
294 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
295 dnl count template, if not the old HP version is assumed.
296 AC_DEFUN(LYX_STD_COUNT,[
297 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
303 int countChar(string const & a, char const c)
305 return count(a.begin(), a.end(), c);
309 int i = countChar(a, 'l');
310 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
312 if test $lyx_cv_std_count = yes ; then
313 AC_DEFINE(HAVE_STD_COUNT, 1,
314 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
318 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
319 dnl supports modern STL streams
320 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
321 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
325 std::streambuf * test = std::cerr.rdbuf();
327 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
329 if test $lyx_cv_modern_streams = yes ; then
330 AC_DEFINE(MODERN_STL_STREAMS, 1,
331 [Define if you have modern standard-compliant STL streams])
335 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
336 dnl has a std::string that is usable for LyX. LyX does not require this
337 dnl std::string to be standard.
338 AC_DEFUN(LYX_CXX_STL_STRING,[
339 AC_REQUIRE([LYX_PROG_CXX])
340 AC_MSG_CHECKING(whether the included std::string should be used)
341 AC_ARG_WITH(included-string,
342 [ --with-included-string use LyX string class instead of STL string],
343 [lyx_cv_with_included_string=$withval],
344 [AC_CACHE_CHECK([],lyx_cv_with_included_string,
349 // LyX has reduced its requirements on the basic_string
350 // implementation so that the basic_string supplied
351 // with gcc is usable. In particular this means that
352 // lyx does not use std::string::clear and not the
353 // strncmp version of std::string::compare. This is mainly
354 // done so that LyX can use precompiled C++ libraries that
355 // already uses the systems basic_string, e.g. gtk--
356 string a("hello there");
360 //int t = a.compare(a.length() - 1, 1, s);
363 lyx_cv_with_included_string=no
365 lyx_cv_with_included_string=yes
369 if test x$lyx_cv_with_included_string = xyes ; then
370 AC_DEFINE(USE_INCLUDED_STRING, 1,
371 [Define to use the lyxstring class bundled with LyX.])
372 lyx_flags="$lyx_flags included-string"
374 AM_CONDITIONAL(USE_LYXSTRING, test x$lyx_cv_with_included_string = xyes)
375 dnl AC_MSG_RESULT([$with_included_string])
379 dnl Usage: LYX_CXX_GOOD_STD_STRING : checks whether the C++ compiler
380 dnl has a std::string that is close to the standard. So close that
381 dnl methods not found in "unstandard" std::strings are present here.
382 AC_DEFUN(LYX_CXX_GOOD_STD_STRING,[
383 AC_REQUIRE([LYX_PROG_CXX])
384 AC_CACHE_CHECK([whether the systems std::string is really good],
385 [lyx_cv_std_string_good],
390 // From a std::string that is supposed to be close to the
391 // standard we require at least three things:
392 // - clear() and erase()
393 // - the strncmp of compare()
395 string a("hello there");
399 int t = a.compare(a.length() - 1, 1, s);
403 lyx_cv_std_string_good=yes
405 lyx_cv_std_string_good=no
409 if test x$lyx_cv_std_string_good = xyes ; then
410 AC_DEFINE(STD_STRING_IS_GOOD, 1,
411 [Define is the systems std::string is really good.])
416 dnl Usage: LYX_REGEX : checks if the header regex.h is available
417 dnl if it is not available the automake variable USE_REGEX will be
418 dnl defined and the regex.h and regex.c that we provide will be used.
420 AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
421 AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
426 AC_DEFUN(LYX_CXX_MUTABLE, [
427 AC_REQUIRE([LYX_PROG_CXX])
428 AC_CACHE_CHECK([if C++ compiler supports mutable],
435 void foo() const { c=0; }
439 lyx_cv_cxx_mutable=yes
441 lyx_cv_cxx_mutable=no
444 if test $lyx_cv_cxx_mutable = yes ; then
445 AC_DEFINE(HAVE_MUTABLE, 1,
446 [Defined if your compiler suports 'mutable'.])
452 AC_DEFUN(LYX_CXX_PARTIAL, [
453 AC_REQUIRE([LYX_PROG_CXX])
454 AC_CACHE_CHECK([if C++ compiler supports partial specialization],
455 [lyx_cv_cxx_partial_specialization],
458 template<class T, class K>
462 template<class T> class k<void,T> { };
467 lyx_cv_cxx_partial_specialization=yes
469 lyx_cv_cxx_partial_specialization=no
472 if test x$lyx_cv_cxx_partial_specialization = xyes ; then
473 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
474 [Defined if your compiler supports partial specialization.])
479 dnl Usage: LYX_CXX_NAMESPACES : checks whether the C++ compiler
480 dnl has a correct namespace handling and define CXX_WORKING_NAMESPACES
481 dnl if true. This macro does not do a thourough test, but it should be
482 dnl good enough to suit our needs.
483 AC_DEFUN(LYX_CXX_NAMESPACES,[
484 AC_CACHE_CHECK(for correct namespaces support,lyx_cv_cxx_namespace,
492 ],lyx_cv_cxx_namespace=yes,lyx_cv_cxx_namespace=no)
494 if test x$lyx_cv_cxx_namespace = xyes ; then
495 AC_DEFINE(CXX_WORKING_NAMESPACES, 1,
496 [Define if your C++ compiler has correct support for namespaces])
501 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
502 dnl provides wrappers for C headers and use our alternate version otherwise.
503 AC_DEFUN(LYX_CXX_CHEADERS,[
504 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
514 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
515 if test $lyx_cv_cxx_cheaders = no ; then
516 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
520 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
521 AC_DEFUN(LYX_PATH_XPM,[
522 ### Check for Xpm library
523 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
524 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
526 ### Check for Xpm headers
527 lyx_cv_xpm_h_location="<xpm.h>"
528 AC_CHECK_HEADER(X11/xpm.h,[
529 ac_cv_header_xpm_h=yes
530 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
531 AC_CHECK_HEADER(xpm.h,[],[
532 LYX_LIB_ERROR(xpm.h,Xpm)])])
533 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
535 ### Test for the header version
536 if test $ac_cv_header_xpm_h = yes; then
537 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
538 [ cat > conftest.$ac_ext <<EOF
539 #line __oline__ "configure"
540 #include "confdefs.h"
542 #include XPM_H_LOCATION
543 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
545 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
546 grep '^"%%%"' 2>/dev/null | \
547 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
548 case "$lyx_cv_xpmr" in
550 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
551 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
555 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
557 case "$lyx_cv_xpmr" in
559 [789]|[0-9][0-9]*) ;;
561 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
562 If you experience strange crashes with LyX, try to upgrade
563 to at least version 4.7 (aka 3.4g).
564 If you have installed a newer version of the library, check whether you
565 have an old xpm.h header file in your include path.]);;
570 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
571 AC_DEFUN(LYX_PATH_XFORMS,[
572 ### Check for xforms library
573 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
574 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
575 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
577 ### Check for xforms headers
578 lyx_cv_forms_h_location="<forms.h>"
579 AC_CHECK_HEADER(X11/forms.h,[
580 ac_cv_header_forms_h=yes
581 lyx_cv_forms_h_location="<X11/forms.h>"],[
582 AC_CHECK_HEADER(forms.h,[],[
583 LYX_LIB_ERROR(forms.h,forms)])])
584 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
585 if test $ac_cv_header_forms_h = yes; then
586 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
587 [ cat > conftest.$ac_ext <<EOF
588 #line __oline__ "configure"
589 #include "confdefs.h"
591 #include FORMS_H_LOCATION
592 #if ! defined(FL_INCLUDE_VERSION)
595 "%%%"FL_VERSION.FL_REVISION"%%%"
598 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
599 grep '^"%%%"' 2>/dev/null | \
600 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
602 case "$lyx_cv_xfversion" in
603 "(unknown)"|0.8[1-7])
605 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
606 This version of LyX works best with versions 0.88 (recommended) and later.) ;;
608 0.89) LYX_WARNING(dnl
609 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
610 it is an unproven version and might still have some bugs. If you
611 have problems[,] please use version 0.88 instead.) ;;
613 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
614 since it is newer than 0.88. You might have slight problems with it.);;
619 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
621 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
622 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
623 os=`uname -s | tr '[A-Z]' '[a-z]'`
625 test "$os" = hp-ux && ac_cv_hpux=yes])
626 if test "$ac_cv_hpux" = yes; then
627 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
631 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
634 [#The headers are not correct under SunOS4
635 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
637 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
638 changequote([, ]) dnl
640 test "$os" = SunOS4 && ac_cv_sunos4=yes])
641 if test "$ac_cv_sunos4" = yes; then
642 test "x$GXX" = xyes && lyx_broken_headers=yes
646 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
649 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
651 if test `uname -s` != "SCO_SV"; then
652 lyx_machine_rel=`uname -m`:`uname -r`
653 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
655 if test -f /usr/options/cb.name; then
657 elif /bin/uname -X 2>/dev/null >/dev/null ; then
662 if test "$ac_cv_sco" = yes; then
663 test "x$GXX" = xyes && lyx_broken_headers=yes
666 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
667 dnl Checks whether putenv() takes 'char const *' or 'char *' as
668 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
669 dnl while everybody else uses the former...
670 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
671 [AC_MSG_CHECKING([type of argument for putenv()])
672 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
674 [#include <cstdlib>],
675 [char const * foo = "bar";
677 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
678 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
679 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
680 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
683 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
684 dnl [default-yes-value])
685 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
686 dnl resulting directory name in 'dir-var-name'.
687 AC_DEFUN(LYX_WITH_DIR,[
688 AC_ARG_WITH($1,[ --with-$1 specify $2])
689 AC_MSG_CHECKING([for $2])
690 if test -z "$with_$3"; then
691 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
693 test "x$with_$3" = xyes && with_$3=$5
696 AC_MSG_RESULT($lyx_cv_$3)])
699 dnl Usage: LYX_LOOP_DIR(value,action)
700 dnl Executes action for values of variable `dir' in `values'. `values' can
701 dnl use ":" as a separator.
702 AC_DEFUN(LYX_LOOP_DIR,[
703 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
704 for dir in `eval "echo $1"`; do
705 if test ! "$dir" = NONE; then
706 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
714 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
716 AC_DEFUN(LYX_ADD_LIB_DIR,[
718 if test "`(uname) 2>/dev/null`" = SunOS &&
719 uname -r | grep '^5' >/dev/null; then
720 if test $ac_cv_prog_gxx = yes ; then
721 $1="${$1} -Wl[,]-R$2"
728 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
730 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
732 ### Check which libsigc++ we're using and make sure any external one works
733 ### Check for libsigc++ library
734 AC_DEFUN(LYX_WITH_SIGC,
735 [AC_MSG_CHECKING(whether the included libsigc++ should be used)
736 AC_ARG_WITH([included-libsigc],
737 [ --without-included-libsigc
738 Use the libsigc++ installed on the system],
739 [lyx_use_included_libsigc=$withval],
740 [lyx_use_included_libsigc=yes])
741 AC_MSG_RESULT([$lyx_use_included_libsigc])
742 if test x$lyx_use_included_libsigc = xno; then
743 ### Check for libsigc++
744 ## can't use AC_SUBST right here!
749 [Cannot find libsigc++ library or headers at least as recent as 0.8.7.
750 Check your installation. Have you installed the development package?])
753 ### Use the included libsigc++
754 ### sigc-config hasn't been created yet so we can't just do the same as above
755 ### unless of course someone gets keen and merges the sigc++ configure.in
756 ### with this one. We don't really gain much by doing that though except
757 ### a considerably smaller dist and more difficult maintenance.
758 ### It'd also mean we'd have the equivalent of config/gettext.m4
759 lyx_flags="$lyx_flags included-libsigc"
760 SIGC_LIBS="\`\${top_builddir}/sigc++/sigc-config --libs-names | sed -e 's/-lsigc//'\`"
761 # Libsigc++ always installs into a subdirectory called sigc++. Therefore we
762 # have to always use #include <sigc++/signal_system.h> in our code.
763 # Remember if you decide to do anything to the sigc++ code to do your mods on
764 # the makeLyXsigc.sh script in development/tools using a current cvs checkout
765 # of libsigc++. A tarball distribution doesn't have everything in it that we
767 # We need both these -I entries to build when builddir != srcdir
768 if test "x$src_dir" = "x." ; then
769 SIGC_CFLAGS="-I\${top_srcdir}"
771 SIGC_CFLAGS="-I\${top_builddir} -I\${top_srcdir}"
773 INCLUDED_SIGC="\${top_builddir}/sigc++/libsigc.la"
774 ## can't substitute these here like this otherwise all remaining tests fail
775 ## instead we SUBST directly into the Makefiles
776 ##LIBS="$LIBS \$SIGC_LIBS"
777 ##CPPFLAGS="$CPPFLAGS \$SIGC_CFLAGS"
779 AC_SUBST(SIGC_CFLAGS)
781 AC_SUBST(INCLUDED_SIGC)
784 ### Check for a headers existence and location iff it exists
785 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
786 ## It almost works. I've tried a few variations but they give errors
787 ## of one sort or other: bad substitution or file not found etc. The
788 ## actual header _is_ found though and the cache variable is set however
789 ## the reported setting (on screen) is equal to $ac_safe for some unknown
791 ## Additionally, autoheader can't figure out what to use as the name in
792 ## the config.h.in file so we need to write our own entries there -- one for
793 ## each header in the form PATH_HEADER_NAME_H
795 AC_DEFUN(LYX_PATH_HEADER,
796 [ AC_CHECK_HEADER($1,[
797 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
798 ### the only remaining problem is getting the second parameter to this
799 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
800 ### of $ac_safe being printed.
801 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
802 [ cat > conftest.$ac_ext <<EOF
803 #line __oline__ "configure"
804 #include "confdefs.h"
808 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
809 grep $1 2>/dev/null | \
810 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
811 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
813 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path)])
815 ### end of LYX_PATH_HEADER
817 ### Check for stl_string_fwd.h existence and location if it exists
818 AC_DEFUN(LYX_STL_STRING_FWD,
819 [ AC_CHECK_HEADER(stl_string_fwd.h,[
820 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
821 [ cat > conftest.$ac_ext <<EOF
822 #line __oline__ "configure"
823 #include "confdefs.h"
825 #include <stl_string_fwd.h>
827 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
828 grep 'stl_string_fwd.h' 2>/dev/null | \
829 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
831 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
832 [define this to the location of stl_string_fwd.h to be used with #include,
833 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
834 supplied version of the header.
835 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
839 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
840 dnl if the cache file is inconsistent with the current host,
841 dnl target and build system types, execute CMD or print a default
843 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
844 AC_REQUIRE([AC_CANONICAL_SYSTEM])
845 AC_MSG_CHECKING([config.cache system type])
846 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
847 test x"$ac_cv_host_system_type" != x"$host"; } ||
848 { test x"${ac_cv_build_system_type+set}" = x"set" &&
849 test x"$ac_cv_build_system_type" != x"$build"; } ||
850 { test x"${ac_cv_target_system_type+set}" = x"set" &&
851 test x"$ac_cv_target_system_type" != x"$target"; }; then
852 AC_MSG_RESULT([different])
854 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
856 AC_MSG_RESULT([same])
858 ac_cv_host_system_type="$host"
859 ac_cv_build_system_type="$build"
860 ac_cv_target_system_type="$target"
863 dnl We use this until autoconf fixes its version.
864 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
865 [AC_MSG_CHECKING([types of arguments for select()])
866 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
867 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
868 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
869 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
870 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
872 [#ifdef HAVE_SYS_TYPES_H
873 #include <sys/types.h>
875 #ifdef HAVE_SYS_TIME_H
876 #include <sys/time.h>
878 #ifdef HAVE_SYS_SELECT_H
879 #include <sys/select.h>
881 #ifdef HAVE_SYS_SOCKET_H
882 #include <sys/socket.h>
884 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
885 [ac_not_found=no ; break 3],ac_not_found=yes)
892 if test "$ac_not_found" = yes; then
893 ac_cv_func_select_arg1=int
894 ac_cv_func_select_arg234='int *'
895 ac_cv_func_select_arg5='struct timeval *'
897 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
898 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1)
899 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234))
900 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5))
903 ### Check which frontend we want to use. The default is XForms
905 AC_DEFUN(LYX_USE_FRONTEND,
906 [AC_MSG_CHECKING(what frontend should be used as main GUI)
907 AC_ARG_WITH(frontend,
908 [ --with-frontend[=value] Use THIS frontend as main GUI:
909 Possible values: xforms,kde,gnome],
910 [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"])
911 AC_MSG_RESULT($lyx_use_frontend)
912 lyx_flags="$lyx_flags frontend-$lyx_use_frontend"
914 AC_SUBST(FRONTEND_GUILIB)
915 AC_SUBST(FRONTEND_LDFLAGS)
916 AC_SUBST(FRONTEND_INCLUDES)
917 AC_SUBST(FRONTEND_LIBS)