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],
136 cat >conftest.C <<EOF
138 // we require the mutable keyword
141 // we require namespace support
149 $CXX -c $CXXFLAGS $CPPFLAGS conftest.C >&5 || CXX=
150 rm -f conftest.C conftest.o conftest.obj || true
154 AC_DEFUN(LYX_PROG_CXX,
155 [AC_MSG_CHECKING([for a good enough C++ compiler])
156 LYX_SEARCH_PROG(CXX, $CXX $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS])
158 if test -z "$CXX" ; then
159 AC_ERROR([Unable to find a good enough C++ compiler])
165 ### We might want to get or shut warnings.
166 AC_ARG_ENABLE(warnings,
167 [ --enable-warnings tell the compiler to display more warnings],,
168 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
173 if test x$enable_warnings = xyes ; then
174 lyx_flags="$lyx_flags warnings"
175 AC_DEFINE(WITH_WARNINGS, 1,
176 [Define this if you want to see the warning directives put here and
177 there by the developpers to get attention])
180 ### We might want to disable debug
182 [ --enable-debug enable debug information],,
183 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
189 ### set up optimization
190 AC_ARG_ENABLE(optimization,
191 [ --enable-optimization[=value] enable compiler optimisation],,
192 enable_optimization=yes;)
193 case $enable_optimization in
196 *) lyx_opt=${enable_optimization};;
199 # set the debug flags correctly.
200 if test x$GXX = xyes; then
201 dnl Useful for global version info
202 gxx_version=`${CXX} -dumpversion`
203 CXX_VERSION="($gxx_version)"
205 if test "$ac_test_CXXFLAGS" = set; then
206 CXXFLAGS="$ac_save_CXXFLAGS"
209 2.95.1) CXXFLAGS="$lyx_opt -fpermissive";;
210 2.95.2) CXXFLAGS="$lyx_opt";;
211 2.95.*) CXXFLAGS="$lyx_opt";;
212 2.96*) CXXFLAGS="$lyx_opt";;
213 3.0*) CXXFLAGS="$lyx_opt";;
214 3.1*) CXXFLAGS="$lyx_opt";;
215 3.2*) CXXFLAGS="$lyx_opt";;
216 *) CXXFLAGS="$lyx_opt";;
218 if test x$enable_debug = xyes ; then
219 CXXFLAGS="-g $CXXFLAGS"
222 if test x$enable_warnings = xyes ; then
224 2.95.*) CXXFLAGS="$CXXFLAGS -W -Wall";;
225 2.96*) CXXFLAGS="$CXXFLAGS -W -Wall";;
226 *) CXXFLAGS="$CXXFLAGS -W -Wall";;
228 if test $lyx_devel_version = yes ; then
232 *) CXXFLAGS="$CXXFLAGS -Winline";;
239 dnl NOT USED CURRENTLY*************************************
240 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
242 AC_DEFUN(LYX_CXX_RTTI,[
243 ### Check whether the compiler supports runtime type information
244 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
248 virtual int tag() { return 0; }
250 class derived1 : public rtti {
252 int tag() { return 1; }
254 class derived2 : public rtti {
256 int tag() { return 2; }
259 derived1 * foo1 = new derived1();
260 derived2 * foo2 = new derived2();
262 derived1 * bar1 = dynamic_cast<derived1 *>(bar);
266 bar1 = dynamic_cast<derived1 *>(bar);
271 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
273 if test x$lyx_cv_rtti = xyes ; then
274 AC_DEFINE(HAVE_RTTI, 1,
275 [Define to 1 if your compiler supports runtime type information])
279 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
280 dnl understands the "explicit" directive.
281 AC_DEFUN(LYX_CXX_EXPLICIT,[
282 ### Check whether the compiler understands the keyword `explicit'
283 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
288 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
290 if test $lyx_cv_explicit = no ; then
291 AC_DEFINE(explicit,[ ],
292 [Define to nothing if your compiler does not understand the
293 'explicit' directive])
297 dnl NOT USED CURRENTLY*************************************
298 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
299 dnl has a working stl stack template
300 AC_DEFUN(LYX_CXX_STL_STACK,[
301 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
308 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
310 if test $lyx_cv_broken_stack = yes ; then
311 AC_DEFINE(BROKEN_STL_STACK, 1,
312 [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
317 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
318 dnl count template, if not the old HP version is assumed.
319 AC_DEFUN(LYX_STD_COUNT,[
320 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
324 int countChar(char * b, char * e, char const c)
326 return count(b, e, c);
330 int i = countChar(a, a + 5, 'l');
331 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
333 if test $lyx_cv_std_count = yes ; then
334 AC_DEFINE(HAVE_STD_COUNT, 1,
335 [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
339 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
340 dnl supports modern STL streams
341 AC_DEFUN(LYX_CXX_STL_MODERN_STREAMS,[
342 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
346 std::streambuf * test = std::cerr.rdbuf();
348 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
350 if test $lyx_cv_modern_streams = yes ; then
351 AC_DEFINE(MODERN_STL_STREAMS, 1,
352 [Define if you have modern standard-compliant STL streams])
356 dnl Usage: LYX_CXX_STL_STRING : checks whether the C++ compiler
357 dnl has a std::string that is usable for LyX. LyX does not require this
358 dnl std::string to be standard.
359 AC_DEFUN(LYX_CXX_STL_STRING,[
360 AC_REQUIRE([AC_PROG_CXX])
361 AC_MSG_CHECKING(whether the included std::string should be used)
362 AC_ARG_WITH(included-string,
363 [ --with-included-string use LyX string class instead of STL string],
364 [lyx_cv_with_included_string=$withval
365 AC_MSG_RESULT([$with_included_string])],
366 [AC_CACHE_CHECK([],lyx_cv_with_included_string,
371 // LyX has reduced its requirements on the basic_string
372 // implementation so that the basic_string supplied
373 // with gcc is usable. In particular this means that
374 // lyx does not use std::string::clear and not the
375 // strncmp version of std::string::compare. This is mainly
376 // done so that LyX can use precompiled C++ libraries that
377 // already uses the systems basic_string, e.g. gtk--
378 string a("hello there");
382 //int t = a.compare(a.length() - 1, 1, s);
385 lyx_cv_with_included_string=no
387 lyx_cv_with_included_string=yes
391 if test x$lyx_cv_with_included_string = xyes ; then
392 AC_DEFINE(USE_INCLUDED_STRING, 1,
393 [Define to use the lyxstring class bundled with LyX.])
394 lyx_flags="$lyx_flags included-string"
396 AM_CONDITIONAL(USE_LYXSTRING, test x$lyx_cv_with_included_string = xyes)
397 dnl AC_MSG_RESULT([$with_included_string])
401 dnl Usage: LYX_CXX_GOOD_STD_STRING : checks whether the C++ compiler
402 dnl has a std::string that is close to the standard. So close that
403 dnl methods not found in "unstandard" std::strings are present here.
404 AC_DEFUN(LYX_CXX_GOOD_STD_STRING,[
405 AC_REQUIRE([AC_PROG_CXX])
406 AC_CACHE_CHECK([whether the systems std::string is really good],
407 [lyx_cv_std_string_good],
412 // From a std::string that is supposed to be close to the
413 // standard we require at least three things:
414 // - clear() and erase()
415 // - the strncmp of compare()
417 string a("hello there");
421 int t = a.compare(a.length() - 1, 1, s);
425 lyx_cv_std_string_good=yes
427 lyx_cv_std_string_good=no
431 if test x$lyx_cv_std_string_good = xyes ; then
432 AC_DEFINE(STD_STRING_IS_GOOD, 1,
433 [Define if the systems std::string is really good.])
438 dnl Usage: LYX_REGEX : checks if the header regex.h is available
439 dnl if it is not available the automake variable USE_REGEX will be
440 dnl defined and the regex.h and regex.c that we provide will be used.
441 dnl AC_DEFUN(LYX_REGEX,[
442 dnl AC_CHECK_HEADERS(regex.h, lyx_regex=no, lyx_regex=yes)
443 dnl AM_CONDITIONAL(USE_REGEX, test x$lyx_regex = xyes)
446 dnl NOT USED CURRENTLY*************************************
448 AC_DEFUN(LYX_CXX_PARTIAL, [
449 AC_REQUIRE([AC_PROG_CXX])
450 AC_CACHE_CHECK([if C++ compiler supports partial specialization],
451 [lyx_cv_cxx_partial_specialization],
454 template<class T, class K>
458 template<class T> class k<void,T> { };
463 lyx_cv_cxx_partial_specialization=yes
465 lyx_cv_cxx_partial_specialization=no
468 if test x$lyx_cv_cxx_partial_specialization = xyes ; then
469 AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
470 [Defined if your compiler supports partial specialization.])
475 dnl Usage: LYX_CXX_CHEADERS : checks whether the C++ compiler
476 dnl provides wrappers for C headers and use our alternate version otherwise.
477 AC_DEFUN(LYX_CXX_CHEADERS,[
478 AC_CACHE_CHECK(for C headers wrappers,lyx_cv_cxx_cheaders,
488 #include <ctime>],[lyx_cv_cxx_cheaders=yes],[lyx_cv_cxx_cheaders=no])])
489 if test $lyx_cv_cxx_cheaders = no ; then
490 LYX_ADD_INC_DIR(lyx_cppflags,\$(top_srcdir)/src/cheaders)
493 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
494 dnl are already in the global namespace
495 AC_DEFUN(LYX_CXX_GLOBAL_CSTD,[
496 AC_CACHE_CHECK(whether C library functions are already in the global namespace,
497 lyx_cv_cxx_global_cstd,
503 ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
504 if test x$lyx_cv_cxx_global_cstd = xyes; then
505 AC_DEFINE(CXX_GLOBAL_CSTD,1,
506 [Define if your C++ compiler puts C library functions in the global namespace])
510 dnl Usage LYX_PATH_XPM: Checks for xpm library and header
511 AC_DEFUN(LYX_PATH_XPM,[
512 ### Check for Xpm library
513 AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage,XPM_LIB="-lXpm",
514 [LYX_LIB_ERROR(libXpm,Xpm)], $XPM_LIB)
516 ### Check for Xpm headers
517 lyx_cv_xpm_h_location="<xpm.h>"
518 AC_CHECK_HEADER(X11/xpm.h,[
519 ac_cv_header_xpm_h=yes
520 lyx_cv_xpm_h_location="<X11/xpm.h>"],[
521 AC_CHECK_HEADER(xpm.h,[],[
522 LYX_LIB_ERROR(xpm.h,Xpm)])])
523 AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
525 ### Test for the header version
526 if test $ac_cv_header_xpm_h = yes; then
527 AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
528 [ cat > conftest.$ac_ext <<EOF
529 #line __oline__ "configure"
530 #include "confdefs.h"
532 #include XPM_H_LOCATION
533 "%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
535 eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
536 grep '^"%%%"' 2>/dev/null | \
537 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
538 case "$lyx_cv_xpmr" in
540 [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
541 lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
545 lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
547 XPM_VERSION=${lyx_cv_xpmversion}
548 case "$lyx_cv_xpmr" in
550 [789]|[0-9][0-9]*) ;;
552 *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
553 If you experience strange crashes with LyX, try to upgrade
554 to at least version 4.7 (aka 3.4g).
555 If you have installed a newer version of the library, check whether you
556 have an old xpm.h header file in your include path.]);;
561 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
562 dnl If it is found, the variable XFORMS_LIB is set to the relevant -l flag.
563 AC_DEFUN(LYX_PATH_XFORMS,[
564 ### Check for xforms library
565 AC_CHECK_LIB(forms, fl_initialize, XFORMS_LIB="-lforms",
566 [AC_CHECK_LIB(xforms, fl_initialize, XFORMS_LIB="-lxforms",
567 [LYX_LIB_ERROR(libforms or libxforms,xforms)])])
569 ### Check for xforms headers
570 lyx_cv_forms_h_location="<forms.h>"
571 AC_CHECK_HEADER(X11/forms.h,[
572 ac_cv_header_forms_h=yes
573 lyx_cv_forms_h_location="<X11/forms.h>"],[
574 AC_CHECK_HEADER(forms.h,[],[
575 LYX_LIB_ERROR(forms.h,forms)])])
576 AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
577 if test $ac_cv_header_forms_h = yes; then
578 AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
579 [ cat > conftest.$ac_ext <<EOF
580 #line __oline__ "configure"
581 #include "confdefs.h"
583 #include FORMS_H_LOCATION
584 #if ! defined(FL_INCLUDE_VERSION)
587 "%%%"FL_VERSION.FL_REVISION.FL_FIXLEVEL"%%%"
590 lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
591 grep '^"%%%"' 2>/dev/null | \
592 sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
594 XFORMS_VERSION=$lyx_cv_xfversion
595 case "$lyx_cv_xfversion" in
596 "(unknown)"|0.8[1-7]*)
598 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
599 This version of LyX works best with versions 0.88 (recommended) and later.) ;;
601 0.89[01234]) LYX_WARNING(dnl
602 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
603 it is an unproven version and might still have some bugs. You should
604 probably use version 0.89.6 (or 0.88) instead) ;;
607 Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
608 since it is newer than 0.89. You might have slight problems with it.);;
613 dnl Check whether the xforms library has a viable image loader
614 AC_DEFUN(LYX_USE_XFORMS_IMAGE_LOADER,
617 LIBS="$XFORMS_LIB $LIBS"
618 lyx_use_xforms_image_loader=no
619 AC_CHECK_FUNCS(flimage_dup,[
620 AC_CHECK_FUNCS(flimage_to_pixmap,[
621 lyx_use_xforms_image_loader=yes
622 AC_CHECK_FUNCS(flimage_enable_ps)])])
624 test $lyx_use_xforms_image_loader = yes && lyx_flags="$lyx_flags xforms-image-loader"
625 ### If the gui cannot load images itself, then we default to the
626 ### very simple one in graphics/GraphicsImageXPM.[Ch]
627 AM_CONDITIONAL(USE_BASIC_IMAGE_LOADER,
628 test $lyx_use_xforms_image_loader = no)
632 dnl Check if the image loader needs libjpeg
633 AC_DEFUN(LYX_XFORMS_IMAGE_LOADER_NEEDS_JPEG,
635 if test "$lyx_use_xforms_image_loader" = "yes" ; then
636 AC_MSG_CHECKING([whether libjpeg is needed])
640 LIBS="$XFORMS_LIB $LIBS"
641 AC_TRY_LINK([#include <forms.h>],
643 [lyx_need_jpeg=no],[lyx_need_jpeg=yes])
646 AC_MSG_RESULT($lyx_need_jpeg)
647 if test "$lyx_need_jpeg" = "yes" ; then
654 dnl Usage: LYX_HPUX Checks for HP-UX and update CXXFLAGS accordingly
656 [#It seems that HPUX requires using -fpcc-struct-return with gcc.
657 AC_CACHE_CHECK(for HP-UX,ac_cv_hpux,[
658 os=`uname -s | tr '[A-Z]' '[a-z]'`
660 test "$os" = hp-ux && ac_cv_hpux=yes])
661 if test "$ac_cv_hpux" = yes; then
662 test "x$GXX" = xyes && CXXFLAGS="$CXXFLAGS -fpcc-struct-return"
666 dnl Usage: LYX_SUNOS4 Checks for SunOS 4.x and sets the flag lyx_broken_headers
669 [#The headers are not correct under SunOS4
670 AC_CACHE_CHECK(for SunOS 4.x,ac_cv_sunos4,[
672 os=`uname -a | sed -e 's/^\([^ ]*\) [^ ]* \([0-9]\)\..*/\1\2/'`
673 changequote([, ]) dnl
675 test "$os" = SunOS4 && ac_cv_sunos4=yes])
676 if test "$ac_cv_sunos4" = yes; then
677 test "x$GXX" = xyes && lyx_broken_headers=yes
681 dnl Usage: LYX_SCO Checks for SCO and sets the flag lyx_broken_headers
684 [AC_CACHE_CHECK(for SCO 3.2v4,ac_cv_sco,[
686 if test `uname -s` != "SCO_SV"; then
687 lyx_machine_rel=`uname -m`:`uname -r`
688 if test $lyx_machine_rel = i386:3.2 || test $lyx_machine_rel = i486:3.2;
690 if test -f /usr/options/cb.name; then
692 elif /bin/uname -X 2>/dev/null >/dev/null ; then
697 if test "$ac_cv_sco" = yes; then
698 test "x$GXX" = xyes && lyx_broken_headers=yes
701 dnl Usage: LYX_FUNC_PUTENV_ARGTYPE
702 dnl Checks whether putenv() takes 'char const *' or 'char *' as
703 dnl argument. This is needed because Solaris 7 (wrongly?) uses 'char *',
704 dnl while everybody else uses the former...
705 AC_DEFUN(LYX_FUNC_PUTENV_ARGTYPE,
706 [AC_MSG_CHECKING([type of argument for putenv()])
707 AC_CACHE_VAL(lyx_cv_func_putenv_arg,dnl
709 [#include <cstdlib>],
710 [char const * foo = "bar";
712 [lyx_cv_func_putenv_arg='char const *'],[lyx_cv_func_putenv_arg='char *'])])
713 AC_MSG_RESULT($lyx_cv_func_putenv_arg)
714 AC_DEFINE_UNQUOTED(PUTENV_TYPE_ARG,$lyx_cv_func_putenv_arg,dnl
715 [Define to the type of the argument of putenv(). Needed on Solaris 7.])])
718 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
719 dnl [default-yes-value])
720 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
721 dnl resulting directory name in 'dir-var-name'.
722 AC_DEFUN(LYX_WITH_DIR,[
723 AC_ARG_WITH($1,[ --with-$1 specify $2])
724 AC_MSG_CHECKING([for $2])
725 if test -z "$with_$3"; then
726 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
728 test "x$with_$3" = xyes && with_$3=$5
731 AC_MSG_RESULT($lyx_cv_$3)])
734 dnl Usage: LYX_LOOP_DIR(value,action)
735 dnl Executes action for values of variable `dir' in `values'. `values' can
736 dnl use ":" as a separator.
737 AC_DEFUN(LYX_LOOP_DIR,[
738 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
739 for dir in `eval "echo $1"`; do
740 if test ! "$dir" = NONE; then
741 test ! -d "$dir" && AC_ERROR([\"$dir\" is not a directory])
749 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
751 AC_DEFUN(LYX_ADD_LIB_DIR,[
753 if test "`(uname) 2>/dev/null`" = SunOS &&
754 uname -r | grep '^5' >/dev/null; then
755 if test $ac_cv_prog_gxx = yes ; then
756 $1="${$1} -Wl[,]-R$2"
763 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
765 AC_DEFUN(LYX_ADD_INC_DIR,[$1="${$1} -I$2 "])
767 ### Check for a headers existence and location iff it exists
768 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
769 ## It almost works. I've tried a few variations but they give errors
770 ## of one sort or other: bad substitution or file not found etc. The
771 ## actual header _is_ found though and the cache variable is set however
772 ## the reported setting (on screen) is equal to $ac_safe for some unknown
774 ## Additionally, autoheader can't figure out what to use as the name in
775 ## the config.h.in file so we need to write our own entries there -- one for
776 ## each header in the form PATH_HEADER_NAME_H
778 AC_DEFUN(LYX_PATH_HEADER,
779 [ AC_CHECK_HEADER($1,[
780 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
781 ### the only remaining problem is getting the second parameter to this
782 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
783 ### of $ac_safe being printed.
784 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
785 [ cat > conftest.$ac_ext <<EOF
786 #line __oline__ "configure"
787 #include "confdefs.h"
791 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
792 grep $1 2>/dev/null | \
793 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
794 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
796 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path)])
798 ### end of LYX_PATH_HEADER
800 ### Check for stl_string_fwd.h existence and location if it exists
801 AC_DEFUN(LYX_STL_STRING_FWD,
802 [ AC_CHECK_HEADER(stl_string_fwd.h,[
803 AC_CACHE_CHECK([path to stl_string_fwd.h],lyx_cv_path_stl_string_fwd_h,
804 [ cat > conftest.$ac_ext <<EOF
805 #line __oline__ "configure"
806 #include "confdefs.h"
808 #include <stl_string_fwd.h>
810 lyx_cv_path_stl_string_fwd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
811 grep 'stl_string_fwd.h' 2>/dev/null | \
812 sed -e 's/.*\(".*stl_string_fwd.h"\).*/\1/' -e "1q"`
814 AC_DEFINE_UNQUOTED(STL_STRING_FWD_H_LOCATION,$lyx_cv_path_stl_string_fwd_h,
815 [define this to the location of stl_string_fwd.h to be used with #include,
816 NOTE: Do not set it to <stl_string_fwd.h> as that will find the LyX
817 supplied version of the header.
818 e.g. <../include/stl_string_fwd.h> or better yet use an absolute path])])
822 dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
823 dnl if the cache file is inconsistent with the current host,
824 dnl target and build system types, execute CMD or print a default
826 AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
827 AC_REQUIRE([AC_CANONICAL_SYSTEM])
828 AC_MSG_CHECKING([config.cache system type])
829 if { test x"${ac_cv_host_system_type+set}" = x"set" &&
830 test x"$ac_cv_host_system_type" != x"$host"; } ||
831 { test x"${ac_cv_build_system_type+set}" = x"set" &&
832 test x"$ac_cv_build_system_type" != x"$build"; } ||
833 { test x"${ac_cv_target_system_type+set}" = x"set" &&
834 test x"$ac_cv_target_system_type" != x"$target"; }; then
835 AC_MSG_RESULT([different])
837 [AC_MSG_ERROR(["you must remove config.cache and restart configure"])])
839 AC_MSG_RESULT([same])
841 ac_cv_host_system_type="$host"
842 ac_cv_build_system_type="$build"
843 ac_cv_target_system_type="$target"
846 dnl We use this until autoconf fixes its version.
847 AC_DEFUN(LYX_FUNC_SELECT_ARGTYPES,
848 [AC_MSG_CHECKING([types of arguments for select()])
849 AC_CACHE_VAL(ac_cv_func_select_arg234,dnl
850 [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl
851 [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl
852 [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do
853 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
855 [#ifdef HAVE_SYS_TYPES_H
856 #include <sys/types.h>
858 #ifdef HAVE_SYS_TIME_H
859 #include <sys/time.h>
861 #ifdef HAVE_SYS_SELECT_H
862 #include <sys/select.h>
864 #ifdef HAVE_SYS_SOCKET_H
865 #include <sys/socket.h>
867 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
868 [ac_not_found=no ; break 3],ac_not_found=yes)
875 if test "$ac_not_found" = yes; then
876 ac_cv_func_select_arg1=int
877 ac_cv_func_select_arg234='int *'
878 ac_cv_func_select_arg5='struct timeval *'
880 AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5])
881 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1,
882 [Define to the type of arg1 for select().])
883 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234),
884 [Define to the type of args 2, 3 and 4 for select().])
885 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5),
886 [Define to the type of arg5 for select().])
889 ### Check which frontend we want to use. The default is XForms
891 AC_DEFUN(LYX_USE_FRONTEND,
892 [AC_MSG_CHECKING([what frontend should be used as main GUI])
893 AC_ARG_WITH(frontend,
894 [ --with-frontend=THIS Use THIS frontend as main GUI:
895 Possible values: xforms, qt2, gnome],
896 [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"])
897 AC_MSG_RESULT($lyx_use_frontend)
899 AC_SUBST(FRONTEND_GUILIB)
900 AC_SUBST(FRONTEND_LDFLAGS)
901 AC_SUBST(FRONTEND_INCLUDES)
902 AC_SUBST(FRONTEND_LIBS)
906 dnl Check things are declared in headers to avoid errors or warnings.
907 dnl Called like LYX_CHECK_DECL(function, headerfile)
908 dnl Defines HAVE_DECL_{FUNCTION}
909 AC_DEFUN(LYX_CHECK_DECL,
910 [AC_MSG_CHECKING(if $1 is declared by header $2)
911 tr_func=`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
913 tr_hdr=`echo $2 | tr . _`
914 AC_CACHE_VAL([lyx_cv_declare_${tr_hdr}_$1],
915 [AC_EGREP_HEADER($1, $2, [eval "lyx_cv_declare_${tr_hdr}_$1=yes"], [eval "lyx_cv_declare_${tr_hdr}_$1=no"])])
916 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
917 AC_DEFINE_UNQUOTED(HAVE_DECL_${tr_func})
923 dnl This is the multiple headers version of the LYX_CHECK_DECL macro above.
924 dnl Called like LYX_CHECK_DECL_HDRS(function, file1 file2 file3)
925 AC_DEFUN(LYX_CHECK_DECL_HDRS,
928 tr_hdr=`echo $I | tr . _`
929 if test "${got}" = "no"; then
930 LYX_CHECK_DECL($1, $I)
932 if eval "test \"\${lyx_cv_declare_${tr_hdr}_$1}\" = \"yes\""; then
938 ## ------------------------------------------------------------------------
939 ## Find a file (or one of more files in a list of dirs)
940 ## ------------------------------------------------------------------------
942 AC_DEFUN(AC_FIND_FILE,
949 if test -r "$i/$j"; then
957 dnl just a wrapper to clean up configure.in
958 AC_DEFUN(LYX_PROG_LIBTOOL,
960 AC_REQUIRE([AC_ENABLE_SHARED])
961 AC_REQUIRE([AC_ENABLE_STATIC])
962 dnl libtool is only for C, so I must force him
963 dnl to find the correct flags for C++
965 ac_save_cflags="$CFLAGS"
968 AM_PROG_LIBTOOL dnl for libraries
970 CFLAGS="$ac_save_cflags"