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`
215 dnl Useful for global version info
216 CXX_VERSION="($gxx_version)"
219 if test "$ac_test_CXXFLAGS" = set; then
220 CXXFLAGS="$ac_save_CXXFLAGS"
221 elif test $ac_cv_prog_cxx_g = yes; then
223 2.95.1) CXXFLAGS="-g $lyx_opt -fpermissive -fno-rtti -fno-exceptions";;
224 2.95.2) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
225 2.95.*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
226 2.96*) CXXFLAGS="-g $lyx_opt -fno-exceptions";;
227 3.0*) CXXFLAGS="-g $lyx_opt";;
228 *2.91.*) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
229 *) CXXFLAGS="-g $lyx_opt -fno-rtti -fno-exceptions";;
234 if test x$enable_warnings = xyes ; then
236 2.95.*) CXXFLAGS="$CXXFLAGS -W -Wall";;
237 2.96*) CXXFLAGS="$CXXFLAGS -W -Wall";;
238 *) CXXFLAGS="$CXXFLAGS -W -Wall";;
240 if test $lyx_devel_version = yes ; then
252 test "${CXXFLAGS+set}" = set || CXXFLAGS=""
257 dnl NOT USED CURRENTLY*************************************
258 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
260 AC_DEFUN(LYX_CXX_RTTI,[
261 ### Check whether the compiler supports runtime type information
262 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
266 virtual int tag() { return 0; }
268 class derived1 : public rtti {
270 int tag() { return 1; }
272 class derived2 : public rtti {
274 int tag() { return 2; }
277 derived1 * foo1 = new derived1();
278 derived2 * foo2 = new derived2();
280 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
284 bar1 = dynamic_cast<derived1 *>(bar);
289 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
291 if test x$lyx_cv_rtti = xyes ; then
292 AC_DEFINE(HAVE_RTTI, 1,
293 [Define to 1 if your compiler supports runtime type information])
297 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
298 dnl understands the "explicit" directive.
299 AC_DEFUN(LYX_CXX_EXPLICIT,[
300 ### Check whether the compiler understands the keyword `explicit'
301 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
306 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
308 if test $lyx_cv_explicit = no ; then
309 AC_DEFINE(explicit,[ ],
310 [Define to nothing if your compiler does not understand the
311 'explicit' directive])
315 dnl NOT USED CURRENTLY*************************************
316 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
317 dnl has a working stl stack template
318 AC_DEFUN(LYX_CXX_STL_STACK,[
319 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
326 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
328 if test $lyx_cv_broken_stack = yes ; then
329 AC_DEFINE(BROKEN_STL_STACK, 1,
330 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
335 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
336 dnl count template, if not the old HP version is assumed.
337 AC_DEFUN(LYX_STD_COUNT,[
338 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
342 int countChar(char * b, char * e, char const c)
344 return count(b, e, c);
348 int i = countChar(a, a + 5, 'l');
349 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
351 if test $lyx_cv_std_count = yes ; then
352 AC_DEFINE(HAVE_STD_COUNT, 1,
353 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
357 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
358 dnl supports modern STL streams
359 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
360 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
364 std::streambuf * test = std::cerr.rdbuf();
366 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
368 if test $lyx_cv_modern_streams = yes ; then
369 AC_DEFINE(MODERN_STL_STREAMS, 1,
370 [Define if you have modern standard-compliant STL streams])
374 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
375 dnl has a std::string that is usable for LyX. LyX does not require this
376 dnl std::string to be standard.
377 AC_DEFUN(LYX_CXX_STL_STRING,[
378 AC_REQUIRE([LYX_PROG_CXX])
379 AC_MSG_CHECKING(whether the included std::string should be used)
380 AC_ARG_WITH(included-string,
381 [ --with-included-string use LyX string class instead of STL string],
382 [lyx_cv_with_included_string=$withval
383 AC_MSG_RESULT([$with_included_string])],
384 [AC_CACHE_CHECK([],lyx_cv_with_included_string,
389 // LyX has reduced its requirements on the basic_string
390 // implementation so that the basic_string supplied
391 // with gcc is usable. In particular this means that
392 // lyx does not use std::string::clear and not the
393 // strncmp version of std::string::compare. This is mainly
394 // done so that LyX can use precompiled C++ libraries that
395 // already uses the systems basic_string, e.g. gtk--
396 string a("hello there");
400 //int t = a.compare(a.length() - 1, 1, s);
403 lyx_cv_with_included_string=no
405 lyx_cv_with_included_string=yes
409 if test x$lyx_cv_with_included_string = xyes ; then
410 AC_DEFINE(USE_INCLUDED_STRING, 1,
411 [Define to use the lyxstring class bundled with LyX.])
412 lyx_flags="$lyx_flags included-string"
414 AM_CONDITIONAL(USE_LYXSTRING, test x$lyx_cv_with_included_string = xyes)
415 dnl AC_MSG_RESULT([$with_included_string])
419 dnl Usage: LYX_CXX_GOOD_STD_STRING : checks whether the C++ compiler
420 dnl has a std::string that is close to the standard. So close that
421 dnl methods not found in "unstandard" std::strings are present here.
422 AC_DEFUN(LYX_CXX_GOOD_STD_STRING,[
423 AC_REQUIRE([LYX_PROG_CXX])
424 AC_CACHE_CHECK([whether the systems std::string is really good],
425 [lyx_cv_std_string_good],
430 // From a std::string that is supposed to be close to the
431 // standard we require at least three things:
432 // - clear() and erase()
433 // - the strncmp of compare()
435 string a("hello there");
439 int t = a.compare(a.length() - 1, 1, s);
443 lyx_cv_std_string_good=yes
445 lyx_cv_std_string_good=no
449 if test x$lyx_cv_std_string_good = xyes ; then
450 AC_DEFINE(STD_STRING_IS_GOOD, 1,
451 [Define if the systems std::string is really good.])
456 dnl Usage: LYX_REGEX : checks if the header regex.h is available
457 dnl if it is not available the automake variable USE_REGEX will be
458 dnl defined and the regex.h and regex.c that we provide will be used.
460 AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
461 AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
464 dnl NOT USED CURRENTLY*************************************
466 AC_DEFUN(LYX_CXX_PARTIAL, [
467 AC_REQUIRE([LYX_PROG_CXX])
468 AC_CACHE_CHECK([if C++ compiler supports partial specialization],
469 [lyx_cv_cxx_partial_specialization],
472 template<class T, class K>
476 template<class T> class k<void,T> { };
481 lyx_cv_cxx_partial_specialization=yes
483 lyx_cv_cxx_partial_specialization=no
486 if test x$lyx_cv_cxx_partial_specialization = xyes ; then
487 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
488 [Defined if your compiler supports partial specialization.])
493 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
494 dnl provides wrappers for C headers and use our alternate version otherwise.
495 AC_DEFUN(LYX_CXX_CHEADERS,[
496 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
506 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
507 if test $lyx_cv_cxx_cheaders = no ; then
508 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
511 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
512 dnl are already in the global namespace
513 AC_DEFUN(LYX_CXX_GLOBAL_CSTD,[
514 AC_CACHE_CHECK(whether C library functions are already in the global namespace,
515 lyx_cv_cxx_global_cstd,
521 ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
522 if test x$lyx_cv_cxx_global_cstd = xyes; then
523 AC_DEFINE(CXX_GLOBAL_CSTD,1,
524 [Define if your C++ compiler puts C library functions in the global namespace])
528 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
529 AC_DEFUN(LYX_PATH_XPM,[
530 ### Check for Xpm library
531 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,LYX_LIBS="-lXpm $LYX_LIBS",
532 [LYX_LIB_ERROR(libXpm,Xpm)], $LYX_LIBS)
534 ### Check for Xpm headers
535 lyx_cv_xpm_h_location="<xpm.h>"
536 AC_CHECK_HEADER(X11/xpm.h,[
537 ac_cv_header_xpm_h=yes
538 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
539 AC_CHECK_HEADER(xpm.h,[],[
540 LYX_LIB_ERROR(xpm.h,Xpm)])])
541 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
543 ### Test for the header version
544 if test $ac_cv_header_xpm_h = yes; then
545 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
546 [ cat > conftest.$ac_ext <<EOF
547 #line __oline__ "configure"
548 #include "confdefs.h"
550 #include XPM_H_LOCATION
551 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
553 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
554 grep '^"%%%"' 2>/dev/null | \
555 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
556 case "$lyx_cv_xpmr" in
558 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
559 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
563 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
565 XPM_VERSION=${lyx_cv_xpmversion}
566 case "$lyx_cv_xpmr" in
568 [789]|[0-9][0-9]*) ;;
570 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
571 If you experience strange crashes with LyX, try to upgrade
572 to at least version 4.7 (aka 3.4g).
573 If you have installed a newer version of the library, check whether you
574 have an old xpm.h header file in your include path.]);;
579 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
580 AC_DEFUN(LYX_PATH_XFORMS,[
581 ### Check for xforms library
582 AC_CHECK_LIB(forms, fl_initialize, LYX_LIBS="-lforms $LYX_LIBS",
583 [AC_CHECK_LIB(xforms, fl_initialize, LYX_LIBS="-lxforms $LYX_LIBS",
584 [LYX_LIB_ERROR(libforms or libxforms,xforms)], $LYX_LIBS)], $LYX_LIBS)
586 ### Check for xforms headers
587 lyx_cv_forms_h_location="<forms.h>"
588 AC_CHECK_HEADER(X11/forms.h,[
589 ac_cv_header_forms_h=yes
590 lyx_cv_forms_h_location="<X11/forms.h>"],[
591 AC_CHECK_HEADER(forms.h,[],[
592 LYX_LIB_ERROR(forms.h,forms)])])
593 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
594 if test $ac_cv_header_forms_h = yes; then
595 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
596 [ cat > conftest.$ac_ext <<EOF
597 #line __oline__ "configure"
598 #include "confdefs.h"
600 #include FORMS_H_LOCATION
601 #if ! defined(FL_INCLUDE_VERSION)
604 "%%%"FL_VERSION.FL_REVISION.FL_FIXLEVEL"%%%"
607 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
608 grep '^"%%%"' 2>/dev/null | \
609 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
611 XFORMS_VERSION=$lyx_cv_xfversion
612 case "$lyx_cv_xfversion" in
613 "(unknown)"|0.8[1-7]*)
615 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
616 This version of LyX works best with versions 0.88 (recommended) and later.) ;;
618 0.89[01234]) LYX_WARNING(dnl
619 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
620 it is an unproven version and might still have some bugs. You should
621 probably use version 0.89.6 (or 0.88) instead) ;;
624 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
625 since it is newer than 0.88. You might have slight problems with it.);;
630 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
632 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
633 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
634 os=`uname -s | tr '[A-Z]' '[a-z]'`
636 test "$os" = hp-ux && ac_cv_hpux=yes])
637 if test "$ac_cv_hpux" = yes; then
638 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
642 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
645 [#The headers are not correct under SunOS4
646 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
648 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
649 changequote([, ]) dnl
651 test "$os" = SunOS4 && ac_cv_sunos4=yes])
652 if test "$ac_cv_sunos4" = yes; then
653 test "x$GXX" = xyes && lyx_broken_headers=yes
657 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
660 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
662 if test `uname -s` != "SCO_SV"; then
663 lyx_machine_rel=`uname -m`:`uname -r`
664 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
666 if test -f /usr/options/cb.name; then
668 elif /bin/uname -X 2>/dev/null >/dev/null ; then
673 if test "$ac_cv_sco" = yes; then
674 test "x$GXX" = xyes && lyx_broken_headers=yes
677 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
678 dnl Checks whether putenv() takes 'char const *' or 'char *' as
679 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
680 dnl while everybody else uses the former...
681 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
682 [AC_MSG_CHECKING([type of argument for putenv()])
683 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
685 [#include <cstdlib>],
686 [char const * foo = "bar";
688 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
689 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
690 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
691 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
694 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
695 dnl [default-yes-value])
696 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
697 dnl resulting directory name in 'dir-var-name'.
698 AC_DEFUN(LYX_WITH_DIR,[
699 AC_ARG_WITH($1,[ --with-$1 specify $2])
700 AC_MSG_CHECKING([for $2])
701 if test -z "$with_$3"; then
702 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
704 test "x$with_$3" = xyes && with_$3=$5
707 AC_MSG_RESULT($lyx_cv_$3)])
710 dnl Usage: LYX_LOOP_DIR(value,action)
711 dnl Executes action for values of variable `dir' in `values'. `values' can
712 dnl use ":" as a separator.
713 AC_DEFUN(LYX_LOOP_DIR,[
714 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
715 for dir in `eval "echo $1"`; do
716 if test ! "$dir" = NONE; then
717 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
725 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
727 AC_DEFUN(LYX_ADD_LIB_DIR,[
729 if test "`(uname) 2>/dev/null`" = SunOS &&
730 uname -r | grep '^5' >/dev/null; then
731 if test $ac_cv_prog_gxx = yes ; then
732 $1="${$1} -Wl[,]-R$2"
739 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
741 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
743 ### Check which libsigc++ we're using and make sure any external one works
744 ### Check for libsigc++ library
745 AC_DEFUN(LYX_WITH_SIGC,
746 [AC_MSG_CHECKING(whether the included libsigc++ should be used)
747 AC_ARG_WITH([included-libsigc],
748 [ --without-included-libsigc
749 Use the libsigc++ installed on the system],
750 [lyx_use_included_libsigc=$withval],
751 [lyx_use_included_libsigc=yes])
752 AC_MSG_RESULT([$lyx_use_included_libsigc])
753 if test x$lyx_use_included_libsigc = xno; then
754 ### Check for libsigc++
755 ## can't use AC_SUBST right here!
760 [Cannot find libsigc++ library or headers at least as recent as 0.8.7.
761 Check your installation. Have you installed the development package?])
764 ### Use the included libsigc++
765 ### sigc-config hasn't been created yet so we can't just do the same as above
766 ### unless of course someone gets keen and merges the sigc++ configure.in
767 ### with this one. We don't really gain much by doing that though except
768 ### a considerably smaller dist and more difficult maintenance.
769 ### It'd also mean we'd have the equivalent of config/gettext.m4
770 lyx_flags="$lyx_flags included-libsigc"
771 SIGC_LIBS="\`\${top_builddir}/sigc++/sigc-config --libs-names | sed -e 's/-lsigc//'\`"
772 # Libsigc++ always installs into a subdirectory called sigc++. Therefore we
773 # have to always use #include <sigc++/signal_system.h> in our code.
774 # Remember if you decide to do anything to the sigc++ code to do your mods on
775 # the makeLyXsigc.sh script in development/tools using a current cvs checkout
776 # of libsigc++. A tarball distribution doesn't have everything in it that we
778 # We need both these -I entries to build when builddir != srcdir
779 if test "x$src_dir" = "x." ; then
780 SIGC_CFLAGS="-I\${top_srcdir}"
782 SIGC_CFLAGS="-I\${top_builddir} -I\${top_srcdir}"
784 INCLUDED_SIGC="\${top_builddir}/sigc++/libsigc.la"
785 ## can't substitute these here like this otherwise all remaining tests fail
786 ## instead we SUBST directly into the Makefiles
787 ##LIBS="$LIBS \$SIGC_LIBS"
788 ##CPPFLAGS="$CPPFLAGS \$SIGC_CFLAGS"
790 AC_SUBST(SIGC_CFLAGS)
792 AC_SUBST(INCLUDED_SIGC)
795 ### Check for a headers existence and location iff it exists
796 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
797 ## It almost works. I've tried a few variations but they give errors
798 ## of one sort or other: bad substitution or file not found etc. The
799 ## actual header _is_ found though and the cache variable is set however
800 ## the reported setting (on screen) is equal to $ac_safe for some unknown
802 ## Additionally, autoheader can't figure out what to use as the name in
803 ## the config.h.in file so we need to write our own entries there -- one for
804 ## each header in the form PATH_HEADER_NAME_H
806 AC_DEFUN(LYX_PATH_HEADER,
807 [ AC_CHECK_HEADER($1,[
808 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
809 ### the only remaining problem is getting the second parameter to this
810 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
811 ### of $ac_safe being printed.
812 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
813 [ cat > conftest.$ac_ext <<EOF
814 #line __oline__ "configure"
815 #include "confdefs.h"
819 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
820 grep $1 2>/dev/null | \
821 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
822 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
824 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path)])
826 ### end of LYX_PATH_HEADER
828 ### Check for stl_string_fwd.h existence and location if it exists
829 AC_DEFUN(LYX_STL_STRING_FWD,
830 [ AC_CHECK_HEADER(stl_string_fwd.h,[
831 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
832 [ cat > conftest.$ac_ext <<EOF
833 #line __oline__ "configure"
834 #include "confdefs.h"
836 #include <stl_string_fwd.h>
838 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
839 grep 'stl_string_fwd.h' 2>/dev/null | \
840 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
842 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
843 [define this to the location of stl_string_fwd.h to be used with #include,
844 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
845 supplied version of the header.
846 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
850 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
851 dnl if the cache file is inconsistent with the current host,
852 dnl target and build system types, execute CMD or print a default
854 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
855 AC_REQUIRE([AC_CANONICAL_SYSTEM])
856 AC_MSG_CHECKING([config.cache system type])
857 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
858 test x"$ac_cv_host_system_type" != x"$host"; } ||
859 { test x"${ac_cv_build_system_type+set}" = x"set" &&
860 test x"$ac_cv_build_system_type" != x"$build"; } ||
861 { test x"${ac_cv_target_system_type+set}" = x"set" &&
862 test x"$ac_cv_target_system_type" != x"$target"; }; then
863 AC_MSG_RESULT([different])
865 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
867 AC_MSG_RESULT([same])
869 ac_cv_host_system_type="$host"
870 ac_cv_build_system_type="$build"
871 ac_cv_target_system_type="$target"
874 dnl We use this until autoconf fixes its version.
875 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
876 [AC_MSG_CHECKING([types of arguments for select()])
877 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
878 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
879 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
880 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
881 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
883 [#ifdef HAVE_SYS_TYPES_H
884 #include <sys/types.h>
886 #ifdef HAVE_SYS_TIME_H
887 #include <sys/time.h>
889 #ifdef HAVE_SYS_SELECT_H
890 #include <sys/select.h>
892 #ifdef HAVE_SYS_SOCKET_H
893 #include <sys/socket.h>
895 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
896 [ac_not_found=no ; break 3],ac_not_found=yes)
903 if test "$ac_not_found" = yes; then
904 ac_cv_func_select_arg1=int
905 ac_cv_func_select_arg234='int *'
906 ac_cv_func_select_arg5='struct timeval *'
908 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
909 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1)
910 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234))
911 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5))
914 ### Check which frontend we want to use. The default is XForms
916 AC_DEFUN(LYX_USE_FRONTEND,
917 [AC_MSG_CHECKING(what frontend should be used as main GUI)
918 AC_ARG_WITH(frontend,
919 [ --with-frontend=THIS Use THIS frontend as main GUI:
920 Possible values: xforms, qt2, gnome],
921 [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"])
922 AC_MSG_RESULT($lyx_use_frontend)
924 AC_SUBST(FRONTEND_GUILIB)
925 AC_SUBST(FRONTEND_LDFLAGS)
926 AC_SUBST(FRONTEND_INCLUDES)
927 AC_SUBST(FRONTEND_LIBS)
931 dnl Check things are declared in headers to avoid errors or warnings.
932 dnl Called like LYX_CHECK_DECL(function, headerfile)
933 dnl Defines HAVE_DECL_{FUNCTION}
934 AC_DEFUN(LYX_CHECK_DECL,
935 [AC_MSG_CHECKING(if $1 is declared by header $2)
936 tr_func=`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
938 tr_hdr=`echo $2 | tr . _`
939 AC_CACHE_VAL([lyx_cv_declare_${tr_hdr}_$1],
940 [AC_EGREP_HEADER($1, $2, [eval "lyx_cv_declare_${tr_hdr}_$1=yes"], [eval "lyx_cv_declare_${tr_hdr}_$1=no"])])
941 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
942 AC_DEFINE_UNQUOTED(HAVE_DECL_${tr_func})
948 dnl This is the multiple headers version of the LYX_CHECK_DECL macro above.
949 dnl Called like LYX_CHECK_DECL_HDRS(function, file1 file2 file3)
950 AC_DEFUN(LYX_CHECK_DECL_HDRS,
953 tr_hdr=`echo $I | tr . _`
954 if test "${got}" = "no"; then
955 LYX_CHECK_DECL($1, $I)
957 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
963 ## ------------------------------------------------------------------------
964 ## Find a file (or one of more files in a list of dirs)
965 ## ------------------------------------------------------------------------
967 AC_DEFUN(AC_FIND_FILE,
974 if test -r "$i/$j"; then
982 dnl just a wrapper to clean up configure.in
983 AC_DEFUN(LYX_PROG_LIBTOOL,
985 AC_REQUIRE([AC_ENABLE_SHARED])
986 AC_REQUIRE([AC_ENABLE_STATIC])
987 dnl libtool is only for C, so I must force him
988 dnl to find the correct flags for C++
990 ac_save_cflags="$CFLAGS"
993 AM_PROG_LIBTOOL dnl for libraries
995 CFLAGS="$ac_save_cflags"