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 variable "build_type"
9 AC_DEFUN([LYX_CHECK_VERSION],[
10 echo "configuring LyX version" AC_PACKAGE_VERSION
13 AC_MSG_CHECKING([for build type])
14 AC_ARG_ENABLE(build-type,
15 AC_HELP_STRING([--enable-build-type=TYPE],[set build setting according to TYPE=rel(ease), pre(release), dev(elopment), prof(iling), gprof]),
17 dev*) build_type=development;;
18 pre*) build_type=prerelease;;
19 prof*) build_type=profiling;;
20 gprof*) build_type=gprof;;
21 rel*) build_type=release;;
22 *) AC_ERROR([Bad build type specification \"$enableval\". Please use one of rel(ease), pre(release), dev(elopment), prof(iling), or gprof]);;
24 [case AC_PACKAGE_VERSION in
25 *svn*|*dev*) build_type=development;;
26 *pre*|*alpha*|*beta*|*rc*) build_type=prerelease;;
27 *) build_type=release ;;
29 AC_MSG_RESULT([$build_type])
30 lyx_flags="$lyx_flags build=$build_type"
32 development) lyx_devel_version=yes
33 AC_DEFINE(DEVEL_VERSION, 1, [Define if you are building a development version of LyX])
34 LYX_DATE="not released yet" ;;
35 prerelease) lyx_prerelease=yes ;;
38 AC_SUBST(lyx_devel_version)
42 dnl Define the option to set a LyX version on installed executables and directories
45 AC_DEFUN([LYX_VERSION_SUFFIX],[
46 AC_MSG_CHECKING([for version suffix])
47 dnl We need the literal double quotes in the rpm spec file
48 RPM_VERSION_SUFFIX='""'
49 AC_ARG_WITH(version-suffix,
50 [AC_HELP_STRING([--with-version-suffix@<:@=VERSION@:>@], install lyx files as lyxVERSION (VERSION=-AC_PACKAGE_VERSION))],
51 [if test "x$withval" = "xyes";
53 withval="-"AC_PACKAGE_VERSION
54 ac_configure_args=`echo "$ac_configure_args" | sed "s,--with-version-suffix,--with-version-suffix=$withval,"`
56 AC_SUBST(version_suffix,$withval)
57 RPM_VERSION_SUFFIX="--with-version-suffix=$withval"])
58 AC_SUBST(RPM_VERSION_SUFFIX)
59 AC_SUBST(program_base_name,"lyx")
60 AC_MSG_RESULT([$withval])
64 dnl Usage: LYX_ERROR(message) Displays the warning "message" and sets the
65 dnl flag lyx_error to yes.
66 AC_DEFUN([LYX_ERROR],[
67 lyx_error_txt="$lyx_error_txt
73 dnl Usage: LYX_WARNING(message) Displays the warning "message" and sets the
74 dnl flag lyx_warning to yes.
75 AC_DEFUN([LYX_WARNING],[
76 lyx_warning_txt="$lyx_warning_txt
82 dnl Usage: LYX_LIB_ERROR(file,library) Displays an error message indication
83 dnl that 'file' cannot be found because 'lib' may be uncorrectly installed.
84 AC_DEFUN([LYX_LIB_ERROR],[
85 LYX_ERROR([Cannot find $1. Please check that the $2 library
86 is correctly installed on your system.])])
89 dnl Usage: LYX_CHECK_ERRORS Displays a warning message if a LYX_ERROR
90 dnl has occured previously.
91 AC_DEFUN([LYX_CHECK_ERRORS],[
92 if test x$lyx_warning = xyes; then
94 === The following minor problems have been detected by configure.
95 === Please check the messages below before running 'make'.
96 === (see the section 'Problems' in the INSTALL file)
100 if test x$lyx_error = xyes; then
102 **** The following problems have been detected by configure.
103 **** Please check the messages below before running 'make'.
104 **** (see the section 'Problems' in the INSTALL file)
112 Configuration of LyX was successful.
113 Type 'make' to compile the program,
114 and then 'make install' to install it.
119 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
121 define(LYX_SEARCH_PROG,[dnl
122 for ac_prog in $2 ; do
123 # Extract the first word of "$ac_prog", so it can be a program name with args.
124 set dummy $ac_prog ; ac_word=$[2]
125 if test -z "[$]$1"; then
126 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
127 for ac_dir in $PATH; do
128 test -z "$ac_dir" && ac_dir=.
129 if test -f [$ac_dir/$ac_word]; then
137 if test -n "[$]$1"; then
143 test -n "[$]$1" && break
148 AC_DEFUN([LYX_PROG_CXX_WORKS],
150 cat >conftest.C <<EOF
152 // we require the mutable keyword
155 // we require namespace support
163 $CXX -c $CXXFLAGS $CPPFLAGS conftest.C >&5 || CXX=
164 rm -f conftest.C conftest.o conftest.obj || true
168 AC_DEFUN([LYX_PROG_CXX],
169 [AC_MSG_CHECKING([for a good enough C++ compiler])
170 LYX_SEARCH_PROG(CXX, $CXX $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS])
172 if test -z "$CXX" ; then
173 AC_MSG_ERROR([Unable to find a good enough C++ compiler])
180 ### We might want to get or shut warnings.
181 AC_ARG_ENABLE(warnings,
182 AC_HELP_STRING([--enable-warnings],[tell the compiler to display more warnings]),,
183 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
188 if test x$enable_warnings = xyes ; then
189 lyx_flags="$lyx_flags warnings"
192 ### We might want to disable debug
194 AC_HELP_STRING([--enable-debug],[enable debug information]),,
195 [AS_CASE([$build_type], [rel*], [enable_debug=no], [enable_debug=yes])]
198 AC_ARG_ENABLE(stdlib-debug,
199 AC_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
200 [AS_CASE([$build_type], [dev*], [enable_stdlib_debug=yes],
201 [enable_stdlib_debug=no])]
204 AC_ARG_ENABLE(concept-checks,
205 AC_HELP_STRING([--enable-concept-checks],[enable concept checks]),,
206 [AS_CASE([$build_type], [dev*|pre*], [enable_concept_checks=yes],
207 [enable_concept_checks=no])]
211 AC_HELP_STRING([--enable-gprof],[enable profiling using gprof]),,
212 [AS_CASE([$build_type], [gprof], [enable_gprof=yes], [enable_gprof=no])]
215 ### set up optimization
216 AC_ARG_ENABLE(optimization,
217 AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
218 enable_optimization=yes;)
219 case $enable_optimization in
221 if test $lyx_devel_version = yes ; then
227 *) lyx_opt=${enable_optimization};;
231 AC_HELP_STRING([--enable-pch],[enable precompiled headers]),,
236 AC_HELP_STRING([--enable-cxx11],[enable C++11 mode]),,
239 AC_ARG_ENABLE(assertions,
240 AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
241 [AS_CASE([$build_type], [dev*|pre*], [enable_assertions=yes],
242 [enable_assertions=no])]
244 if test "x$enable_assertions" = xyes ; then
245 lyx_flags="$lyx_flags assertions"
246 AC_DEFINE(ENABLE_ASSERTIONS,1,
247 [Define if you want assertions to be enabled in the code])
250 # set the compiler options correctly.
251 if test x$GXX = xyes; then
252 dnl Useful for global version info
253 gxx_version=`${CXX} -dumpversion`
254 CXX_VERSION="($gxx_version)"
256 if test "$ac_test_CXXFLAGS" = set; then
257 CXXFLAGS="$ac_save_CXXFLAGS"
261 if test x$enable_debug = xyes ; then
263 CXXFLAGS="-g $CXXFLAGS"
265 if test x$enable_gprof = xyes ; then
267 CXXFLAGS="-pg $CXXFLAGS"
268 LDFLAGS="-pg $LDFLAGS"
271 if test "$ac_env_CPPFLAGS_set" != set; then
272 if test x$enable_warnings = xyes ; then
275 CPPFLAGS="-W -Wall $CPPFLAGS"
278 CPPFLAGS="-Wextra -Wall $CPPFLAGS "
284 3.1*) AM_CXXFLAGS="-finline-limit=500 ";;
285 3.2*|3.3*) AM_CXXFLAGS="";;
288 test $enable_pch = yes && lyx_pch_comp=yes
292 if test x$enable_stdlib_debug = xyes ; then
295 lyx_flags="$lyx_flags stdlib-debug"
296 AC_DEFINE(_GLIBCXX_DEBUG, 1, [libstdc++ debug mode])
297 AC_DEFINE(_GLIBCXX_DEBUG_PEDANTIC, 1, [libstdc++ pedantic debug mode])
301 if test x$enable_concept_checks = xyes ; then
304 lyx_flags="$lyx_flags concept-checks"
305 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
308 lyx_flags="$lyx_flags concept-checks"
309 AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
313 if test x$enable_cxx11 = xyes ; then
316 lyx_flags="$lyx_flags c++11-mode"
317 CXXFLAGS="-std=gnu++0x $CXXFLAGS"
320 lyx_flags="$lyx_flags c++11-mode"
321 CXXFLAGS="-std=gnu++11 $CXXFLAGS"
326 test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch"
327 AM_CONDITIONAL(LYX_BUILD_PCH, test "$lyx_pch_comp" = yes)
330 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
332 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
333 AC_MSG_CHECKING([whether to use included boost library])
334 AC_ARG_WITH(included-boost,
335 [AC_HELP_STRING([--without-included-boost], [do not use the boost lib supplied with LyX, try to find one in the system directories - compilation will abort if nothing suitable is found])],
336 [lyx_cv_with_included_boost=$withval],
337 [lyx_cv_with_included_boost=yes])
338 AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
339 AC_MSG_RESULT([$lyx_cv_with_included_boost])
340 if test x$lyx_cv_with_included_boost != xyes ; then
344 LIBS="$save_LIBS -lboost_signals -lm"
345 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/signal.hpp>], [boost::signal<void ()> s;])], [lyx_boost_plain=yes], [])
346 LIBS="$save_LIBS -lboost_signals-mt -lm $LIBTHREAD"
347 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/signal.hpp>], [boost::signal<void ()> s;])], [lyx_boost_mt=yes], [])
352 if test x$lyx_boost_mt = xyes ; then
356 if test x$lyx_boost_plain != xyes ; then
357 LYX_ERROR([No suitable boost library found (do not use --without-included-boost)])
365 dnl Usage: LYX_USE_INCLUDED_MYTHES : select if the included MyThes should
367 AC_DEFUN([LYX_USE_INCLUDED_MYTHES],[
368 AC_MSG_CHECKING([whether to use included MyThes library])
369 AC_ARG_WITH(included-mythes,
370 [AC_HELP_STRING([--without-included-mythes], [do not use the MyThes lib supplied with LyX, try to find one in the system directories - compilation will abort if nothing suitable is found])],
371 [lyx_cv_with_included_mythes=$withval],
372 [lyx_cv_with_included_mythes=yes])
373 AM_CONDITIONAL(USE_INCLUDED_MYTHES, test x$lyx_cv_with_included_mythes = xyes)
374 AC_MSG_RESULT([$lyx_cv_with_included_mythes])
375 if test x$lyx_cv_with_included_mythes != xyes ; then
377 AC_CHECK_HEADER(mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes.hxx>"])
378 if test x$ac_cv_header_mythes_h != xyes; then
379 AC_CHECK_HEADER(mythes/mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes/mythes.hxx>"])
381 AC_CHECK_LIB(mythes, main, [MYTHES_LIBS="-lmythes" lyx_mythes=yes], [lyx_mythes=no], [-lm])
382 if test x$lyx_mythes != xyes; then
383 AC_CHECK_LIB(mythes-1.2, main, [MYTHES_LIBS="-lmythes-1.2" lyx_mythes=yes], [lyx_mythes=no], [-lm])
386 if test x$lyx_mythes != xyes -o x$ac_cv_header_mythes_h != xyes; then
387 LYX_ERROR([No suitable MyThes library found (do not use --without-included-mythes)])
389 AC_DEFINE(USE_EXTERNAL_MYTHES, 1, [Define as 1 to use an external MyThes library])
390 AC_DEFINE_UNQUOTED(MYTHES_H_LOCATION,$lyx_cv_mythes_h_location,[Location of mythes.hxx])
391 AC_SUBST(MYTHES_LIBS)
396 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
397 dnl [default-yes-value])
398 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
399 dnl resulting directory name in 'dir-var-name'.
400 AC_DEFUN([LYX_WITH_DIR],[
401 AC_ARG_WITH($1,[AC_HELP_STRING([--with-$1],[specify $2])])
402 AC_MSG_CHECKING([for $2])
403 if test -z "$with_$3"; then
404 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
406 test "x$with_$3" = xyes && with_$3=$5
409 AC_MSG_RESULT($lyx_cv_$3)])
412 dnl Usage: LYX_LOOP_DIR(value,action)
413 dnl Executes action for values of variable `dir' in `values'. `values' can
414 dnl use ":" as a separator.
415 AC_DEFUN([LYX_LOOP_DIR],[
416 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
417 for dir in `eval "echo $1"`; do
418 if test ! "$dir" = NONE; then
419 test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
427 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
429 AC_DEFUN([LYX_ADD_LIB_DIR],[
431 if test "`(uname) 2>/dev/null`" = SunOS &&
432 uname -r | grep '^5' >/dev/null; then
433 if test $ac_cv_prog_gxx = yes ; then
434 $1="${$1} -Wl[,]-R$2"
441 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
443 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
445 ### Check for a headers existence and location iff it exists
446 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
447 ## It almost works. I've tried a few variations but they give errors
448 ## of one sort or other: bad substitution or file not found etc. The
449 ## actual header _is_ found though and the cache variable is set however
450 ## the reported setting (on screen) is equal to $ac_safe for some unknown
452 ## Additionally, autoheader can't figure out what to use as the name in
453 ## the config.h.in file so we need to write our own entries there -- one for
454 ## each header in the form PATH_HEADER_NAME_H
456 AC_DEFUN([LYX_PATH_HEADER],
457 [ AC_CHECK_HEADER($1,[
458 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
459 ### the only remaining problem is getting the second parameter to this
460 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
461 ### of $ac_safe being printed.
462 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
463 [ cat > conftest.$ac_ext <<EOF
464 #line __oline__ "configure"
465 #include "confdefs.h"
469 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
470 grep $1 2>/dev/null | \
471 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
472 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
474 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
476 ### end of LYX_PATH_HEADER
478 ### Check which frontends we want to use.
480 AC_DEFUN([LYX_USE_FRONTENDS],
481 [AC_MSG_CHECKING([what frontend should be used for the GUI])
482 AC_ARG_WITH(frontend,
483 [AC_HELP_STRING([--with-frontend=THIS], [use THIS frontend as main GUI:
484 Possible values: qt4])],
485 [FRONTENDS="$withval"],[FRONTENDS="qt4"])
486 if test "x$FRONTENDS" = x ; then
488 AC_ERROR("Please select a frontend using --with-frontend")
490 AC_MSG_RESULT($FRONTENDS)
492 AC_SUBST(FRONTENDS_SUBDIRS)
493 AC_SUBST(FRONTENDS_PROGS)
497 ## Check what kind of packaging should be used at install time.
498 ## The default is autodetected.
499 AC_DEFUN([LYX_USE_PACKAGING],
500 [AC_MSG_CHECKING([what packaging should be used])
501 AC_ARG_WITH(packaging,
502 [AC_HELP_STRING([--with-packaging=THIS], [use THIS packaging for installation:
503 Possible values: posix, windows, macosx])],
504 [lyx_use_packaging="$withval"], [
506 *-apple-darwin*) lyx_use_packaging=macosx ;;
507 *-pc-mingw32*) lyx_use_packaging=windows;;
508 *) lyx_use_packaging=posix;;
510 AC_MSG_RESULT($lyx_use_packaging)
511 lyx_install_macosx=false
512 lyx_install_cygwin=false
513 lyx_install_windows=false
514 case $lyx_use_packaging in
515 macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
516 PACKAGE=LyX${version_suffix}
517 default_prefix="/Applications/${PACKAGE}.app"
518 AC_SUBST(osx_bundle_program_name,"${program_base_name}")
519 bindir='${prefix}/Contents/MacOS'
520 libdir='${prefix}/Contents/Resources'
521 datarootdir='${prefix}/Contents/Resources'
522 pkgdatadir='${datadir}'
523 mandir='${datadir}/man'
524 lyx_install_macosx=true ;;
525 windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
526 PACKAGE=LyX${version_suffix}
527 default_prefix="C:/Program Files/${PACKAGE}"
528 bindir='${prefix}/bin'
529 libdir='${prefix}/Resources'
530 datarootdir='${prefix}/Resources'
531 pkgdatadir='${datadir}'
532 mandir='${prefix}/Resources/man'
533 lyx_install_windows=true ;;
534 posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
535 PACKAGE=lyx${version_suffix}
536 program_suffix=$version_suffix
537 pkgdatadir='${datadir}/${PACKAGE}'
538 default_prefix=$ac_default_prefix
540 *cygwin*) lyx_install_cygwin=true ;;
541 *apple-darwin*) lyx_install_macosx=true ;;
543 lyx_install_posix=true ;;
544 *) LYX_ERROR([Unknown packaging type $lyx_use_packaging]) ;;
546 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
547 AM_CONDITIONAL(INSTALL_WINDOWS, $lyx_install_windows)
548 AM_CONDITIONAL(INSTALL_CYGWIN, $lyx_install_cygwin)
549 AM_CONDITIONAL(INSTALL_POSIX, $lyx_install_posix)
550 dnl Next two lines are only for autoconf <= 2.59
551 datadir='${datarootdir}'
552 AC_SUBST(datarootdir)
554 AC_SUBST(program_suffix)
558 ## ------------------------------------------------------------------------
559 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
560 ## one or two arguments.
562 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
563 ## ------------------------------------------------------------------------
565 AC_DEFUN([AC_FUNC_MKDIR],
566 [AC_CHECK_FUNCS([mkdir _mkdir])
567 AC_CACHE_CHECK([whether mkdir takes one argument],
568 [ac_cv_mkdir_takes_one_arg],
570 #include <sys/stat.h>
575 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
576 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
577 AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
578 [Define if mkdir takes only one argument.])
583 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
584 dnl (which may be a relative path, and need not refer to any existing
587 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
588 dnl native Win32 path name, (but with slashes, not backslashes).
590 dnl On any other system, it is simply the result which would be obtained
591 dnl if PATHNAME represented an existing directory, and the pwd command was
592 dnl executed in that directory.
593 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
595 ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
596 ac_pwd_w="pwd -W" || ac_pwd_w=pwd
597 until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
599 ac_dir=`AS_DIRNAME(["$ac_dir"])`
601 ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
602 ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
603 $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
607 dnl this is used by the macro blow to general a proper config.h.in entry
608 m4_define([LYX_AH_CHECK_DECL],
609 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
610 [Define if you have the prototype for function `$1'])])
612 dnl Check things are declared in headers to avoid errors or warnings.
613 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
614 dnl Defines HAVE_DECL_{FUNCTION}
615 AC_DEFUN([LYX_CHECK_DECL],
616 [LYX_AH_CHECK_DECL($1)
619 AC_MSG_CHECKING([if $1 is declared by header $ac_header])
620 AC_EGREP_HEADER($1, $ac_header,
622 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
627 dnl this is used by the macro below to generate a proper config.h.in entry
628 m4_define([LYX_AH_CHECK_DEF],
629 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
630 [Define to 1 if `$1' is defined in `$2'])])
632 dnl Check whether name is defined in header by using it in codesnippet.
633 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
634 dnl Defines HAVE_DEF_{NAME}
635 AC_DEFUN([LYX_CHECK_DEF],
636 [LYX_AH_CHECK_DEF($1, $2)
637 AC_MSG_CHECKING([whether $1 is defined by header $2])
638 AC_TRY_COMPILE([#include <$2>], [$3],
639 lyx_have_def_name=yes,
640 lyx_have_def_name=no)
641 AC_MSG_RESULT($lyx_have_def_name)
642 if test "x$lyx_have_def_name" = xyes; then
643 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
647 dnl Extract the single digits from PACKAGE_VERSION and make them available.
648 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
649 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
650 AC_DEFUN([LYX_SET_VERSION_INFO],
651 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
652 lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
653 lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
654 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
655 lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
656 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
657 test "x$lyx_patch" = "x" && lyx_patch=0
658 lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
659 lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
660 AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
661 AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
662 AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
663 AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
664 AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
665 AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
668 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
669 # ---------------------------------------------------------------------------
670 # Copied from autoconf 2.68, added a check that python version is < 3.0
671 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
672 # Run ACTION-IF-FALSE otherwise.
673 # This test uses sys.hexversion instead of the string equivalent (first
674 # word of sys.version), in order to cope with versions such as 2.2c1.
675 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
676 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
678 # split strings by '.' and convert to numeric. Append some zeros
679 # because we need at least 4 digits for the hex conversion.
680 # map returns an iterator in Python 3.0 and a list in 2.x
681 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
683 maxverhex = 50331648 # = 3.0.0.0
684 # xrange is not present in Python 3.0 and range returns an iterator
685 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
686 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
687 AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])