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
12 AC_MSG_CHECKING([for build type])
15 AC_ARG_ENABLE(build-type,
16 AC_HELP_STRING([--enable-build-type=TYPE],[set build setting according to TYPE=rel(ease), pre(release), dev(elopment), prof(iling), gprof]),
18 dev*) build_type=development;;
19 pre*) build_type=prerelease;;
20 prof*) build_type=profiling;;
21 gprof*) build_type=gprof;;
22 rel*) build_type=release;;
23 *) AC_MSG_ERROR([bad build type specification \"$enableval\". Please use one of rel(ease), pre(release), dev(elopment), prof(iling), or gprof]);;
25 [case AC_PACKAGE_VERSION in
26 *dev*) build_type=development;;
27 *pre*|*alpha*|*beta*|*rc*) build_type=prerelease;;
28 *) build_type=release ;;
30 AC_MSG_RESULT([$build_type])
31 lyx_flags="$lyx_flags build=$build_type"
33 development) lyx_devel_version=yes
34 AC_DEFINE(DEVEL_VERSION, 1, [Define if you are building a development version of LyX])
35 LYX_DATE="not released yet" ;;
36 prerelease) lyx_prerelease=yes ;;
39 AC_SUBST(lyx_devel_version)
43 dnl Define the option to set a LyX version on installed executables and directories
46 AC_DEFUN([LYX_VERSION_SUFFIX],[
47 AC_MSG_CHECKING([for version suffix])
48 dnl We need the literal double quotes in the rpm spec file
49 RPM_VERSION_SUFFIX='""'
50 AC_ARG_WITH(version-suffix,
51 [AC_HELP_STRING([--with-version-suffix@<:@=VERSION@:>@], install lyx files as lyxVERSION (VERSION=-AC_PACKAGE_VERSION))],
52 [if test "x$withval" = "xyes";
54 withval="-"AC_PACKAGE_VERSION
55 ac_configure_args=`echo "$ac_configure_args" | sed "s,--with-version-suffix,--with-version-suffix=$withval,"`
57 AC_SUBST(version_suffix,$withval)
58 RPM_VERSION_SUFFIX="--with-version-suffix=$withval"])
59 AC_SUBST(RPM_VERSION_SUFFIX)
60 AC_SUBST(program_base_name,"lyx")
61 AC_MSG_RESULT([$withval])
65 dnl Usage: LYX_WARNING(message) Displays the warning "message" and sets the
66 dnl flag lyx_warning to yes.
67 AC_DEFUN([LYX_WARNING],[
68 lyx_warning_txt="$lyx_warning_txt
74 dnl Usage: LYX_LIB_ERROR(file,library) Displays an error message indication
75 dnl that 'file' cannot be found because 'lib' may be uncorrectly installed.
76 AC_DEFUN([LYX_LIB_ERROR],[
77 AC_MSG_ERROR([cannot find $1. Please check that the $2 library
78 is correctly installed on your system.])])
81 dnl Usage: LYX_CHECK_WARNINGS Displays a warning message if a LYX_WARNING
82 dnl has occured previously.
83 AC_DEFUN([LYX_CHECK_WARNINGS],[
84 if test x$lyx_warning = xyes; then
86 === The following minor problems have been detected by configure.
87 === Please check the messages below before running 'make'.
88 === (see the section 'Problems' in the INSTALL file)
95 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
97 define(LYX_SEARCH_PROG,[dnl
98 for ac_prog in $2 ; do
99 # Extract the first word of "$ac_prog", so it can be a program name with args.
100 set dummy $ac_prog ; ac_word=$[2]
101 if test -z "[$]$1"; then
102 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
103 for ac_dir in $PATH; do
104 test -z "$ac_dir" && ac_dir=.
105 if test -f [$ac_dir/$ac_word]; then
113 if test -n "[$]$1"; then
119 test -n "[$]$1" && break
124 AC_DEFUN([LYX_PROG_CXX_WORKS],
126 cat >conftest.C <<EOF
128 // we require the mutable keyword
131 // we require namespace support
139 $CXX -c $CXXFLAGS $CPPFLAGS conftest.C >&5 || CXX=
140 rm -f conftest.C conftest.o conftest.obj || true
144 dnl Usage: LYX_PROG_CLANG: set lyx_cv_prog_clang to yes if the compiler is clang.
145 AC_DEFUN([LYX_PROG_CLANG],
146 [AC_CACHE_CHECK([whether the compiler is clang],
148 [AC_TRY_COMPILE([], [
153 [lyx_cv_prog_clang=yes ; CLANG=yes], [lyx_cv_prog_clang=no ; CLANG=no])])
157 dnl Usage: LYX_LIB_STDCXX: set lyx_cv_lib_stdcxx to yes if the STL library is libstdc++.
158 AC_DEFUN([LYX_LIB_STDCXX],
159 [AC_CACHE_CHECK([whether STL is libstdc++],
161 [AC_TRY_COMPILE([#include<vector>], [
162 #if ! defined(__GLIBCXX__) && ! defined(__GLIBCPP__)
163 this is not libstdc++
166 [lyx_cv_lib_stdcxx=yes], [lyx_cv_lib_stdcxx=no])])
170 AC_DEFUN([LYX_PROG_CXX],
171 [AC_MSG_CHECKING([for a good enough C++ compiler])
172 LYX_SEARCH_PROG(CXX, $CXX $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS])
174 if test -z "$CXX" ; then
175 AC_MSG_ERROR([Unable to find a good enough C++ compiler])
179 AC_REQUIRE([AC_PROG_CXX])
180 AC_REQUIRE([AC_PROG_CXXCPP])
186 if test $lyx_cv_lib_stdcxx = "yes" ; then
187 AC_DEFINE(STD_STRING_USES_COW, 1, [std::string uses copy-on-write])
190 ### We might want to get or shut warnings.
191 AC_ARG_ENABLE(warnings,
192 AC_HELP_STRING([--enable-warnings],[tell the compiler to display more warnings]),,
193 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
198 if test x$enable_warnings = xyes ; then
199 lyx_flags="$lyx_flags warnings"
202 ### We might want to disable debug
204 AC_HELP_STRING([--enable-debug],[enable debug information]),,
205 [AS_CASE([$build_type], [rel*], [enable_debug=no], [enable_debug=yes])]
208 AC_ARG_ENABLE(stdlib-debug,
209 AC_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
210 [AS_CASE([$build_type], [dev*], [enable_stdlib_debug=yes],
211 [enable_stdlib_debug=no])]
214 AC_ARG_ENABLE(concept-checks,
215 AC_HELP_STRING([--enable-concept-checks],[enable concept checks]),,
216 [AS_CASE([$build_type], [dev*|pre*], [enable_concept_checks=yes],
217 [enable_concept_checks=no])]
220 ### set up optimization
221 AC_ARG_ENABLE(optimization,
222 AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
223 enable_optimization=yes;)
224 case $enable_optimization in
226 if test $lyx_devel_version = yes ; then
232 *) lyx_opt=${enable_optimization};;
236 AC_HELP_STRING([--enable-pch],[enable precompiled headers]),,
241 AC_HELP_STRING([--enable-cxx11],[enable C++11 mode]),,
244 AC_ARG_ENABLE(assertions,
245 AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
246 [AS_CASE([$build_type], [dev*|pre*], [enable_assertions=yes],
247 [enable_assertions=no])]
249 if test "x$enable_assertions" = xyes ; then
250 lyx_flags="$lyx_flags assertions"
251 AC_DEFINE(ENABLE_ASSERTIONS,1,
252 [Define if you want assertions to be enabled in the code])
255 # set the compiler options correctly.
256 if test x$GXX = xyes; then
257 dnl clang++ pretends to be g++ 4.2.1; this is not useful
258 if test x$CLANG = xno; then
259 dnl Useful for global version info
260 gxx_version=`${CXX} -dumpversion`
261 CXX_VERSION="($gxx_version)"
264 if test "$ac_test_CXXFLAGS" = set; then
265 CXXFLAGS="$ac_save_CXXFLAGS"
269 if test x$enable_debug = xyes ; then
271 CXXFLAGS="-g $CXXFLAGS"
273 if test $build_type = gprof ; then
275 CXXFLAGS="-pg $CXXFLAGS"
276 LDFLAGS="-pg $LDFLAGS"
278 if test $build_type = profiling ; then
279 CFLAGS="$CFLAGS -fno-omit-frame-pointer"
280 CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
283 if test "$ac_env_CPPFLAGS_set" != set; then
284 if test x$enable_warnings = xyes ; then
287 CPPFLAGS="-W -Wall $CPPFLAGS"
290 CPPFLAGS="-Wextra -Wall $CPPFLAGS "
296 3.1*) AM_CXXFLAGS="-finline-limit=500 ";;
297 3.2*|3.3*) AM_CXXFLAGS="";;
300 test $enable_pch = yes && lyx_pch_comp=yes
304 if test x$enable_stdlib_debug = xyes ; then
305 dnl FIXME: for clang/libc++, one should define _LIBCPP_DEBUG2=0
306 dnl See http://clang-developers.42468.n3.nabble.com/libc-debug-mode-td3336742.html
309 lyx_flags="$lyx_flags stdlib-debug"
310 AC_DEFINE(_GLIBCXX_DEBUG, 1, [libstdc++ debug mode])
311 AC_DEFINE(_GLIBCXX_DEBUG_PEDANTIC, 1, [libstdc++ pedantic debug mode])
315 if test x$enable_concept_checks = xyes ; then
318 lyx_flags="$lyx_flags concept-checks"
319 dnl FIXME check whether this makes sense with clang/libc++
320 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
323 lyx_flags="$lyx_flags concept-checks"
324 AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
328 if test x$enable_cxx11 = xyes ; then
329 dnl FIXME: check what to do with clang (is anything needed at all?)
332 lyx_flags="$lyx_flags c++11-mode"
333 CXXFLAGS="-std=gnu++0x $CXXFLAGS"
336 lyx_flags="$lyx_flags c++11-mode"
337 CXXFLAGS="-std=gnu++11 $CXXFLAGS"
342 test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch"
343 AM_CONDITIONAL(LYX_BUILD_PCH, test "$lyx_pch_comp" = yes)
346 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
348 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
349 AC_MSG_CHECKING([whether to use included boost library])
350 AC_ARG_WITH(included-boost,
351 [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])],
352 [lyx_cv_with_included_boost=$withval],
353 [lyx_cv_with_included_boost=yes])
354 AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
355 AC_MSG_RESULT([$lyx_cv_with_included_boost])
356 if test x$lyx_cv_with_included_boost = xyes ; then
357 BOOST_INCLUDES='-I$(top_srcdir)/boost'
358 BOOST_LIBS='$(top_builddir)/boost/liblyxboost.a'
363 AC_MSG_CHECKING([for multithreaded boost libraries])
364 LIBS="$save_LIBS -lboost_signals-mt -lm $LIBTHREAD"
366 [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
367 [boost::signal<void ()> s;])],
368 [AC_MSG_RESULT([yes])
371 AC_MSG_CHECKING([for plain boost libraries])
372 LIBS="$save_LIBS -lboost_signals -lm"
374 [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
375 [boost::signal<void ()> s;])],
376 [AC_MSG_RESULT([yes])
379 AC_MSG_ERROR([cannot find suitable boost library (do not use --without-included-boost)])
385 BOOST_LIBS="-lboost_regex${BOOST_MT} -lboost_signals${BOOST_MT}"
387 AC_SUBST(BOOST_INCLUDES)
392 dnl Usage: LYX_CHECK_CALLSTACK_PRINTING: define LYX_CALLSTACK_PRINTING if the
393 dnl necessary APIs are available to print callstacks.
394 AC_DEFUN([LYX_CHECK_CALLSTACK_PRINTING],
395 [AC_CACHE_CHECK([whether printing callstack is possible],
396 [lyx_cv_callstack_printing],
398 #include <execinfo.h>
402 size_t size = backtrace(array, 200);
403 backtrace_symbols(array, size);
405 abi::__cxa_demangle("abcd", 0, 0, &status);
407 [lyx_cv_callstack_printing=yes], [lyx_cv_callstack_printing=no])])
408 if test x"$lyx_cv_callstack_printing" = xyes; then
409 AC_DEFINE([LYX_CALLSTACK_PRINTING], 1,
410 [Define if callstack can be printed])
415 dnl Usage: LYX_USE_INCLUDED_MYTHES : select if the included MyThes should
417 AC_DEFUN([LYX_USE_INCLUDED_MYTHES],[
418 AC_MSG_CHECKING([whether to use included MyThes library])
419 AC_ARG_WITH(included-mythes,
420 [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])],
421 [lyx_cv_with_included_mythes=$withval],
422 [lyx_cv_with_included_mythes=yes])
423 AM_CONDITIONAL(USE_INCLUDED_MYTHES, test x$lyx_cv_with_included_mythes = xyes)
424 AC_MSG_RESULT([$lyx_cv_with_included_mythes])
425 if test x$lyx_cv_with_included_mythes != xyes ; then
427 AC_CHECK_HEADER(mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes.hxx>"])
428 if test x$ac_cv_header_mythes_h != xyes; then
429 AC_CHECK_HEADER(mythes/mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes/mythes.hxx>"])
431 AC_CHECK_LIB(mythes, main, [MYTHES_LIBS="-lmythes" lyx_mythes=yes], [lyx_mythes=no], [-lm])
432 if test x$lyx_mythes != xyes; then
433 AC_CHECK_LIB(mythes-1.2, main, [MYTHES_LIBS="-lmythes-1.2" lyx_mythes=yes], [lyx_mythes=no], [-lm])
436 if test x$lyx_mythes != xyes -o x$ac_cv_header_mythes_h != xyes; then
437 AC_MSG_ERROR([cannot find suitable MyThes library (do not use --without-included-mythes)])
439 AC_DEFINE(USE_EXTERNAL_MYTHES, 1, [Define as 1 to use an external MyThes library])
440 AC_DEFINE_UNQUOTED(MYTHES_H_LOCATION,$lyx_cv_mythes_h_location,[Location of mythes.hxx])
441 AC_SUBST(MYTHES_LIBS)
446 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
447 dnl [default-yes-value])
448 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
449 dnl resulting directory name in 'dir-var-name'.
450 AC_DEFUN([LYX_WITH_DIR],[
451 AC_ARG_WITH($1,[AC_HELP_STRING([--with-$1],[specify $2])])
452 AC_MSG_CHECKING([for $2])
453 if test -z "$with_$3"; then
454 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
456 test "x$with_$3" = xyes && with_$3=$5
459 AC_MSG_RESULT($lyx_cv_$3)])
462 dnl Usage: LYX_LOOP_DIR(value,action)
463 dnl Executes action for values of variable `dir' in `values'. `values' can
464 dnl use ":" as a separator.
465 AC_DEFUN([LYX_LOOP_DIR],[
466 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
467 for dir in `eval "echo $1"`; do
468 if test ! "$dir" = NONE; then
469 test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
477 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
479 AC_DEFUN([LYX_ADD_LIB_DIR],[
481 if test "`(uname) 2>/dev/null`" = SunOS &&
482 uname -r | grep '^5' >/dev/null; then
483 if test $ac_cv_prog_gxx = yes ; then
484 $1="${$1} -Wl[,]-R$2"
491 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
493 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
495 ### Check for a headers existence and location iff it exists
496 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
497 ## It almost works. I've tried a few variations but they give errors
498 ## of one sort or other: bad substitution or file not found etc. The
499 ## actual header _is_ found though and the cache variable is set however
500 ## the reported setting (on screen) is equal to $ac_safe for some unknown
502 ## Additionally, autoheader can't figure out what to use as the name in
503 ## the config.h.in file so we need to write our own entries there -- one for
504 ## each header in the form PATH_HEADER_NAME_H
506 AC_DEFUN([LYX_PATH_HEADER],
507 [ AC_CHECK_HEADER($1,[
508 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
509 ### the only remaining problem is getting the second parameter to this
510 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
511 ### of $ac_safe being printed.
512 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
513 [ cat > conftest.$ac_ext <<EOF
514 #line __oline__ "configure"
515 #include "confdefs.h"
519 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
520 grep $1 2>/dev/null | \
521 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
522 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
524 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
526 ### end of LYX_PATH_HEADER
528 ## Check what kind of packaging should be used at install time.
529 ## The default is autodetected.
530 AC_DEFUN([LYX_USE_PACKAGING],
531 [AC_MSG_CHECKING([what packaging should be used])
532 AC_ARG_WITH(packaging,
533 [AC_HELP_STRING([--with-packaging=THIS], [use THIS packaging for installation:
534 Possible values: posix, windows, macosx])],
535 [lyx_use_packaging="$withval"], [
537 *-apple-darwin*) lyx_use_packaging=macosx ;;
538 *-pc-mingw32*) lyx_use_packaging=windows;;
539 *) lyx_use_packaging=posix;;
541 AC_MSG_RESULT($lyx_use_packaging)
542 lyx_install_posix=false
543 lyx_install_macosx=false
544 lyx_install_cygwin=false
545 lyx_install_windows=false
546 case $lyx_use_packaging in
547 macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
548 PACKAGE=LyX${version_suffix}
549 default_prefix="/Applications/${PACKAGE}.app"
550 AC_SUBST(osx_bundle_program_name,"${program_base_name}")
551 bindir='${prefix}/Contents/MacOS'
552 libdir='${prefix}/Contents/Resources'
553 datarootdir='${prefix}/Contents/Resources'
554 pkgdatadir='${datadir}'
555 mandir='${datadir}/man'
556 lyx_install_macosx=true ;;
557 windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
558 PACKAGE=LyX${version_suffix}
559 default_prefix="C:/Program Files/${PACKAGE}"
560 bindir='${prefix}/bin'
561 libdir='${prefix}/Resources'
562 datarootdir='${prefix}/Resources'
563 pkgdatadir='${datadir}'
564 mandir='${prefix}/Resources/man'
565 lyx_install_windows=true ;;
566 posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
567 PACKAGE=lyx${version_suffix}
568 program_suffix=$version_suffix
569 pkgdatadir='${datadir}/${PACKAGE}'
570 default_prefix=$ac_default_prefix
572 *cygwin*) lyx_install_cygwin=true ;;
573 *apple-darwin*) lyx_install_macosx=true ;;
575 lyx_install_posix=true ;;
576 *) AC_MSG_ERROR([unknown packaging type $lyx_use_packaging.]) ;;
578 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
579 AM_CONDITIONAL(INSTALL_WINDOWS, $lyx_install_windows)
580 AM_CONDITIONAL(INSTALL_CYGWIN, $lyx_install_cygwin)
581 AM_CONDITIONAL(INSTALL_POSIX, $lyx_install_posix)
583 AC_SUBST(program_suffix)
587 ## ------------------------------------------------------------------------
588 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
589 ## one or two arguments.
591 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
592 ## ------------------------------------------------------------------------
594 AC_DEFUN([AC_FUNC_MKDIR],
595 [AC_CHECK_FUNCS([mkdir _mkdir])
596 AC_CACHE_CHECK([whether mkdir takes one argument],
597 [ac_cv_mkdir_takes_one_arg],
599 #include <sys/stat.h>
604 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
605 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
606 AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
607 [Define if mkdir takes only one argument.])
612 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
613 dnl (which may be a relative path, and need not refer to any existing
616 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
617 dnl native Win32 path name, (but with slashes, not backslashes).
619 dnl On any other system, it is simply the result which would be obtained
620 dnl if PATHNAME represented an existing directory, and the pwd command was
621 dnl executed in that directory.
622 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
624 ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
625 ac_pwd_w="pwd -W" || ac_pwd_w=pwd
626 until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
628 ac_dir=`AS_DIRNAME(["$ac_dir"])`
630 ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
631 ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
632 $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
636 dnl this is used by the macro blow to general a proper config.h.in entry
637 m4_define([LYX_AH_CHECK_DECL],
638 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
639 [Define if you have the prototype for function `$1'])])
641 dnl Check things are declared in headers to avoid errors or warnings.
642 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
643 dnl Defines HAVE_DECL_{FUNCTION}
644 AC_DEFUN([LYX_CHECK_DECL],
645 [LYX_AH_CHECK_DECL($1)
648 AC_MSG_CHECKING([if $1 is declared by header $ac_header])
649 AC_EGREP_HEADER($1, $ac_header,
651 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
656 dnl this is used by the macro below to generate a proper config.h.in entry
657 m4_define([LYX_AH_CHECK_DEF],
658 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
659 [Define to 1 if `$1' is defined in `$2'])])
661 dnl Check whether name is defined in header by using it in codesnippet.
662 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
663 dnl Defines HAVE_DEF_{NAME}
664 AC_DEFUN([LYX_CHECK_DEF],
665 [LYX_AH_CHECK_DEF($1, $2)
666 AC_MSG_CHECKING([whether $1 is defined by header $2])
667 AC_TRY_COMPILE([#include <$2>], [$3],
668 lyx_have_def_name=yes,
669 lyx_have_def_name=no)
670 AC_MSG_RESULT($lyx_have_def_name)
671 if test "x$lyx_have_def_name" = xyes; then
672 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
676 dnl Extract the single digits from PACKAGE_VERSION and make them available.
677 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
678 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
679 AC_DEFUN([LYX_SET_VERSION_INFO],
680 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
681 lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
682 lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
683 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
684 lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
685 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
686 test "x$lyx_patch" = "x" && lyx_patch=0
687 lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
688 lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
689 AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
690 AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
691 AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
692 AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
693 AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
694 AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
697 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
698 # ---------------------------------------------------------------------------
699 # Copied from autoconf 2.68, added a check that python version is < 3.0
700 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
701 # Run ACTION-IF-FALSE otherwise.
702 # This test uses sys.hexversion instead of the string equivalent (first
703 # word of sys.version), in order to cope with versions such as 2.2c1.
704 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
705 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
707 # split strings by '.' and convert to numeric. Append some zeros
708 # because we need at least 4 digits for the hex conversion.
709 # map returns an iterator in Python 3.0 and a list in 2.x
710 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
712 maxverhex = 50331648 # = 3.0.0.0
713 # xrange is not present in Python 3.0 and range returns an iterator
714 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
715 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
716 AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])