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 ### We might want to get or shut warnings.
180 AC_ARG_ENABLE(warnings,
181 [ --enable-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$enable_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 ### set up optimization
195 AC_ARG_ENABLE(optimization,
196 [ --enable-optimization[=value] enable compiler optimisation],,
197 enable_optimization=yes;)
198 case $enable_optimization in
201 *) lyx_opt=${enable_optimization};;
204 # set the debug flags correctly.
205 if test $ac_cv_prog_gxx = yes; then
207 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
208 dnl plays around with CXXFLAGS (such as to build both debugging and
209 dnl normal versions of a library), tasteless as that idea is.
210 ac_test_CXXFLAGS="${CXXFLAGS+set}"
211 ac_save_CXXFLAGS="$CXXFLAGS"
213 dnl Check the version of g++
214 gxx_version=`${CXX} --version`
217 if test "$ac_test_CXXFLAGS" = set; then
218 CXXFLAGS="$ac_save_CXXFLAGS"
219 elif test $ac_cv_prog_cxx_g = yes; then
221 2.95.1) CXXFLAGS="-g $lyx_opt -fpermissive -fno-rtti -fno-exceptions";;
222 2.95.2) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
223 2.95.*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
224 2.96*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
225 3.0*) CXXFLAGS="-g $lyx_opt";;
226 *2.91.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
227 *) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
232 if test x$enable_warnings = xyes ; then
234 2.95.*) CXXFLAGS="$CXXFLAGS -W -Wall";;
235 2.96*) CXXFLAGS="$CXXFLAGS -W -Wall";;
236 *) CXXFLAGS="$CXXFLAGS -W -Wall";;
238 if test $lyx_devel_version = yes ; then
250 test "${CXXFLAGS+set}" = set || CXXFLAGS=""
255 dnl NOT USED CURRENTLY*************************************
256 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
258 AC_DEFUN(LYX_CXX_RTTI,[
259 ### Check whether the compiler supports runtime type information
260 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
264 virtual int tag() { return 0; }
266 class derived1 : public rtti {
268 int tag() { return 1; }
270 class derived2 : public rtti {
272 int tag() { return 2; }
275 derived1 * foo1 = new derived1();
276 derived2 * foo2 = new derived2();
278 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
282 bar1 = dynamic_cast<derived1 *>(bar);
287 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
289 if test x$lyx_cv_rtti = xyes ; then
290 AC_DEFINE(HAVE_RTTI, 1,
291 [Define to 1 if your compiler supports runtime type information])
295 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
296 dnl understands the "explicit" directive.
297 AC_DEFUN(LYX_CXX_EXPLICIT,[
298 ### Check whether the compiler understands the keyword `explicit'
299 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
304 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
306 if test $lyx_cv_explicit = no ; then
307 AC_DEFINE(explicit,[ ],
308 [Define to nothing if your compiler does not understand the
309 'explicit' directive])
313 dnl NOT USED CURRENTLY*************************************
314 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
315 dnl has a working stl stack template
316 AC_DEFUN(LYX_CXX_STL_STACK,[
317 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
324 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
326 if test $lyx_cv_broken_stack = yes ; then
327 AC_DEFINE(BROKEN_STL_STACK, 1,
328 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
333 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
334 dnl count template, if not the old HP version is assumed.
335 AC_DEFUN(LYX_STD_COUNT,[
336 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
340 int countChar(char * b, char * e, char const c)
342 return count(b, e, c);
346 int i = countChar(a, a + 5, 'l');
347 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
349 if test $lyx_cv_std_count = yes ; then
350 AC_DEFINE(HAVE_STD_COUNT, 1,
351 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
355 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
356 dnl supports modern STL streams
357 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
358 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
362 std::streambuf * test = std::cerr.rdbuf();
364 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
366 if test $lyx_cv_modern_streams = yes ; then
367 AC_DEFINE(MODERN_STL_STREAMS, 1,
368 [Define if you have modern standard-compliant STL streams])
372 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
373 dnl has a std::string that is usable for LyX. LyX does not require this
374 dnl std::string to be standard.
375 AC_DEFUN(LYX_CXX_STL_STRING,[
376 AC_REQUIRE([LYX_PROG_CXX])
377 AC_MSG_CHECKING(whether the included std::string should be used)
378 AC_ARG_WITH(included-string,
379 [ --with-included-string use LyX string class instead of STL string],
380 [lyx_cv_with_included_string=$withval
381 AC_MSG_RESULT([$with_included_string])],
382 [AC_CACHE_CHECK([],lyx_cv_with_included_string,
387 // LyX has reduced its requirements on the basic_string
388 // implementation so that the basic_string supplied
389 // with gcc is usable. In particular this means that
390 // lyx does not use std::string::clear and not the
391 // strncmp version of std::string::compare. This is mainly
392 // done so that LyX can use precompiled C++ libraries that
393 // already uses the systems basic_string, e.g. gtk--
394 string a("hello there");
398 //int t = a.compare(a.length() - 1, 1, s);
401 lyx_cv_with_included_string=no
403 lyx_cv_with_included_string=yes
407 if test x$lyx_cv_with_included_string = xyes ; then
408 AC_DEFINE(USE_INCLUDED_STRING, 1,
409 [Define to use the lyxstring class bundled with LyX.])
410 lyx_flags="$lyx_flags included-string"
412 AM_CONDITIONAL(USE_LYXSTRING, test x$lyx_cv_with_included_string = xyes)
413 dnl AC_MSG_RESULT([$with_included_string])
417 dnl Usage: LYX_CXX_GOOD_STD_STRING : checks whether the C++ compiler
418 dnl has a std::string that is close to the standard. So close that
419 dnl methods not found in "unstandard" std::strings are present here.
420 AC_DEFUN(LYX_CXX_GOOD_STD_STRING,[
421 AC_REQUIRE([LYX_PROG_CXX])
422 AC_CACHE_CHECK([whether the systems std::string is really good],
423 [lyx_cv_std_string_good],
428 // From a std::string that is supposed to be close to the
429 // standard we require at least three things:
430 // - clear() and erase()
431 // - the strncmp of compare()
433 string a("hello there");
437 int t = a.compare(a.length() - 1, 1, s);
441 lyx_cv_std_string_good=yes
443 lyx_cv_std_string_good=no
447 if test x$lyx_cv_std_string_good = xyes ; then
448 AC_DEFINE(STD_STRING_IS_GOOD, 1,
449 [Define if the systems std::string is really good.])
454 dnl Usage: LYX_REGEX : checks if the header regex.h is available
455 dnl if it is not available the automake variable USE_REGEX will be
456 dnl defined and the regex.h and regex.c that we provide will be used.
458 AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
459 AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
462 dnl NOT USED CURRENTLY*************************************
464 AC_DEFUN(LYX_CXX_PARTIAL, [
465 AC_REQUIRE([LYX_PROG_CXX])
466 AC_CACHE_CHECK([if C++ compiler supports partial specialization],
467 [lyx_cv_cxx_partial_specialization],
470 template<class T, class K>
474 template<class T> class k<void,T> { };
479 lyx_cv_cxx_partial_specialization=yes
481 lyx_cv_cxx_partial_specialization=no
484 if test x$lyx_cv_cxx_partial_specialization = xyes ; then
485 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
486 [Defined if your compiler supports partial specialization.])
491 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
492 dnl provides wrappers for C headers and use our alternate version otherwise.
493 AC_DEFUN(LYX_CXX_CHEADERS,[
494 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
504 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
505 if test $lyx_cv_cxx_cheaders = no ; then
506 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
509 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
510 dnl are already in the global namespace
511 AC_DEFUN(LYX_CXX_GLOBAL_CSTD,[
512 AC_CACHE_CHECK(whether C library functions are already in the global namespace,
513 lyx_cv_cxx_global_cstd,
519 ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
520 if test x$lyx_cv_cxx_global_cstd = xyes; then
521 AC_DEFINE(CXX_GLOBAL_CSTD,1,
522 [Define if your C++ compiler puts C library functions in the global namespace])
526 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
527 AC_DEFUN(LYX_PATH_XPM,[
528 ### Check for Xpm library
529 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
530 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
532 ### Check for Xpm headers
533 lyx_cv_xpm_h_location="<xpm.h>"
534 AC_CHECK_HEADER(X11/xpm.h,[
535 ac_cv_header_xpm_h=yes
536 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
537 AC_CHECK_HEADER(xpm.h,[],[
538 LYX_LIB_ERROR(xpm.h,Xpm)])])
539 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
541 ### Test for the header version
542 if test $ac_cv_header_xpm_h = yes; then
543 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
544 [ cat > conftest.$ac_ext <<EOF
545 #line __oline__ "configure"
546 #include "confdefs.h"
548 #include XPM_H_LOCATION
549 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
551 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
552 grep '^"%%%"' 2>/dev/null | \
553 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
554 case "$lyx_cv_xpmr" in
556 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
557 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
561 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
563 case "$lyx_cv_xpmr" in
565 [789]|[0-9][0-9]*) ;;
567 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
568 If you experience strange crashes with LyX, try to upgrade
569 to at least version 4.7 (aka 3.4g).
570 If you have installed a newer version of the library, check whether you
571 have an old xpm.h header file in your include path.]);;
576 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
577 AC_DEFUN(LYX_PATH_XFORMS,[
578 ### Check for xforms library
579 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
580 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
581 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
583 ### Check for xforms headers
584 lyx_cv_forms_h_location="<forms.h>"
585 AC_CHECK_HEADER(X11/forms.h,[
586 ac_cv_header_forms_h=yes
587 lyx_cv_forms_h_location="<X11/forms.h>"],[
588 AC_CHECK_HEADER(forms.h,[],[
589 LYX_LIB_ERROR(forms.h,forms)])])
590 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
591 if test $ac_cv_header_forms_h = yes; then
592 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
593 [ cat > conftest.$ac_ext <<EOF
594 #line __oline__ "configure"
595 #include "confdefs.h"
597 #include FORMS_H_LOCATION
598 #if ! defined(FL_INCLUDE_VERSION)
601 "%%%"FL_VERSION.FL_REVISION.FL_FIXLEVEL"%%%"
604 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
605 grep '^"%%%"' 2>/dev/null | \
606 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
608 case "$lyx_cv_xfversion" in
609 "(unknown)"|0.8[1-7]*)
611 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
612 This version of LyX works best with versions 0.88 (recommended) and later.) ;;
614 0.89[01234]) LYX_WARNING(dnl
615 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
616 it is an unproven version and might still have some bugs. You should
617 probably use version 0.89.6 (or 0.88) instead) ;;
620 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
621 since it is newer than 0.88. You might have slight problems with it.);;
626 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
628 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
629 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
630 os=`uname -s | tr '[A-Z]' '[a-z]'`
632 test "$os" = hp-ux && ac_cv_hpux=yes])
633 if test "$ac_cv_hpux" = yes; then
634 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
638 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
641 [#The headers are not correct under SunOS4
642 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
644 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
645 changequote([, ]) dnl
647 test "$os" = SunOS4 && ac_cv_sunos4=yes])
648 if test "$ac_cv_sunos4" = yes; then
649 test "x$GXX" = xyes && lyx_broken_headers=yes
653 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
656 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
658 if test `uname -s` != "SCO_SV"; then
659 lyx_machine_rel=`uname -m`:`uname -r`
660 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
662 if test -f /usr/options/cb.name; then
664 elif /bin/uname -X 2>/dev/null >/dev/null ; then
669 if test "$ac_cv_sco" = yes; then
670 test "x$GXX" = xyes && lyx_broken_headers=yes
673 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
674 dnl Checks whether putenv() takes 'char const *' or 'char *' as
675 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
676 dnl while everybody else uses the former...
677 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
678 [AC_MSG_CHECKING([type of argument for putenv()])
679 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
681 [#include <cstdlib>],
682 [char const * foo = "bar";
684 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
685 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
686 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
687 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
690 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
691 dnl [default-yes-value])
692 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
693 dnl resulting directory name in 'dir-var-name'.
694 AC_DEFUN(LYX_WITH_DIR,[
695 AC_ARG_WITH($1,[ --with-$1 specify $2])
696 AC_MSG_CHECKING([for $2])
697 if test -z "$with_$3"; then
698 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
700 test "x$with_$3" = xyes && with_$3=$5
703 AC_MSG_RESULT($lyx_cv_$3)])
706 dnl Usage: LYX_LOOP_DIR(value,action)
707 dnl Executes action for values of variable `dir' in `values'. `values' can
708 dnl use ":" as a separator.
709 AC_DEFUN(LYX_LOOP_DIR,[
710 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
711 for dir in `eval "echo $1"`; do
712 if test ! "$dir" = NONE; then
713 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
721 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
723 AC_DEFUN(LYX_ADD_LIB_DIR,[
725 if test "`(uname) 2>/dev/null`" = SunOS &&
726 uname -r | grep '^5' >/dev/null; then
727 if test $ac_cv_prog_gxx = yes ; then
728 $1="${$1} -Wl[,]-R$2"
735 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
737 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
739 ### Check which libsigc++ we're using and make sure any external one works
740 ### Check for libsigc++ library
741 AC_DEFUN(LYX_WITH_SIGC,
742 [AC_MSG_CHECKING(whether the included libsigc++ should be used)
743 AC_ARG_WITH([included-libsigc],
744 [ --without-included-libsigc
745 Use the libsigc++ installed on the system],
746 [lyx_use_included_libsigc=$withval],
747 [lyx_use_included_libsigc=yes])
748 AC_MSG_RESULT([$lyx_use_included_libsigc])
749 if test x$lyx_use_included_libsigc = xno; then
750 ### Check for libsigc++
751 ## can't use AC_SUBST right here!
756 [Cannot find libsigc++ library or headers at least as recent as 0.8.7.
757 Check your installation. Have you installed the development package?])
760 ### Use the included libsigc++
761 ### sigc-config hasn't been created yet so we can't just do the same as above
762 ### unless of course someone gets keen and merges the sigc++ configure.in
763 ### with this one. We don't really gain much by doing that though except
764 ### a considerably smaller dist and more difficult maintenance.
765 ### It'd also mean we'd have the equivalent of config/gettext.m4
766 lyx_flags="$lyx_flags included-libsigc"
767 SIGC_LIBS="\`\${top_builddir}/sigc++/sigc-config --libs-names | sed -e 's/-lsigc//'\`"
768 # Libsigc++ always installs into a subdirectory called sigc++. Therefore we
769 # have to always use #include <sigc++/signal_system.h> in our code.
770 # Remember if you decide to do anything to the sigc++ code to do your mods on
771 # the makeLyXsigc.sh script in development/tools using a current cvs checkout
772 # of libsigc++. A tarball distribution doesn't have everything in it that we
774 # We need both these -I entries to build when builddir != srcdir
775 if test "x$src_dir" = "x." ; then
776 SIGC_CFLAGS="-I\${top_srcdir}"
778 SIGC_CFLAGS="-I\${top_builddir} -I\${top_srcdir}"
780 INCLUDED_SIGC="\${top_builddir}/sigc++/libsigc.la"
781 ## can't substitute these here like this otherwise all remaining tests fail
782 ## instead we SUBST directly into the Makefiles
783 ##LIBS="$LIBS \$SIGC_LIBS"
784 ##CPPFLAGS="$CPPFLAGS \$SIGC_CFLAGS"
786 AC_SUBST(SIGC_CFLAGS)
788 AC_SUBST(INCLUDED_SIGC)
791 ### Check for a headers existence and location iff it exists
792 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
793 ## It almost works. I've tried a few variations but they give errors
794 ## of one sort or other: bad substitution or file not found etc. The
795 ## actual header _is_ found though and the cache variable is set however
796 ## the reported setting (on screen) is equal to $ac_safe for some unknown
798 ## Additionally, autoheader can't figure out what to use as the name in
799 ## the config.h.in file so we need to write our own entries there -- one for
800 ## each header in the form PATH_HEADER_NAME_H
802 AC_DEFUN(LYX_PATH_HEADER,
803 [ AC_CHECK_HEADER($1,[
804 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
805 ### the only remaining problem is getting the second parameter to this
806 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
807 ### of $ac_safe being printed.
808 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
809 [ cat > conftest.$ac_ext <<EOF
810 #line __oline__ "configure"
811 #include "confdefs.h"
815 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
816 grep $1 2>/dev/null | \
817 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
818 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
820 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path)])
822 ### end of LYX_PATH_HEADER
824 ### Check for stl_string_fwd.h existence and location if it exists
825 AC_DEFUN(LYX_STL_STRING_FWD,
826 [ AC_CHECK_HEADER(stl_string_fwd.h,[
827 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
828 [ cat > conftest.$ac_ext <<EOF
829 #line __oline__ "configure"
830 #include "confdefs.h"
832 #include <stl_string_fwd.h>
834 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
835 grep 'stl_string_fwd.h' 2>/dev/null | \
836 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
838 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
839 [define this to the location of stl_string_fwd.h to be used with #include,
840 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
841 supplied version of the header.
842 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
846 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
847 dnl if the cache file is inconsistent with the current host,
848 dnl target and build system types, execute CMD or print a default
850 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
851 AC_REQUIRE([AC_CANONICAL_SYSTEM])
852 AC_MSG_CHECKING([config.cache system type])
853 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
854 test x"$ac_cv_host_system_type" != x"$host"; } ||
855 { test x"${ac_cv_build_system_type+set}" = x"set" &&
856 test x"$ac_cv_build_system_type" != x"$build"; } ||
857 { test x"${ac_cv_target_system_type+set}" = x"set" &&
858 test x"$ac_cv_target_system_type" != x"$target"; }; then
859 AC_MSG_RESULT([different])
861 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
863 AC_MSG_RESULT([same])
865 ac_cv_host_system_type="$host"
866 ac_cv_build_system_type="$build"
867 ac_cv_target_system_type="$target"
870 dnl We use this until autoconf fixes its version.
871 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
872 [AC_MSG_CHECKING([types of arguments for select()])
873 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
874 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
875 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
876 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
877 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
879 [#ifdef HAVE_SYS_TYPES_H
880 #include <sys/types.h>
882 #ifdef HAVE_SYS_TIME_H
883 #include <sys/time.h>
885 #ifdef HAVE_SYS_SELECT_H
886 #include <sys/select.h>
888 #ifdef HAVE_SYS_SOCKET_H
889 #include <sys/socket.h>
891 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
892 [ac_not_found=no ; break 3],ac_not_found=yes)
899 if test "$ac_not_found" = yes; then
900 ac_cv_func_select_arg1=int
901 ac_cv_func_select_arg234='int *'
902 ac_cv_func_select_arg5='struct timeval *'
904 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
905 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1)
906 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234))
907 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5))
910 ### Check which frontend we want to use. The default is XForms
912 AC_DEFUN(LYX_USE_FRONTEND,
913 [AC_MSG_CHECKING(what frontend should be used as main GUI)
914 AC_ARG_WITH(frontend,
915 [ --with-frontend=THIS Use THIS frontend as main GUI:
916 Possible values: xforms, qt2, gnome],
917 [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"])
918 AC_MSG_RESULT($lyx_use_frontend)
919 lyx_flags="$lyx_flags frontend-$lyx_use_frontend"
921 AC_SUBST(FRONTEND_GUILIB)
922 AC_SUBST(FRONTEND_LDFLAGS)
923 AC_SUBST(FRONTEND_INCLUDES)
924 AC_SUBST(FRONTEND_LIBS)
928 dnl Check things are declared in headers to avoid errors or warnings.
929 dnl Called like LYX_CHECK_DECL(function, headerfile)
930 dnl Defines HAVE_DECL_{FUNCTION}
931 AC_DEFUN(LYX_CHECK_DECL,
932 [AC_MSG_CHECKING(if $1 is declared by header $2)
933 tr_func=`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
935 tr_hdr=`echo $2 | tr . _`
936 AC_CACHE_VAL([lyx_cv_declare_${tr_hdr}_$1],
937 [AC_EGREP_HEADER($1, $2, [eval "lyx_cv_declare_${tr_hdr}_$1=yes"], [eval "lyx_cv_declare_${tr_hdr}_$1=no"])])
938 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
939 AC_DEFINE_UNQUOTED(HAVE_DECL_${tr_func})
945 dnl This is the multiple headers version of the LYX_CHECK_DECL macro above.
946 dnl Called like LYX_CHECK_DECL_HDRS(function, file1 file2 file3)
947 AC_DEFUN(LYX_CHECK_DECL_HDRS,
950 tr_hdr=`echo $I | tr . _`
951 if test "${got}" = "no"; then
952 LYX_CHECK_DECL($1, $I)
954 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
960 ## ------------------------------------------------------------------------
961 ## Find a file (or one of more files in a list of dirs)
962 ## ------------------------------------------------------------------------
964 AC_DEFUN(AC_FIND_FILE,
971 if test -r "$i/$j"; then
979 dnl just a wrapper to clean up configure.in
980 AC_DEFUN(LYX_PROG_LIBTOOL,
982 AC_REQUIRE([AC_ENABLE_SHARED])
983 AC_REQUIRE([AC_ENABLE_STATIC])
984 dnl libtool is only for C, so I must force him
985 dnl to find the correct flags for C++
987 ac_save_cflags="$CFLAGS"
990 AM_PROG_LIBTOOL dnl for libraries
992 CFLAGS="$ac_save_cflags"