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 -fno-exceptions";;
190 2.97*) CXXFLAGS="-g $lyx_opt -fhonor-std -fno-builtin -ffunction-sectons -fdata-sections";;
191 *2.91.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
192 *) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
197 if test x$with_warnings = xyes ; then
199 2.95.*) CXXFLAGS="$CXXFLAGS -W -Wall -Wconversion -Winline";;
200 2.96*) CXXFLAGS="$CXXFLAGS -W -Wall -Wconversion -Winline";;
201 2.97*) CXXFLAGS="$CXXFLAGS -W -Wall -Wconversion -Winline";;
202 *) CXXFLAGS="$CXXFLAGS -W -Wall -Wno-return-type";;
204 if test $lyx_devel_version = yes ; then
210 *) CXXFLAGS="$CXXFLAGS -pedantic";;
216 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
221 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
223 AC_DEFUN(LYX_CXX_RTTI,[
224 ### Check whether the compiler supports runtime type information
225 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
229 virtual int tag() { return 0; }
231 class derived1 : public rtti {
233 int tag() { return 1; }
235 class derived2 : public rtti {
237 int tag() { return 2; }
240 derived1 * foo1 = new derived1();
241 derived2 * foo2 = new derived2();
243 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
247 bar1 = dynamic_cast<derived1 *>(bar);
252 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
254 if test x$lyx_cv_rtti = xyes ; then
255 AC_DEFINE(HAVE_RTTI, 1,
256 [Define to 1 if your compiler supports runtime type information])
260 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
261 dnl understands the "explicit" directive.
262 AC_DEFUN(LYX_CXX_EXPLICIT,[
263 ### Check whether the compiler understands the keyword `explicit'
264 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
269 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
271 if test $lyx_cv_explicit = no ; then
272 AC_DEFINE(explicit,[ ],
273 [Define to nothing if your compiler does not understand the
274 'explicit' directive])
278 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
279 dnl has a working stl stack template
280 AC_DEFUN(LYX_CXX_STL_STACK,[
281 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
288 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
290 if test $lyx_cv_broken_stack = yes ; then
291 AC_DEFINE(BROKEN_STL_STACK, 1,
292 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
297 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
298 dnl count template, if not the old HP version is assumed.
299 AC_DEFUN(LYX_STD_COUNT,[
300 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
306 int countChar(string const & a, char const c)
308 return count(a.begin(), a.end(), c);
312 int i = countChar(a, '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 is 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)
523 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
524 AC_DEFUN(LYX_PATH_XPM,[
525 ### Check for Xpm library
526 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
527 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
529 ### Check for Xpm headers
530 lyx_cv_xpm_h_location="<xpm.h>"
531 AC_CHECK_HEADER(X11/xpm.h,[
532 ac_cv_header_xpm_h=yes
533 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
534 AC_CHECK_HEADER(xpm.h,[],[
535 LYX_LIB_ERROR(xpm.h,Xpm)])])
536 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
538 ### Test for the header version
539 if test $ac_cv_header_xpm_h = yes; then
540 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
541 [ cat > conftest.$ac_ext <<EOF
542 #line __oline__ "configure"
543 #include "confdefs.h"
545 #include XPM_H_LOCATION
546 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
548 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
549 grep '^"%%%"' 2>/dev/null | \
550 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
551 case "$lyx_cv_xpmr" in
553 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
554 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
558 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
560 case "$lyx_cv_xpmr" in
562 [789]|[0-9][0-9]*) ;;
564 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
565 If you experience strange crashes with LyX, try to upgrade
566 to at least version 4.7 (aka 3.4g).
567 If you have installed a newer version of the library, check whether you
568 have an old xpm.h header file in your include path.]);;
573 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
574 AC_DEFUN(LYX_PATH_XFORMS,[
575 ### Check for xforms library
576 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
577 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
578 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
580 ### Check for xforms headers
581 lyx_cv_forms_h_location="<forms.h>"
582 AC_CHECK_HEADER(X11/forms.h,[
583 ac_cv_header_forms_h=yes
584 lyx_cv_forms_h_location="<X11/forms.h>"],[
585 AC_CHECK_HEADER(forms.h,[],[
586 LYX_LIB_ERROR(forms.h,forms)])])
587 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
588 if test $ac_cv_header_forms_h = yes; then
589 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
590 [ cat > conftest.$ac_ext <<EOF
591 #line __oline__ "configure"
592 #include "confdefs.h"
594 #include FORMS_H_LOCATION
595 #if ! defined(FL_INCLUDE_VERSION)
598 "%%%"FL_VERSION.FL_REVISION"%%%"
601 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
602 grep '^"%%%"' 2>/dev/null | \
603 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
605 case "$lyx_cv_xfversion" in
606 "(unknown)"|0.8[1-7])
608 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
609 This version of LyX works best with versions 0.88 (recommended) and later.) ;;
611 0.89) LYX_WARNING(dnl
612 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
613 it is an unproven version and might still have some bugs. If you
614 have problems[,] please use version 0.88 instead.) ;;
616 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
617 since it is newer than 0.88. You might have slight problems with it.);;
622 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
624 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
625 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
626 os=`uname -s | tr '[A-Z]' '[a-z]'`
628 test "$os" = hp-ux && ac_cv_hpux=yes])
629 if test "$ac_cv_hpux" = yes; then
630 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
634 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
637 [#The headers are not correct under SunOS4
638 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
640 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
641 changequote([, ]) dnl
643 test "$os" = SunOS4 && ac_cv_sunos4=yes])
644 if test "$ac_cv_sunos4" = yes; then
645 test "x$GXX" = xyes && lyx_broken_headers=yes
649 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
652 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
654 if test `uname -s` != "SCO_SV"; then
655 lyx_machine_rel=`uname -m`:`uname -r`
656 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
658 if test -f /usr/options/cb.name; then
660 elif /bin/uname -X 2>/dev/null >/dev/null ; then
665 if test "$ac_cv_sco" = yes; then
666 test "x$GXX" = xyes && lyx_broken_headers=yes
669 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
670 dnl Checks whether putenv() takes 'char const *' or 'char *' as
671 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
672 dnl while everybody else uses the former...
673 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
674 [AC_MSG_CHECKING([type of argument for putenv()])
675 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
677 [#include <cstdlib>],
678 [char const * foo = "bar";
680 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
681 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
682 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
683 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
686 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
687 dnl [default-yes-value])
688 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
689 dnl resulting directory name in 'dir-var-name'.
690 AC_DEFUN(LYX_WITH_DIR,[
691 AC_ARG_WITH($1,[ --with-$1 specify $2])
692 AC_MSG_CHECKING([for $2])
693 if test -z "$with_$3"; then
694 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
696 test "x$with_$3" = xyes && with_$3=$5
699 AC_MSG_RESULT($lyx_cv_$3)])
702 dnl Usage: LYX_LOOP_DIR(value,action)
703 dnl Executes action for values of variable `dir' in `values'. `values' can
704 dnl use ":" as a separator.
705 AC_DEFUN(LYX_LOOP_DIR,[
706 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
707 for dir in `eval "echo $1"`; do
708 if test ! "$dir" = NONE; then
709 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
717 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
719 AC_DEFUN(LYX_ADD_LIB_DIR,[
721 if test "`(uname) 2>/dev/null`" = SunOS &&
722 uname -r | grep '^5' >/dev/null; then
723 if test $ac_cv_prog_gxx = yes ; then
724 $1="${$1} -Wl[,]-R$2"
731 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
733 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
735 ### Check which libsigc++ we're using and make sure any external one works
736 ### Check for libsigc++ library
737 AC_DEFUN(LYX_WITH_SIGC,
738 [AC_MSG_CHECKING(whether the included libsigc++ should be used)
739 AC_ARG_WITH([included-libsigc],
740 [ --without-included-libsigc
741 Use the libsigc++ installed on the system],
742 [lyx_use_included_libsigc=$withval],
743 [lyx_use_included_libsigc=yes])
744 AC_MSG_RESULT([$lyx_use_included_libsigc])
745 if test x$lyx_use_included_libsigc = xno; then
746 ### Check for libsigc++
747 ## can't use AC_SUBST right here!
752 [Cannot find libsigc++ library or headers at least as recent as 0.8.7.
753 Check your installation. Have you installed the development package?])
756 ### Use the included libsigc++
757 ### sigc-config hasn't been created yet so we can't just do the same as above
758 ### unless of course someone gets keen and merges the sigc++ configure.in
759 ### with this one. We don't really gain much by doing that though except
760 ### a considerably smaller dist and more difficult maintenance.
761 ### It'd also mean we'd have the equivalent of config/gettext.m4
762 lyx_flags="$lyx_flags included-libsigc"
763 SIGC_LIBS="\`\${top_builddir}/sigc++/sigc-config --libs-names | sed -e 's/-lsigc//'\`"
764 # Libsigc++ always installs into a subdirectory called sigc++. Therefore we
765 # have to always use #include <sigc++/signal_system.h> in our code.
766 # Remember if you decide to do anything to the sigc++ code to do your mods on
767 # the makeLyXsigc.sh script in development/tools using a current cvs checkout
768 # of libsigc++. A tarball distribution doesn't have everything in it that we
770 # We need both these -I entries to build when builddir != srcdir
771 if test "x$src_dir" = "x." ; then
772 SIGC_CFLAGS="-I\${top_srcdir}"
774 SIGC_CFLAGS="-I\${top_builddir} -I\${top_srcdir}"
776 INCLUDED_SIGC="\${top_builddir}/sigc++/libsigc.la"
777 ## can't substitute these here like this otherwise all remaining tests fail
778 ## instead we SUBST directly into the Makefiles
779 ##LIBS="$LIBS \$SIGC_LIBS"
780 ##CPPFLAGS="$CPPFLAGS \$SIGC_CFLAGS"
782 AC_SUBST(SIGC_CFLAGS)
784 AC_SUBST(INCLUDED_SIGC)
787 ### Check for a headers existence and location iff it exists
788 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
789 ## It almost works. I've tried a few variations but they give errors
790 ## of one sort or other: bad substitution or file not found etc. The
791 ## actual header _is_ found though and the cache variable is set however
792 ## the reported setting (on screen) is equal to $ac_safe for some unknown
794 ## Additionally, autoheader can't figure out what to use as the name in
795 ## the config.h.in file so we need to write our own entries there -- one for
796 ## each header in the form PATH_HEADER_NAME_H
798 AC_DEFUN(LYX_PATH_HEADER,
799 [ AC_CHECK_HEADER($1,[
800 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
801 ### the only remaining problem is getting the second parameter to this
802 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
803 ### of $ac_safe being printed.
804 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
805 [ cat > conftest.$ac_ext <<EOF
806 #line __oline__ "configure"
807 #include "confdefs.h"
811 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
812 grep $1 2>/dev/null | \
813 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
814 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
816 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path)])
818 ### end of LYX_PATH_HEADER
820 ### Check for stl_string_fwd.h existence and location if it exists
821 AC_DEFUN(LYX_STL_STRING_FWD,
822 [ AC_CHECK_HEADER(stl_string_fwd.h,[
823 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
824 [ cat > conftest.$ac_ext <<EOF
825 #line __oline__ "configure"
826 #include "confdefs.h"
828 #include <stl_string_fwd.h>
830 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
831 grep 'stl_string_fwd.h' 2>/dev/null | \
832 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
834 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
835 [define this to the location of stl_string_fwd.h to be used with #include,
836 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
837 supplied version of the header.
838 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
842 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
843 dnl if the cache file is inconsistent with the current host,
844 dnl target and build system types, execute CMD or print a default
846 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
847 AC_REQUIRE([AC_CANONICAL_SYSTEM])
848 AC_MSG_CHECKING([config.cache system type])
849 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
850 test x"$ac_cv_host_system_type" != x"$host"; } ||
851 { test x"${ac_cv_build_system_type+set}" = x"set" &&
852 test x"$ac_cv_build_system_type" != x"$build"; } ||
853 { test x"${ac_cv_target_system_type+set}" = x"set" &&
854 test x"$ac_cv_target_system_type" != x"$target"; }; then
855 AC_MSG_RESULT([different])
857 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
859 AC_MSG_RESULT([same])
861 ac_cv_host_system_type="$host"
862 ac_cv_build_system_type="$build"
863 ac_cv_target_system_type="$target"
866 dnl We use this until autoconf fixes its version.
867 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
868 [AC_MSG_CHECKING([types of arguments for select()])
869 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
870 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
871 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
872 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
873 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
875 [#ifdef HAVE_SYS_TYPES_H
876 #include <sys/types.h>
878 #ifdef HAVE_SYS_TIME_H
879 #include <sys/time.h>
881 #ifdef HAVE_SYS_SELECT_H
882 #include <sys/select.h>
884 #ifdef HAVE_SYS_SOCKET_H
885 #include <sys/socket.h>
887 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
888 [ac_not_found=no ; break 3],ac_not_found=yes)
895 if test "$ac_not_found" = yes; then
896 ac_cv_func_select_arg1=int
897 ac_cv_func_select_arg234='int *'
898 ac_cv_func_select_arg5='struct timeval *'
900 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
901 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1)
902 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234))
903 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5))
906 ### Check which frontend we want to use. The default is XForms
908 AC_DEFUN(LYX_USE_FRONTEND,
909 [AC_MSG_CHECKING(what frontend should be used as main GUI)
910 AC_ARG_WITH(frontend,
911 [ --with-frontend[=value] Use THIS frontend as main GUI:
912 Possible values: xforms,kde,gnome],
913 [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"])
914 AC_MSG_RESULT($lyx_use_frontend)
915 lyx_flags="$lyx_flags frontend-$lyx_use_frontend"
917 AC_SUBST(FRONTEND_GUILIB)
918 AC_SUBST(FRONTEND_LDFLAGS)
919 AC_SUBST(FRONTEND_INCLUDES)
920 AC_SUBST(FRONTEND_LIBS)