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_CHECK_VERSION Displays version of LyX being built and
8 dnl sets variables "lyx_devel_version" and "lyx_prerelease"
9 AC_DEFUN(LYX_CHECK_VERSION,[
11 echo "configuring LyX version $VERSION"
12 if echo "$VERSION" | grep 'cvs' >/dev/null ; then
14 echo "WARNING: This is a development version. Expect bugs."
18 if echo "$VERSION" | grep 'pre' > /dev/null ; then
20 echo "WARNING: This is a prerelease. Be careful and backup your documents."
25 AC_SUBST(lyx_devel_version)
26 if test $lyx_devel_version = yes ; then
27 AC_DEFINE(DEVEL_VERSION, 1, Define if you are building a development version of LyX)
31 dnl Define the option to set a LyX version on installed executables and directories
34 AC_DEFUN(LYX_VERSION_SUFFIX,[
35 AC_MSG_CHECKING([for install target ... ])
36 AC_ARG_WITH(version-suffix,
37 [ --with-version-suffix[=<version>] install lyx files as lyx<version>],
38 [if test "x$withval" = "xyes";
41 ac_configure_args=`echo $ac_configure_args | sed "s,--with-version-suffix,--with-version-suffix=$withval,"`
44 program_suffix=$withval],
46 AC_MSG_RESULT([$lyxname])
49 dnl Usage: LYX_ERROR(message) Displays the warning "message" and sets the
50 dnl flag lyx_error to yes.
52 lyx_error_txt="$lyx_error_txt
58 dnl Usage: LYX_WARNING(message) Displays the warning "message" and sets the
59 dnl flag lyx_warning to yes.
60 AC_DEFUN(LYX_WARNING,[
61 lyx_warning_txt="$lyx_warning_txt
67 dnl Usage: LYX_LIB_ERROR(file,library) Displays an error message indication
68 dnl that 'file' cannot be found because 'lib' may be uncorrectly installed.
69 AC_DEFUN(LYX_LIB_ERROR,[
70 LYX_ERROR([Cannot find $1. Please check that the $2 library
71 is correctly installed on your system.])])
74 dnl Usage: LYX_CHECK_ERRORS Displays a warning message if a LYX_ERROR
75 dnl has occured previously.
76 AC_DEFUN(LYX_CHECK_ERRORS,[
77 if test x$lyx_error = xyes; then
79 **** The following problems have been detected by configure.
80 **** Please check the messages below before running 'make'.
81 **** (see the section 'Problems' in the INSTALL file)
84 deleting cache $cache_file
89 if test x$lyx_warning = xyes; then
91 === The following minor problems have been detected by configure.
92 === Please check the messages below before running 'make'.
93 === (see the section 'Problems' in the INSTALL file)
98 Configuration of LyX was successful.
99 Type 'make' to compile the program,
100 and then 'make install' to install it.
105 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
107 define(LYX_SEARCH_PROG,[dnl
108 for ac_prog in $2 ; do
109 # Extract the first word of "$ac_prog", so it can be a program name with args.
110 set dummy $ac_prog ; ac_word=$[2]
111 if test -z "[$]$1"; then
112 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
113 for ac_dir in $PATH; do
114 test -z "$ac_dir" && ac_dir=.
115 if test -f [$ac_dir/$ac_word]; then
123 if test -n "[$]$1"; then
129 test -n "[$]$1" && break
134 AC_DEFUN(LYX_PROG_CXX_WORKS,
139 // we require the mutable keyword
142 // we require namespace support
149 ], ac_cv_prog_cxx_works, ac_cv_prog_cxx_cross)
151 if test $ac_cv_prog_cxx_works = no; then
154 cross_compiling=$ac_cv_prog_cxx_cross
158 AC_DEFUN(LYX_PROG_CXX,
159 [AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
160 AC_MSG_CHECKING([for a working C++ compiler])
161 LYX_SEARCH_PROG(CXX, $CCC g++ gcc c++ CC cxx xlC cc++, LYX_PROG_CXX_WORKS)
163 if test -z "$CXX" ; then
164 AC_ERROR([Unable to find a working C++ compiler])
170 AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])
171 AC_MSG_RESULT($cross_compiling)
175 ### We might want to get or shut warnings.
176 AC_ARG_ENABLE(warnings,
177 [ --enable-warnings tell the compiler to display more warnings],,
178 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
183 if test x$enable_warnings = xyes ; then
184 lyx_flags="$lyx_flags warnings"
185 AC_DEFINE(WITH_WARNINGS, 1,
186 [Define this if you want to see the warning directives put here and
187 there by the developpers to get attention])
190 ### set up optimization
191 AC_ARG_ENABLE(optimization,
192 [ --enable-optimization[=value] enable compiler optimisation],,
193 enable_optimization=yes;)
194 case $enable_optimization in
197 *) lyx_opt=${enable_optimization};;
200 # set the debug flags correctly.
201 if test $ac_cv_prog_gxx = yes; then
203 dnl Check whether -g works, even if CXXFLAGS is set, in case the package
204 dnl plays around with CXXFLAGS (such as to build both debugging and
205 dnl normal versions of a library), tasteless as that idea is.
206 ac_test_CXXFLAGS="${CXXFLAGS+set}"
207 ac_save_CXXFLAGS="$CXXFLAGS"
209 dnl Check the version of g++
210 gxx_version=`${CXX} --version`
211 dnl Useful for global version info
212 CXX_VERSION="($gxx_version)"
215 if test "$ac_test_CXXFLAGS" = set; then
216 CXXFLAGS="$ac_save_CXXFLAGS"
217 elif test $ac_cv_prog_cxx_g = yes; then
219 2.95.1) CXXFLAGS="-g $lyx_opt -fpermissive -fno-rtti -fno-exceptions";;
220 2.95.2) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
221 2.95.*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
222 2.96*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
223 3.0*) CXXFLAGS="-g $lyx_opt";;
224 *2.91.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
225 *) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
230 if test x$enable_warnings = xyes ; then
232 2.95.*) CXXFLAGS="$CXXFLAGS -W -Wall";;
233 2.96*) CXXFLAGS="$CXXFLAGS -W -Wall";;
234 *) CXXFLAGS="$CXXFLAGS -W -Wall";;
236 if test $lyx_devel_version = yes ; then
248 test "${CXXFLAGS+set}" = set || CXXFLAGS=""
253 dnl NOT USED CURRENTLY*************************************
254 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
256 AC_DEFUN(LYX_CXX_RTTI,[
257 ### Check whether the compiler supports runtime type information
258 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
262 virtual int tag() { return 0; }
264 class derived1 : public rtti {
266 int tag() { return 1; }
268 class derived2 : public rtti {
270 int tag() { return 2; }
273 derived1 * foo1 = new derived1();
274 derived2 * foo2 = new derived2();
276 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
280 bar1 = dynamic_cast<derived1 *>(bar);
285 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
287 if test x$lyx_cv_rtti = xyes ; then
288 AC_DEFINE(HAVE_RTTI, 1,
289 [Define to 1 if your compiler supports runtime type information])
293 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
294 dnl understands the "explicit" directive.
295 AC_DEFUN(LYX_CXX_EXPLICIT,[
296 ### Check whether the compiler understands the keyword `explicit'
297 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
302 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
304 if test $lyx_cv_explicit = no ; then
305 AC_DEFINE(explicit,[ ],
306 [Define to nothing if your compiler does not understand the
307 'explicit' directive])
311 dnl NOT USED CURRENTLY*************************************
312 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
313 dnl has a working stl stack template
314 AC_DEFUN(LYX_CXX_STL_STACK,[
315 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
322 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
324 if test $lyx_cv_broken_stack = yes ; then
325 AC_DEFINE(BROKEN_STL_STACK, 1,
326 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
331 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
332 dnl count template, if not the old HP version is assumed.
333 AC_DEFUN(LYX_STD_COUNT,[
334 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
338 int countChar(char * b, char * e, char const c)
340 return count(b, e, c);
344 int i = countChar(a, a + 5, 'l');
345 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
347 if test $lyx_cv_std_count = yes ; then
348 AC_DEFINE(HAVE_STD_COUNT, 1,
349 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
353 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
354 dnl supports modern STL streams
355 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
356 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
360 std::streambuf * test = std::cerr.rdbuf();
362 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
364 if test $lyx_cv_modern_streams = yes ; then
365 AC_DEFINE(MODERN_STL_STREAMS, 1,
366 [Define if you have modern standard-compliant STL streams])
370 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
371 dnl has a std::string that is usable for LyX. LyX does not require this
372 dnl std::string to be standard.
373 AC_DEFUN(LYX_CXX_STL_STRING,[
374 AC_REQUIRE([LYX_PROG_CXX])
375 AC_MSG_CHECKING(whether the included std::string should be used)
376 AC_ARG_WITH(included-string,
377 [ --with-included-string use LyX string class instead of STL string],
378 [lyx_cv_with_included_string=$withval
379 AC_MSG_RESULT([$with_included_string])],
380 [AC_CACHE_CHECK([],lyx_cv_with_included_string,
385 // LyX has reduced its requirements on the basic_string
386 // implementation so that the basic_string supplied
387 // with gcc is usable. In particular this means that
388 // lyx does not use std::string::clear and not the
389 // strncmp version of std::string::compare. This is mainly
390 // done so that LyX can use precompiled C++ libraries that
391 // already uses the systems basic_string, e.g. gtk--
392 string a("hello there");
396 //int t = a.compare(a.length() - 1, 1, s);
399 lyx_cv_with_included_string=no
401 lyx_cv_with_included_string=yes
405 if test x$lyx_cv_with_included_string = xyes ; then
406 AC_DEFINE(USE_INCLUDED_STRING, 1,
407 [Define to use the lyxstring class bundled with LyX.])
408 lyx_flags="$lyx_flags included-string"
410 AM_CONDITIONAL(USE_LYXSTRING, test x$lyx_cv_with_included_string = xyes)
411 dnl AC_MSG_RESULT([$with_included_string])
415 dnl Usage: LYX_CXX_GOOD_STD_STRING : checks whether the C++ compiler
416 dnl has a std::string that is close to the standard. So close that
417 dnl methods not found in "unstandard" std::strings are present here.
418 AC_DEFUN(LYX_CXX_GOOD_STD_STRING,[
419 AC_REQUIRE([LYX_PROG_CXX])
420 AC_CACHE_CHECK([whether the systems std::string is really good],
421 [lyx_cv_std_string_good],
426 // From a std::string that is supposed to be close to the
427 // standard we require at least three things:
428 // - clear() and erase()
429 // - the strncmp of compare()
431 string a("hello there");
435 int t = a.compare(a.length() - 1, 1, s);
439 lyx_cv_std_string_good=yes
441 lyx_cv_std_string_good=no
445 if test x$lyx_cv_std_string_good = xyes ; then
446 AC_DEFINE(STD_STRING_IS_GOOD, 1,
447 [Define if the systems std::string is really good.])
452 dnl Usage: LYX_REGEX : checks if the header regex.h is available
453 dnl if it is not available the automake variable USE_REGEX will be
454 dnl defined and the regex.h and regex.c that we provide will be used.
456 AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
457 AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
460 dnl NOT USED CURRENTLY*************************************
462 AC_DEFUN(LYX_CXX_PARTIAL, [
463 AC_REQUIRE([LYX_PROG_CXX])
464 AC_CACHE_CHECK([if C++ compiler supports partial specialization],
465 [lyx_cv_cxx_partial_specialization],
468 template<class T, class K>
472 template<class T> class k<void,T> { };
477 lyx_cv_cxx_partial_specialization=yes
479 lyx_cv_cxx_partial_specialization=no
482 if test x$lyx_cv_cxx_partial_specialization = xyes ; then
483 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
484 [Defined if your compiler supports partial specialization.])
489 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
490 dnl provides wrappers for C headers and use our alternate version otherwise.
491 AC_DEFUN(LYX_CXX_CHEADERS,[
492 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
502 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
503 if test $lyx_cv_cxx_cheaders = no ; then
504 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
507 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
508 dnl are already in the global namespace
509 AC_DEFUN(LYX_CXX_GLOBAL_CSTD,[
510 AC_CACHE_CHECK(whether C library functions are already in the global namespace,
511 lyx_cv_cxx_global_cstd,
517 ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
518 if test x$lyx_cv_cxx_global_cstd = xyes; then
519 AC_DEFINE(CXX_GLOBAL_CSTD,1,
520 [Define if your C++ compiler puts C library functions in the global namespace])
524 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
525 AC_DEFUN(LYX_PATH_XPM,[
526 ### Check for Xpm library
527 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
528 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
530 ### Check for Xpm headers
531 lyx_cv_xpm_h_location="<xpm.h>"
532 AC_CHECK_HEADER(X11/xpm.h,[
533 ac_cv_header_xpm_h=yes
534 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
535 AC_CHECK_HEADER(xpm.h,[],[
536 LYX_LIB_ERROR(xpm.h,Xpm)])])
537 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
539 ### Test for the header version
540 if test $ac_cv_header_xpm_h = yes; then
541 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
542 [ cat > conftest.$ac_ext <<EOF
543 #line __oline__ "configure"
544 #include "confdefs.h"
546 #include XPM_H_LOCATION
547 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
549 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
550 grep '^"%%%"' 2>/dev/null | \
551 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
552 case "$lyx_cv_xpmr" in
554 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
555 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
559 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
561 XPM_VERSION=${lyx_cv_xpmversion}
562 case "$lyx_cv_xpmr" in
564 [789]|[0-9][0-9]*) ;;
566 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
567 If you experience strange crashes with LyX, try to upgrade
568 to at least version 4.7 (aka 3.4g).
569 If you have installed a newer version of the library, check whether you
570 have an old xpm.h header file in your include path.]);;
575 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
576 AC_DEFUN(LYX_PATH_XFORMS,[
577 ### Check for xforms library
578 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
579 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
580 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
582 ### Check for xforms headers
583 lyx_cv_forms_h_location="<forms.h>"
584 AC_CHECK_HEADER(X11/forms.h,[
585 ac_cv_header_forms_h=yes
586 lyx_cv_forms_h_location="<X11/forms.h>"],[
587 AC_CHECK_HEADER(forms.h,[],[
588 LYX_LIB_ERROR(forms.h,forms)])])
589 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
590 if test $ac_cv_header_forms_h = yes; then
591 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
592 [ cat > conftest.$ac_ext <<EOF
593 #line __oline__ "configure"
594 #include "confdefs.h"
596 #include FORMS_H_LOCATION
597 #if ! defined(FL_INCLUDE_VERSION)
600 "%%%"FL_VERSION.FL_REVISION.FL_FIXLEVEL"%%%"
603 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
604 grep '^"%%%"' 2>/dev/null | \
605 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
607 XFORMS_VERSION=$lyx_cv_xfversion
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)
920 AC_SUBST(FRONTEND_GUILIB)
921 AC_SUBST(FRONTEND_LDFLAGS)
922 AC_SUBST(FRONTEND_INCLUDES)
923 AC_SUBST(FRONTEND_LIBS)
927 dnl Check things are declared in headers to avoid errors or warnings.
928 dnl Called like LYX_CHECK_DECL(function, headerfile)
929 dnl Defines HAVE_DECL_{FUNCTION}
930 AC_DEFUN(LYX_CHECK_DECL,
931 [AC_MSG_CHECKING(if $1 is declared by header $2)
932 tr_func=`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
934 tr_hdr=`echo $2 | tr . _`
935 AC_CACHE_VAL([lyx_cv_declare_${tr_hdr}_$1],
936 [AC_EGREP_HEADER($1, $2, [eval "lyx_cv_declare_${tr_hdr}_$1=yes"], [eval "lyx_cv_declare_${tr_hdr}_$1=no"])])
937 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
938 AC_DEFINE_UNQUOTED(HAVE_DECL_${tr_func})
944 dnl This is the multiple headers version of the LYX_CHECK_DECL macro above.
945 dnl Called like LYX_CHECK_DECL_HDRS(function, file1 file2 file3)
946 AC_DEFUN(LYX_CHECK_DECL_HDRS,
949 tr_hdr=`echo $I | tr . _`
950 if test "${got}" = "no"; then
951 LYX_CHECK_DECL($1, $I)
953 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
959 ## ------------------------------------------------------------------------
960 ## Find a file (or one of more files in a list of dirs)
961 ## ------------------------------------------------------------------------
963 AC_DEFUN(AC_FIND_FILE,
970 if test -r "$i/$j"; then
978 dnl just a wrapper to clean up configure.in
979 AC_DEFUN(LYX_PROG_LIBTOOL,
981 AC_REQUIRE([AC_ENABLE_SHARED])
982 AC_REQUIRE([AC_ENABLE_STATIC])
983 dnl libtool is only for C, so I must force him
984 dnl to find the correct flags for C++
986 ac_save_cflags="$CFLAGS"
989 AM_PROG_LIBTOOL dnl for libraries
991 CFLAGS="$ac_save_cflags"