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])
189 if test $lyx_cv_prog_clang = "yes" ; then
190 AC_DEFINE(USE_LLVM_LIBCPP, 1, [use libc++ provided by llvm instead of GNU libstdc++])
194 ### We might want to get or shut warnings.
195 AC_ARG_ENABLE(warnings,
196 AC_HELP_STRING([--enable-warnings],[tell the compiler to display more warnings]),,
197 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
202 if test x$enable_warnings = xyes ; then
203 lyx_flags="$lyx_flags warnings"
206 ### We might want to disable debug
208 AC_HELP_STRING([--enable-debug],[enable debug information]),,
209 [AS_CASE([$build_type], [rel*], [enable_debug=no], [enable_debug=yes])]
212 AC_ARG_ENABLE(stdlib-debug,
213 AC_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
214 [AS_CASE([$build_type], [dev*], [enable_stdlib_debug=yes],
215 [enable_stdlib_debug=no])]
218 AC_ARG_ENABLE(concept-checks,
219 AC_HELP_STRING([--enable-concept-checks],[enable concept checks]),,
220 [AS_CASE([$build_type], [dev*|pre*], [enable_concept_checks=yes],
221 [enable_concept_checks=no])]
224 ### set up optimization
225 AC_ARG_ENABLE(optimization,
226 AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
227 enable_optimization=yes;)
228 case $enable_optimization in
230 if test $lyx_devel_version = yes ; then
236 *) lyx_opt=${enable_optimization};;
240 AC_HELP_STRING([--enable-pch],[enable precompiled headers]),,
245 AC_HELP_STRING([--enable-cxx11],[enable C++11 mode]),,
248 AC_ARG_ENABLE(assertions,
249 AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
250 [AS_CASE([$build_type], [dev*|pre*], [enable_assertions=yes],
251 [enable_assertions=no])]
253 if test "x$enable_assertions" = xyes ; then
254 lyx_flags="$lyx_flags assertions"
255 AC_DEFINE(ENABLE_ASSERTIONS,1,
256 [Define if you want assertions to be enabled in the code])
259 # set the compiler options correctly.
260 if test x$GXX = xyes; then
261 dnl clang++ pretends to be g++ 4.2.1; this is not useful
262 if test x$CLANG = xno; then
263 dnl Useful for global version info
264 gxx_version=`${CXX} -dumpversion`
265 CXX_VERSION="($gxx_version)"
268 if test "$ac_test_CXXFLAGS" = set; then
269 CXXFLAGS="$ac_save_CXXFLAGS"
273 if test x$enable_debug = xyes ; then
275 CXXFLAGS="-g $CXXFLAGS"
277 if test $build_type = gprof ; then
279 CXXFLAGS="-pg $CXXFLAGS"
280 LDFLAGS="-pg $LDFLAGS"
282 if test $build_type = profiling ; then
283 CFLAGS="$CFLAGS -fno-omit-frame-pointer"
284 CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
287 if test "$ac_env_CPPFLAGS_set" != set; then
288 if test x$enable_warnings = xyes ; then
291 CPPFLAGS="-W -Wall $CPPFLAGS"
294 CPPFLAGS="-Wextra -Wall $CPPFLAGS "
300 3.1*) AM_CXXFLAGS="-finline-limit=500 ";;
301 3.2*|3.3*) AM_CXXFLAGS="";;
304 test $enable_pch = yes && lyx_pch_comp=yes
308 if test x$enable_stdlib_debug = xyes ; then
309 dnl FIXME: for clang/libc++, one should define _LIBCPP_DEBUG2=0
310 dnl See http://clang-developers.42468.n3.nabble.com/libc-debug-mode-td3336742.html
313 lyx_flags="$lyx_flags stdlib-debug"
314 AC_DEFINE(_GLIBCXX_DEBUG, 1, [libstdc++ debug mode])
315 AC_DEFINE(_GLIBCXX_DEBUG_PEDANTIC, 1, [libstdc++ pedantic debug mode])
319 if test x$enable_concept_checks = xyes ; then
322 lyx_flags="$lyx_flags concept-checks"
323 dnl FIXME check whether this makes sense with clang/libc++
324 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
327 lyx_flags="$lyx_flags concept-checks"
328 AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
332 if test x$enable_cxx11 = xyes ; then
333 dnl FIXME: check what to do with clang (is anything needed at all?)
336 lyx_flags="$lyx_flags c++11-mode"
337 CXXFLAGS="-std=gnu++0x $CXXFLAGS"
340 lyx_flags="$lyx_flags c++11-mode"
341 CXXFLAGS="-std=gnu++11 $CXXFLAGS"
346 test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch"
347 AM_CONDITIONAL(LYX_BUILD_PCH, test "$lyx_pch_comp" = yes)
350 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
352 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
353 AC_MSG_CHECKING([whether to use included boost library])
354 AC_ARG_WITH(included-boost,
355 [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])],
356 [lyx_cv_with_included_boost=$withval],
357 [lyx_cv_with_included_boost=yes])
358 AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
359 AC_MSG_RESULT([$lyx_cv_with_included_boost])
360 if test x$lyx_cv_with_included_boost = xyes ; then
361 BOOST_INCLUDES='-I$(top_srcdir)/boost'
362 BOOST_LIBS='$(top_builddir)/boost/liblyxboost.a'
367 AC_MSG_CHECKING([for multithreaded boost libraries])
368 LIBS="$save_LIBS -lboost_signals-mt -lm $LIBTHREAD"
370 [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
371 [boost::signal<void ()> s;])],
372 [AC_MSG_RESULT([yes])
375 AC_MSG_CHECKING([for plain boost libraries])
376 LIBS="$save_LIBS -lboost_signals -lm"
378 [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
379 [boost::signal<void ()> s;])],
380 [AC_MSG_RESULT([yes])
383 AC_MSG_ERROR([cannot find suitable boost library (do not use --without-included-boost)])
389 BOOST_LIBS="-lboost_regex${BOOST_MT} -lboost_signals${BOOST_MT}"
391 AC_SUBST(BOOST_INCLUDES)
396 dnl Usage: LYX_CHECK_CALLSTACK_PRINTING: define LYX_CALLSTACK_PRINTING if the
397 dnl necessary APIs are available to print callstacks.
398 AC_DEFUN([LYX_CHECK_CALLSTACK_PRINTING],
399 [AC_CACHE_CHECK([whether printing callstack is possible],
400 [lyx_cv_callstack_printing],
402 #include <execinfo.h>
406 size_t size = backtrace(array, 200);
407 backtrace_symbols(array, size);
409 abi::__cxa_demangle("abcd", 0, 0, &status);
411 [lyx_cv_callstack_printing=yes], [lyx_cv_callstack_printing=no])])
412 if test x"$lyx_cv_callstack_printing" = xyes; then
413 AC_DEFINE([LYX_CALLSTACK_PRINTING], 1,
414 [Define if callstack can be printed])
419 dnl Usage: LYX_USE_INCLUDED_MYTHES : select if the included MyThes should
421 AC_DEFUN([LYX_USE_INCLUDED_MYTHES],[
422 AC_MSG_CHECKING([whether to use included MyThes library])
423 AC_ARG_WITH(included-mythes,
424 [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])],
425 [lyx_cv_with_included_mythes=$withval],
426 [lyx_cv_with_included_mythes=yes])
427 AM_CONDITIONAL(USE_INCLUDED_MYTHES, test x$lyx_cv_with_included_mythes = xyes)
428 AC_MSG_RESULT([$lyx_cv_with_included_mythes])
429 if test x$lyx_cv_with_included_mythes != xyes ; then
431 AC_CHECK_HEADER(mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes.hxx>"])
432 if test x$ac_cv_header_mythes_h != xyes; then
433 AC_CHECK_HEADER(mythes/mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes/mythes.hxx>"])
435 AC_CHECK_LIB(mythes, main, [MYTHES_LIBS="-lmythes" lyx_mythes=yes], [lyx_mythes=no], [-lm])
436 if test x$lyx_mythes != xyes; then
437 AC_CHECK_LIB(mythes-1.2, main, [MYTHES_LIBS="-lmythes-1.2" lyx_mythes=yes], [lyx_mythes=no], [-lm])
440 if test x$lyx_mythes != xyes -o x$ac_cv_header_mythes_h != xyes; then
441 AC_MSG_ERROR([cannot find suitable MyThes library (do not use --without-included-mythes)])
443 AC_DEFINE(USE_EXTERNAL_MYTHES, 1, [Define as 1 to use an external MyThes library])
444 AC_DEFINE_UNQUOTED(MYTHES_H_LOCATION,$lyx_cv_mythes_h_location,[Location of mythes.hxx])
445 AC_SUBST(MYTHES_LIBS)
450 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
451 dnl [default-yes-value])
452 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
453 dnl resulting directory name in 'dir-var-name'.
454 AC_DEFUN([LYX_WITH_DIR],[
455 AC_ARG_WITH($1,[AC_HELP_STRING([--with-$1],[specify $2])])
456 AC_MSG_CHECKING([for $2])
457 if test -z "$with_$3"; then
458 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
460 test "x$with_$3" = xyes && with_$3=$5
463 AC_MSG_RESULT($lyx_cv_$3)])
466 dnl Usage: LYX_LOOP_DIR(value,action)
467 dnl Executes action for values of variable `dir' in `values'. `values' can
468 dnl use ":" as a separator.
469 AC_DEFUN([LYX_LOOP_DIR],[
470 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
471 for dir in `eval "echo $1"`; do
472 if test ! "$dir" = NONE; then
473 test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
481 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
483 AC_DEFUN([LYX_ADD_LIB_DIR],[
485 if test "`(uname) 2>/dev/null`" = SunOS &&
486 uname -r | grep '^5' >/dev/null; then
487 if test $ac_cv_prog_gxx = yes ; then
488 $1="${$1} -Wl[,]-R$2"
495 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
497 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
499 ### Check for a headers existence and location iff it exists
500 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
501 ## It almost works. I've tried a few variations but they give errors
502 ## of one sort or other: bad substitution or file not found etc. The
503 ## actual header _is_ found though and the cache variable is set however
504 ## the reported setting (on screen) is equal to $ac_safe for some unknown
506 ## Additionally, autoheader can't figure out what to use as the name in
507 ## the config.h.in file so we need to write our own entries there -- one for
508 ## each header in the form PATH_HEADER_NAME_H
510 AC_DEFUN([LYX_PATH_HEADER],
511 [ AC_CHECK_HEADER($1,[
512 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
513 ### the only remaining problem is getting the second parameter to this
514 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
515 ### of $ac_safe being printed.
516 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
517 [ cat > conftest.$ac_ext <<EOF
518 #line __oline__ "configure"
519 #include "confdefs.h"
523 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
524 grep $1 2>/dev/null | \
525 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
526 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
528 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
530 ### end of LYX_PATH_HEADER
532 ## Check what kind of packaging should be used at install time.
533 ## The default is autodetected.
534 AC_DEFUN([LYX_USE_PACKAGING],
535 [AC_MSG_CHECKING([what packaging should be used])
536 AC_ARG_WITH(packaging,
537 [AC_HELP_STRING([--with-packaging=THIS], [use THIS packaging for installation:
538 Possible values: posix, windows, macosx])],
539 [lyx_use_packaging="$withval"], [
541 *-apple-darwin*) lyx_use_packaging=macosx ;;
542 *-pc-mingw32*) lyx_use_packaging=windows;;
543 *) lyx_use_packaging=posix;;
545 AC_MSG_RESULT($lyx_use_packaging)
546 lyx_install_posix=false
547 lyx_install_macosx=false
548 lyx_install_cygwin=false
549 lyx_install_windows=false
550 case $lyx_use_packaging in
551 macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
552 PACKAGE=LyX${version_suffix}
553 default_prefix="/Applications/${PACKAGE}.app"
554 AC_SUBST(osx_bundle_program_name,"${program_base_name}")
555 bindir='${prefix}/Contents/MacOS'
556 libdir='${prefix}/Contents/Resources'
557 datarootdir='${prefix}/Contents/Resources'
558 pkgdatadir='${datadir}'
559 mandir='${datadir}/man'
560 lyx_install_macosx=true ;;
561 windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
562 PACKAGE=LyX${version_suffix}
563 default_prefix="C:/Program Files/${PACKAGE}"
564 bindir='${prefix}/bin'
565 libdir='${prefix}/Resources'
566 datarootdir='${prefix}/Resources'
567 pkgdatadir='${datadir}'
568 mandir='${prefix}/Resources/man'
569 lyx_install_windows=true ;;
570 posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
571 PACKAGE=lyx${version_suffix}
572 program_suffix=$version_suffix
573 pkgdatadir='${datadir}/${PACKAGE}'
574 default_prefix=$ac_default_prefix
576 *cygwin*) lyx_install_cygwin=true ;;
577 *apple-darwin*) lyx_install_macosx=true ;;
579 lyx_install_posix=true ;;
580 *) AC_MSG_ERROR([unknown packaging type $lyx_use_packaging.]) ;;
582 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
583 AM_CONDITIONAL(INSTALL_WINDOWS, $lyx_install_windows)
584 AM_CONDITIONAL(INSTALL_CYGWIN, $lyx_install_cygwin)
585 AM_CONDITIONAL(INSTALL_POSIX, $lyx_install_posix)
587 AC_SUBST(program_suffix)
591 ## ------------------------------------------------------------------------
592 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
593 ## one or two arguments.
595 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
596 ## ------------------------------------------------------------------------
598 AC_DEFUN([AC_FUNC_MKDIR],
599 [AC_CHECK_FUNCS([mkdir _mkdir])
600 AC_CACHE_CHECK([whether mkdir takes one argument],
601 [ac_cv_mkdir_takes_one_arg],
603 #include <sys/stat.h>
608 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
609 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
610 AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
611 [Define if mkdir takes only one argument.])
616 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
617 dnl (which may be a relative path, and need not refer to any existing
620 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
621 dnl native Win32 path name, (but with slashes, not backslashes).
623 dnl On any other system, it is simply the result which would be obtained
624 dnl if PATHNAME represented an existing directory, and the pwd command was
625 dnl executed in that directory.
626 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
628 ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
629 ac_pwd_w="pwd -W" || ac_pwd_w=pwd
630 until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
632 ac_dir=`AS_DIRNAME(["$ac_dir"])`
634 ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
635 ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
636 $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
640 dnl this is used by the macro blow to general a proper config.h.in entry
641 m4_define([LYX_AH_CHECK_DECL],
642 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
643 [Define if you have the prototype for function `$1'])])
645 dnl Check things are declared in headers to avoid errors or warnings.
646 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
647 dnl Defines HAVE_DECL_{FUNCTION}
648 AC_DEFUN([LYX_CHECK_DECL],
649 [LYX_AH_CHECK_DECL($1)
652 AC_MSG_CHECKING([if $1 is declared by header $ac_header])
653 AC_EGREP_HEADER($1, $ac_header,
655 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
660 dnl this is used by the macro below to generate a proper config.h.in entry
661 m4_define([LYX_AH_CHECK_DEF],
662 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
663 [Define to 1 if `$1' is defined in `$2'])])
665 dnl Check whether name is defined in header by using it in codesnippet.
666 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
667 dnl Defines HAVE_DEF_{NAME}
668 AC_DEFUN([LYX_CHECK_DEF],
669 [LYX_AH_CHECK_DEF($1, $2)
670 AC_MSG_CHECKING([whether $1 is defined by header $2])
671 AC_TRY_COMPILE([#include <$2>], [$3],
672 lyx_have_def_name=yes,
673 lyx_have_def_name=no)
674 AC_MSG_RESULT($lyx_have_def_name)
675 if test "x$lyx_have_def_name" = xyes; then
676 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
680 dnl Extract the single digits from PACKAGE_VERSION and make them available.
681 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
682 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
683 AC_DEFUN([LYX_SET_VERSION_INFO],
684 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
685 lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
686 lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
687 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
688 lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
689 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
690 test "x$lyx_patch" = "x" && lyx_patch=0
691 lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
692 lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
693 AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
694 AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
695 AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
696 AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
697 AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
698 AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
701 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
702 # ---------------------------------------------------------------------------
703 # Copied from autoconf 2.68, added a check that python version is < 3.0
704 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
705 # Run ACTION-IF-FALSE otherwise.
706 # This test uses sys.hexversion instead of the string equivalent (first
707 # word of sys.version), in order to cope with versions such as 2.2c1.
708 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
709 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
711 # split strings by '.' and convert to numeric. Append some zeros
712 # because we need at least 4 digits for the hex conversion.
713 # map returns an iterator in Python 3.0 and a list in 2.x
714 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
716 maxverhex = 50331648 # = 3.0.0.0
717 # xrange is not present in Python 3.0 and range returns an iterator
718 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
719 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
720 AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])