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-rtti -fno-exceptions";;
190 2.97*) CXXFLAGS="-g $lyx_opt -fhonor-std -fvtable-thunks -ffunction-sections -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
209 *) CXXFLAGS="$CXXFLAGS -pedantic";;
215 test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
220 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
222 AC_DEFUN(LYX_CXX_RTTI,[
223 ### Check whether the compiler supports runtime type information
224 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
228 virtual int tag() { return 0; }
230 class derived1 : public rtti {
232 int tag() { return 1; }
234 class derived2 : public rtti {
236 int tag() { return 2; }
239 derived1 * foo1 = new derived1();
240 derived2 * foo2 = new derived2();
242 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
246 bar1 = dynamic_cast<derived1 *>(bar);
251 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
253 if test x$lyx_cv_rtti = xyes ; then
254 AC_DEFINE(HAVE_RTTI, 1,
255 [Define to 1 if your compiler supports runtime type information])
259 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
260 dnl understands the "explicit" directive.
261 AC_DEFUN(LYX_CXX_EXPLICIT,[
262 ### Check whether the compiler understands the keyword `explicit'
263 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
268 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
270 if test $lyx_cv_explicit = no ; then
271 AC_DEFINE(explicit,[ ],
272 [Define to nothing if your compiler does not understand the
273 'explicit' directive])
277 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
278 dnl has a working stl stack template
279 AC_DEFUN(LYX_CXX_STL_STACK,[
280 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
287 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
289 if test $lyx_cv_broken_stack = yes ; then
290 AC_DEFINE(BROKEN_STL_STACK, 1,
291 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
296 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
297 dnl count template, if not the old HP version is assumed.
298 AC_DEFUN(LYX_STD_COUNT,[
299 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
305 int countChar(string const & a, char const c)
307 return count(a.begin(), a.end(), c);
311 int i = countChar(a, 'l');
312 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
314 if test $lyx_cv_std_count = yes ; then
315 AC_DEFINE(HAVE_STD_COUNT, 1,
316 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
320 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
321 dnl supports modern STL streams
322 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
323 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
327 std::streambuf * test = std::cerr.rdbuf();
329 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
331 if test $lyx_cv_modern_streams = yes ; then
332 AC_DEFINE(MODERN_STL_STREAMS, 1,
333 [Define if you have modern standard-compliant STL streams])
337 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
338 dnl has a std::string that is usable for LyX. LyX does not require this
339 dnl std::string to be standard.
340 AC_DEFUN(LYX_CXX_STL_STRING,[
341 AC_REQUIRE([LYX_PROG_CXX])
342 AC_MSG_CHECKING(whether the included std::string should be used)
343 AC_ARG_WITH(included-string,
344 [ --with-included-string use LyX string class instead of STL string],
345 [lyx_cv_with_included_string=$withval],
346 [AC_CACHE_CHECK([],lyx_cv_with_included_string,
351 // LyX has reduced its requirements on the basic_string
352 // implementation so that the basic_string supplied
353 // with gcc is usable. In particular this means that
354 // lyx does not use std::string::clear and not the
355 // strncmp version of std::string::compare. This is mainly
356 // done so that LyX can use precompiled C++ libraries that
357 // already uses the systems basic_string, e.g. gtk--
358 string a("hello there");
362 //int t = a.compare(a.length() - 1, 1, s);
365 lyx_cv_with_included_string=no
367 lyx_cv_with_included_string=yes
371 if test x$lyx_cv_with_included_string = xyes ; then
372 AC_DEFINE(USE_INCLUDED_STRING, 1,
373 [Define to use the lyxstring class bundled with LyX.])
374 lyx_flags="$lyx_flags included-string"
376 AM_CONDITIONAL(USE_LYXSTRING, test x$lyx_cv_with_included_string = xyes)
377 dnl AC_MSG_RESULT([$with_included_string])
381 dnl Usage: LYX_CXX_GOOD_STD_STRING : checks whether the C++ compiler
382 dnl has a std::string that is close to the standard. So close that
383 dnl methods not found in "unstandard" std::strings are present here.
384 AC_DEFUN(LYX_CXX_GOOD_STD_STRING,[
385 AC_REQUIRE([LYX_PROG_CXX])
386 AC_CACHE_CHECK([whether the systems std::string is really good],
387 [lyx_cv_std_string_good],
392 // From a std::string that is supposed to be close to the
393 // standard we require at least three things:
394 // - clear() and erase()
395 // - the strncmp of compare()
397 string a("hello there");
401 int t = a.compare(a.length() - 1, 1, s);
405 lyx_cv_std_string_good=yes
407 lyx_cv_std_string_good=no
411 if test x$lyx_cv_std_string_good = xyes ; then
412 AC_DEFINE(STD_STRING_IS_GOOD, 1,
413 [Define is the systems std::string is really good.])
418 dnl Usage: LYX_REGEX : checks if the header regex.h is available
419 dnl if it is not available the automake variable USE_REGEX will be
420 dnl defined and the regex.h and regex.c that we provide will be used.
422 AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
423 AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
428 AC_DEFUN(LYX_CXX_MUTABLE, [
429 AC_REQUIRE([LYX_PROG_CXX])
430 AC_CACHE_CHECK([if C++ compiler supports mutable],
437 void foo() const { c=0; }
441 lyx_cv_cxx_mutable=yes
443 lyx_cv_cxx_mutable=no
446 if test $lyx_cv_cxx_mutable = yes ; then
447 AC_DEFINE(HAVE_MUTABLE, 1,
448 [Defined if your compiler suports 'mutable'.])
454 AC_DEFUN(LYX_CXX_PARTIAL, [
455 AC_REQUIRE([LYX_PROG_CXX])
456 AC_CACHE_CHECK([if C++ compiler supports partial specialization],
457 [lyx_cv_cxx_partial_specialization],
460 template<class T, class K>
464 template<class T> class k<void,T> { };
469 lyx_cv_cxx_partial_specialization=yes
471 lyx_cv_cxx_partial_specialization=no
474 if test x$lyx_cv_cxx_partial_specialization = xyes ; then
475 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
476 [Defined if your compiler supports partial specialization.])
481 dnl Usage: LYX_CXX_NAMESPACES : checks whether the C++ compiler
482 dnl has a correct namespace handling and define CXX_WORKING_NAMESPACES
483 dnl if true. This macro does not do a thourough test, but it should be
484 dnl good enough to suit our needs.
485 AC_DEFUN(LYX_CXX_NAMESPACES,[
486 AC_CACHE_CHECK(for correct namespaces support,lyx_cv_cxx_namespace,
494 ],lyx_cv_cxx_namespace=yes,lyx_cv_cxx_namespace=no)
496 if test x$lyx_cv_cxx_namespace = xyes ; then
497 AC_DEFINE(CXX_WORKING_NAMESPACES, 1,
498 [Define if your C++ compiler has correct support for namespaces])
503 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
504 dnl provides wrappers for C headers and use our alternate version otherwise.
505 AC_DEFUN(LYX_CXX_CHEADERS,[
506 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
516 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
517 if test $lyx_cv_cxx_cheaders = no ; then
518 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
522 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
523 AC_DEFUN(LYX_PATH_XPM,[
524 ### Check for Xpm library
525 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
526 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
528 ### Check for Xpm headers
529 lyx_cv_xpm_h_location="<xpm.h>"
530 AC_CHECK_HEADER(X11/xpm.h,[
531 ac_cv_header_xpm_h=yes
532 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
533 AC_CHECK_HEADER(xpm.h,[],[
534 LYX_LIB_ERROR(xpm.h,Xpm)])])
535 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
537 ### Test for the header version
538 if test $ac_cv_header_xpm_h = yes; then
539 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
540 [ cat > conftest.$ac_ext <<EOF
541 #line __oline__ "configure"
542 #include "confdefs.h"
544 #include XPM_H_LOCATION
545 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
547 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
548 grep '^"%%%"' 2>/dev/null | \
549 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
550 case "$lyx_cv_xpmr" in
552 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
553 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
557 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
559 case "$lyx_cv_xpmr" in
561 [789]|[0-9][0-9]*) ;;
563 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
564 If you experience strange crashes with LyX, try to upgrade
565 to at least version 4.7 (aka 3.4g).
566 If you have installed a newer version of the library, check whether you
567 have an old xpm.h header file in your include path.]);;
572 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
573 AC_DEFUN(LYX_PATH_XFORMS,[
574 ### Check for xforms library
575 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
576 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
577 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
579 ### Check for xforms headers
580 lyx_cv_forms_h_location="<forms.h>"
581 AC_CHECK_HEADER(X11/forms.h,[
582 ac_cv_header_forms_h=yes
583 lyx_cv_forms_h_location="<X11/forms.h>"],[
584 AC_CHECK_HEADER(forms.h,[],[
585 LYX_LIB_ERROR(forms.h,forms)])])
586 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
587 if test $ac_cv_header_forms_h = yes; then
588 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
589 [ cat > conftest.$ac_ext <<EOF
590 #line __oline__ "configure"
591 #include "confdefs.h"
593 #include FORMS_H_LOCATION
594 #if ! defined(FL_INCLUDE_VERSION)
597 "%%%"FL_VERSION.FL_REVISION"%%%"
600 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
601 grep '^"%%%"' 2>/dev/null | \
602 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
604 case "$lyx_cv_xfversion" in
605 "(unknown)"|0.8[1-7])
607 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
608 This version of LyX works best with versions 0.88 (recommended) and later.) ;;
610 0.89) LYX_WARNING(dnl
611 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
612 it is an unproven version and might still have some bugs. If you
613 have problems[,] please use version 0.88 instead.) ;;
615 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
616 since it is newer than 0.88. You might have slight problems with it.);;
621 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
623 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
624 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
625 os=`uname -s | tr '[A-Z]' '[a-z]'`
627 test "$os" = hp-ux && ac_cv_hpux=yes])
628 if test "$ac_cv_hpux" = yes; then
629 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
633 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
636 [#The headers are not correct under SunOS4
637 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
639 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
640 changequote([, ]) dnl
642 test "$os" = SunOS4 && ac_cv_sunos4=yes])
643 if test "$ac_cv_sunos4" = yes; then
644 test "x$GXX" = xyes && lyx_broken_headers=yes
648 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
651 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
653 if test `uname -s` != "SCO_SV"; then
654 lyx_machine_rel=`uname -m`:`uname -r`
655 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
657 if test -f /usr/options/cb.name; then
659 elif /bin/uname -X 2>/dev/null >/dev/null ; then
664 if test "$ac_cv_sco" = yes; then
665 test "x$GXX" = xyes && lyx_broken_headers=yes
668 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
669 dnl Checks whether putenv() takes 'char const *' or 'char *' as
670 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
671 dnl while everybody else uses the former...
672 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
673 [AC_MSG_CHECKING([type of argument for putenv()])
674 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
676 [#include <cstdlib>],
677 [char const * foo = "bar";
679 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
680 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
681 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
682 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
685 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
686 dnl [default-yes-value])
687 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
688 dnl resulting directory name in 'dir-var-name'.
689 AC_DEFUN(LYX_WITH_DIR,[
690 AC_ARG_WITH($1,[ --with-$1 specify $2])
691 AC_MSG_CHECKING([for $2])
692 if test -z "$with_$3"; then
693 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
695 test "x$with_$3" = xyes && with_$3=$5
698 AC_MSG_RESULT($lyx_cv_$3)])
701 dnl Usage: LYX_LOOP_DIR(value,action)
702 dnl Executes action for values of variable `dir' in `values'. `values' can
703 dnl use ":" as a separator.
704 AC_DEFUN(LYX_LOOP_DIR,[
705 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
706 for dir in `eval "echo $1"`; do
707 if test ! "$dir" = NONE; then
708 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
716 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
718 AC_DEFUN(LYX_ADD_LIB_DIR,[
720 if test "`(uname) 2>/dev/null`" = SunOS &&
721 uname -r | grep '^5' >/dev/null; then
722 if test $ac_cv_prog_gxx = yes ; then
723 $1="${$1} -Wl[,]-R$2"
730 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
732 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
734 ### Check which libsigc++ we're using and make sure any external one works
735 ### Check for libsigc++ library
736 AC_DEFUN(LYX_WITH_SIGC,
737 [AC_MSG_CHECKING(whether the included libsigc++ should be used)
738 AC_ARG_WITH([included-libsigc],
739 [ --without-included-libsigc
740 Use the libsigc++ installed on the system],
741 [lyx_use_included_libsigc=$withval],
742 [lyx_use_included_libsigc=yes])
743 AC_MSG_RESULT([$lyx_use_included_libsigc])
744 if test x$lyx_use_included_libsigc = xno; then
745 ### Check for libsigc++
746 ## can't use AC_SUBST right here!
751 [Cannot find libsigc++ library or headers at least as recent as 0.8.7.
752 Check your installation. Have you installed the development package?])
755 ### Use the included libsigc++
756 ### sigc-config hasn't been created yet so we can't just do the same as above
757 ### unless of course someone gets keen and merges the sigc++ configure.in
758 ### with this one. We don't really gain much by doing that though except
759 ### a considerably smaller dist and more difficult maintenance.
760 ### It'd also mean we'd have the equivalent of config/gettext.m4
761 lyx_flags="$lyx_flags included-libsigc"
762 SIGC_LIBS="\`\${top_builddir}/sigc++/sigc-config --libs-names | sed -e 's/-lsigc//'\`"
763 # Libsigc++ always installs into a subdirectory called sigc++. Therefore we
764 # have to always use #include <sigc++/signal_system.h> in our code.
765 # Remember if you decide to do anything to the sigc++ code to do your mods on
766 # the makeLyXsigc.sh script in development/tools using a current cvs checkout
767 # of libsigc++. A tarball distribution doesn't have everything in it that we
769 # We need both these -I entries to build when builddir != srcdir
770 if test "x$src_dir" = "x." ; then
771 SIGC_CFLAGS="-I\${top_srcdir}"
773 SIGC_CFLAGS="-I\${top_builddir} -I\${top_srcdir}"
775 INCLUDED_SIGC="\${top_builddir}/sigc++/libsigc.la"
776 ## can't substitute these here like this otherwise all remaining tests fail
777 ## instead we SUBST directly into the Makefiles
778 ##LIBS="$LIBS \$SIGC_LIBS"
779 ##CPPFLAGS="$CPPFLAGS \$SIGC_CFLAGS"
781 AC_SUBST(SIGC_CFLAGS)
783 AC_SUBST(INCLUDED_SIGC)
786 ### Check for a headers existence and location iff it exists
787 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
788 ## It almost works. I've tried a few variations but they give errors
789 ## of one sort or other: bad substitution or file not found etc. The
790 ## actual header _is_ found though and the cache variable is set however
791 ## the reported setting (on screen) is equal to $ac_safe for some unknown
793 ## Additionally, autoheader can't figure out what to use as the name in
794 ## the config.h.in file so we need to write our own entries there -- one for
795 ## each header in the form PATH_HEADER_NAME_H
797 AC_DEFUN(LYX_PATH_HEADER,
798 [ AC_CHECK_HEADER($1,[
799 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
800 ### the only remaining problem is getting the second parameter to this
801 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
802 ### of $ac_safe being printed.
803 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
804 [ cat > conftest.$ac_ext <<EOF
805 #line __oline__ "configure"
806 #include "confdefs.h"
810 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
811 grep $1 2>/dev/null | \
812 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
813 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
815 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path)])
817 ### end of LYX_PATH_HEADER
819 ### Check for stl_string_fwd.h existence and location if it exists
820 AC_DEFUN(LYX_STL_STRING_FWD,
821 [ AC_CHECK_HEADER(stl_string_fwd.h,[
822 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
823 [ cat > conftest.$ac_ext <<EOF
824 #line __oline__ "configure"
825 #include "confdefs.h"
827 #include <stl_string_fwd.h>
829 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
830 grep 'stl_string_fwd.h' 2>/dev/null | \
831 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
833 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
834 [define this to the location of stl_string_fwd.h to be used with #include,
835 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
836 supplied version of the header.
837 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
841 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
842 dnl if the cache file is inconsistent with the current host,
843 dnl target and build system types, execute CMD or print a default
845 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
846 AC_REQUIRE([AC_CANONICAL_SYSTEM])
847 AC_MSG_CHECKING([config.cache system type])
848 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
849 test x"$ac_cv_host_system_type" != x"$host"; } ||
850 { test x"${ac_cv_build_system_type+set}" = x"set" &&
851 test x"$ac_cv_build_system_type" != x"$build"; } ||
852 { test x"${ac_cv_target_system_type+set}" = x"set" &&
853 test x"$ac_cv_target_system_type" != x"$target"; }; then
854 AC_MSG_RESULT([different])
856 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
858 AC_MSG_RESULT([same])
860 ac_cv_host_system_type="$host"
861 ac_cv_build_system_type="$build"
862 ac_cv_target_system_type="$target"
865 dnl We use this until autoconf fixes its version.
866 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
867 [AC_MSG_CHECKING([types of arguments for select()])
868 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
869 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
870 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
871 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
872 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
874 [#ifdef HAVE_SYS_TYPES_H
875 #include <sys/types.h>
877 #ifdef HAVE_SYS_TIME_H
878 #include <sys/time.h>
880 #ifdef HAVE_SYS_SELECT_H
881 #include <sys/select.h>
883 #ifdef HAVE_SYS_SOCKET_H
884 #include <sys/socket.h>
886 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
887 [ac_not_found=no ; break 3],ac_not_found=yes)
894 if test "$ac_not_found" = yes; then
895 ac_cv_func_select_arg1=int
896 ac_cv_func_select_arg234='int *'
897 ac_cv_func_select_arg5='struct timeval *'
899 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
900 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1)
901 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234))
902 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5))
905 ### Check which frontend we want to use. The default is XForms
907 AC_DEFUN(LYX_USE_FRONTEND,
908 [AC_MSG_CHECKING(what frontend should be used as main GUI)
909 AC_ARG_WITH(frontend,
910 [ --with-frontend[=value] Use THIS frontend as main GUI:
911 Possible values: xforms,kde,gnome],
912 [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"])
913 AC_MSG_RESULT($lyx_use_frontend)
914 lyx_flags="$lyx_flags frontend-$lyx_use_frontend"
916 AC_SUBST(FRONTEND_GUILIB)
917 AC_SUBST(FRONTEND_LDFLAGS)
918 AC_SUBST(FRONTEND_INCLUDES)
919 AC_SUBST(FRONTEND_LIBS)