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 Check whether to configure for Qt5. Default is Qt4.
67 AC_DEFUN([LYX_CHECK_QT5],[
68 AC_MSG_CHECKING([whether Qt5 is requested])
70 [ --enable-qt5 use Qt5 for building],
71 USE_QT5=$enableval, USE_QT5=no)
72 AC_MSG_RESULT([$USE_QT5])
77 dnl Usage: LYX_WARNING(message) Displays the warning "message" and sets the
78 dnl flag lyx_warning to yes.
79 AC_DEFUN([LYX_WARNING],[
80 lyx_warning_txt="$lyx_warning_txt
86 dnl Usage: LYX_LIB_ERROR(file,library) Displays an error message indication
87 dnl that 'file' cannot be found because 'lib' may be uncorrectly installed.
88 AC_DEFUN([LYX_LIB_ERROR],[
89 AC_MSG_ERROR([cannot find $1. Please check that the $2 library
90 is correctly installed on your system.])])
93 dnl Usage: LYX_CHECK_WARNINGS Displays a warning message if a LYX_WARNING
94 dnl has occured previously.
95 AC_DEFUN([LYX_CHECK_WARNINGS],[
96 if test x$lyx_warning = xyes; then
98 === The following minor problems have been detected by configure.
99 === Please check the messages below before running 'make'.
100 === (see the section 'Problems' in the INSTALL file)
107 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
109 define(LYX_SEARCH_PROG,[dnl
110 for ac_prog in $2 ; do
111 # Extract the first word of "$ac_prog", so it can be a program name with args.
112 set dummy $ac_prog ; ac_word=$[2]
113 if test -z "[$]$1"; then
114 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
115 for ac_dir in $PATH; do
116 test -z "$ac_dir" && ac_dir=.
117 if test -f [$ac_dir/$ac_word]; then
125 if test -n "[$]$1"; then
131 test -n "[$]$1" && break
136 AC_DEFUN([LYX_PROG_CXX_WORKS],
138 cat >conftest.C <<EOF
140 // we require the mutable keyword
143 // we require namespace support
151 $CXX -c $CXXFLAGS $CPPFLAGS conftest.C >&5 || CXX=
152 rm -f conftest.C conftest.o conftest.obj || true
156 dnl Usage: LYX_PROG_CLANG: set lyx_cv_prog_clang to yes if the compiler is clang.
157 AC_DEFUN([LYX_PROG_CLANG],
158 [AC_CACHE_CHECK([whether the compiler is clang],
160 [AC_TRY_COMPILE([], [
165 [lyx_cv_prog_clang=yes ; CLANG=yes], [lyx_cv_prog_clang=no ; CLANG=no])])
169 dnl Usage: LYX_LIB_STDCXX: set lyx_cv_lib_stdcxx to yes if the STL library is libstdc++.
170 AC_DEFUN([LYX_LIB_STDCXX],
171 [AC_CACHE_CHECK([whether STL is libstdc++],
173 [AC_TRY_COMPILE([#include<vector>], [
174 #if ! defined(__GLIBCXX__) && ! defined(__GLIBCPP__)
175 this is not libstdc++
178 [lyx_cv_lib_stdcxx=yes], [lyx_cv_lib_stdcxx=no])])
182 AC_DEFUN([LYX_PROG_CXX],
183 [AC_MSG_CHECKING([for a good enough C++ compiler])
184 LYX_SEARCH_PROG(CXX, $CXX $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS])
186 if test -z "$CXX" ; then
187 AC_MSG_ERROR([Unable to find a good enough C++ compiler])
191 AC_REQUIRE([AC_PROG_CXX])
192 AC_REQUIRE([AC_PROG_CXXCPP])
198 if test $lyx_cv_lib_stdcxx = "yes" ; then
199 AC_DEFINE(STD_STRING_USES_COW, 1, [std::string uses copy-on-write])
201 if test $lyx_cv_prog_clang = "yes" ; then
202 AC_DEFINE(USE_LLVM_LIBCPP, 1, [use libc++ provided by llvm instead of GNU libstdc++])
206 ### We might want to get or shut warnings.
207 AC_ARG_ENABLE(warnings,
208 AC_HELP_STRING([--enable-warnings],[tell the compiler to display more warnings]),,
209 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
214 if test x$enable_warnings = xyes ; then
215 lyx_flags="$lyx_flags warnings"
218 ### We might want to disable debug
220 AC_HELP_STRING([--enable-debug],[enable debug information]),,
221 [AS_CASE([$build_type], [rel*], [enable_debug=no], [enable_debug=yes])]
224 AC_ARG_ENABLE(stdlib-debug,
225 AC_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
226 [AS_CASE([$build_type], [dev*], [enable_stdlib_debug=yes],
227 [enable_stdlib_debug=no])]
230 AC_ARG_ENABLE(concept-checks,
231 AC_HELP_STRING([--enable-concept-checks],[enable concept checks]),,
232 [AS_CASE([$build_type], [dev*|pre*], [enable_concept_checks=yes],
233 [enable_concept_checks=no])]
234 if test x$USE_QT5 = xyes ; then
235 enable_concept_checks=no
239 ### set up optimization
240 AC_ARG_ENABLE(optimization,
241 AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
242 enable_optimization=yes;)
243 case $enable_optimization in
245 if test $lyx_devel_version = yes ; then
251 *) lyx_opt=${enable_optimization};;
255 AC_HELP_STRING([--enable-pch],[enable precompiled headers]),,
260 AC_HELP_STRING([--enable-cxx11],[enable C++11 mode]),,
263 AC_ARG_ENABLE(assertions,
264 AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
265 [AS_CASE([$build_type], [dev*|pre*], [enable_assertions=yes],
266 [enable_assertions=no])]
268 if test "x$enable_assertions" = xyes ; then
269 lyx_flags="$lyx_flags assertions"
270 AC_DEFINE(ENABLE_ASSERTIONS,1,
271 [Define if you want assertions to be enabled in the code])
274 # set the compiler options correctly.
275 if test x$GXX = xyes; then
276 dnl clang++ pretends to be g++ 4.2.1; this is not useful
277 if test x$CLANG = xno; then
278 dnl Useful for global version info
279 gxx_version=`${CXX} -dumpversion`
280 CXX_VERSION="($gxx_version)"
283 if test "$ac_test_CXXFLAGS" = set; then
284 CXXFLAGS="$ac_save_CXXFLAGS"
288 if test x$enable_debug = xyes ; then
290 CXXFLAGS="-g $CXXFLAGS"
292 if test $build_type = gprof ; then
294 CXXFLAGS="-pg $CXXFLAGS"
295 LDFLAGS="-pg $LDFLAGS"
297 if test $build_type = profiling ; then
298 CFLAGS="$CFLAGS -fno-omit-frame-pointer"
299 CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
302 if test "$ac_env_CPPFLAGS_set" != set; then
303 if test x$USE_QT5 = xyes ; then
304 AS_CASE([$host], [*mingw*|*cygwin*], [], [CPPFLAGS="-fPIC $CPPFLAGS"])
306 if test x$enable_warnings = xyes ; then
309 CPPFLAGS="-W -Wall $CPPFLAGS"
312 CPPFLAGS="-Wextra -Wall $CPPFLAGS "
318 3.1*) AM_CXXFLAGS="-finline-limit=500 ";;
319 3.2*|3.3*) AM_CXXFLAGS="";;
322 test $enable_pch = yes && lyx_pch_comp=yes
326 if test x$enable_stdlib_debug = xyes ; then
327 dnl FIXME: for clang/libc++, one should define _LIBCPP_DEBUG2=0
328 dnl See http://clang-developers.42468.n3.nabble.com/libc-debug-mode-td3336742.html
331 lyx_flags="$lyx_flags stdlib-debug"
332 AC_DEFINE(_GLIBCXX_DEBUG, 1, [libstdc++ debug mode])
333 AC_DEFINE(_GLIBCXX_DEBUG_PEDANTIC, 1, [libstdc++ pedantic debug mode])
337 if test x$enable_concept_checks = xyes ; then
340 lyx_flags="$lyx_flags concept-checks"
341 dnl FIXME check whether this makes sense with clang/libc++
342 AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
345 lyx_flags="$lyx_flags concept-checks"
346 AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
350 if test x$enable_cxx11 = xyes ; then
351 dnl FIXME: check what to do with clang (is anything needed at all?)
354 lyx_flags="$lyx_flags c++11-mode"
355 CXXFLAGS="-std=gnu++0x $CXXFLAGS"
358 lyx_flags="$lyx_flags c++11-mode"
359 CXXFLAGS="-std=gnu++11 $CXXFLAGS"
364 test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch"
365 AM_CONDITIONAL(LYX_BUILD_PCH, test "$lyx_pch_comp" = yes)
368 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
370 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
371 AC_MSG_CHECKING([whether to use included boost library])
372 AC_ARG_WITH(included-boost,
373 [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])],
374 [lyx_cv_with_included_boost=$withval],
375 [lyx_cv_with_included_boost=yes])
376 AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
377 AC_MSG_RESULT([$lyx_cv_with_included_boost])
378 if test x$lyx_cv_with_included_boost = xyes ; then
379 BOOST_INCLUDES='-I$(top_srcdir)/boost'
380 BOOST_LIBS='$(top_builddir)/boost/liblyxboost.a'
385 AC_MSG_CHECKING([for multithreaded boost libraries])
386 LIBS="$save_LIBS -lboost_signals-mt -lm $LIBTHREAD"
388 [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
389 [boost::signal<void ()> s;])],
390 [AC_MSG_RESULT([yes])
393 AC_MSG_CHECKING([for plain boost libraries])
394 LIBS="$save_LIBS -lboost_signals -lm"
396 [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
397 [boost::signal<void ()> s;])],
398 [AC_MSG_RESULT([yes])
401 AC_MSG_ERROR([cannot find suitable boost library (do not use --without-included-boost)])
407 BOOST_LIBS="-lboost_regex${BOOST_MT} -lboost_signals${BOOST_MT}"
409 AC_SUBST(BOOST_INCLUDES)
414 dnl Usage: LYX_CHECK_CALLSTACK_PRINTING: define LYX_CALLSTACK_PRINTING if the
415 dnl necessary APIs are available to print callstacks.
416 AC_DEFUN([LYX_CHECK_CALLSTACK_PRINTING],
417 [AC_CACHE_CHECK([whether printing callstack is possible],
418 [lyx_cv_callstack_printing],
420 #include <execinfo.h>
424 size_t size = backtrace(array, 200);
425 backtrace_symbols(array, size);
427 abi::__cxa_demangle("abcd", 0, 0, &status);
429 [lyx_cv_callstack_printing=yes], [lyx_cv_callstack_printing=no])])
430 if test x"$lyx_cv_callstack_printing" = xyes; then
431 AC_DEFINE([LYX_CALLSTACK_PRINTING], 1,
432 [Define if callstack can be printed])
437 dnl Usage: LYX_USE_INCLUDED_MYTHES : select if the included MyThes should
439 AC_DEFUN([LYX_USE_INCLUDED_MYTHES],[
440 AC_MSG_CHECKING([whether to use included MyThes library])
441 AC_ARG_WITH(included-mythes,
442 [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])],
443 [lyx_cv_with_included_mythes=$withval],
444 [lyx_cv_with_included_mythes=yes])
445 AM_CONDITIONAL(USE_INCLUDED_MYTHES, test x$lyx_cv_with_included_mythes = xyes)
446 AC_MSG_RESULT([$lyx_cv_with_included_mythes])
447 if test x$lyx_cv_with_included_mythes != xyes ; then
449 AC_CHECK_HEADER(mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes.hxx>"])
450 if test x$ac_cv_header_mythes_h != xyes; then
451 AC_CHECK_HEADER(mythes/mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes/mythes.hxx>"])
453 AC_CHECK_LIB(mythes, main, [MYTHES_LIBS="-lmythes" lyx_mythes=yes], [lyx_mythes=no], [-lm])
454 if test x$lyx_mythes != xyes; then
455 AC_CHECK_LIB(mythes-1.2, main, [MYTHES_LIBS="-lmythes-1.2" lyx_mythes=yes], [lyx_mythes=no], [-lm])
458 if test x$lyx_mythes != xyes -o x$ac_cv_header_mythes_h != xyes; then
459 AC_MSG_ERROR([cannot find suitable MyThes library (do not use --without-included-mythes)])
461 AC_DEFINE(USE_EXTERNAL_MYTHES, 1, [Define as 1 to use an external MyThes library])
462 AC_DEFINE_UNQUOTED(MYTHES_H_LOCATION,$lyx_cv_mythes_h_location,[Location of mythes.hxx])
463 AC_SUBST(MYTHES_LIBS)
468 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
469 dnl [default-yes-value])
470 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
471 dnl resulting directory name in 'dir-var-name'.
472 AC_DEFUN([LYX_WITH_DIR],[
473 AC_ARG_WITH($1,[AC_HELP_STRING([--with-$1],[specify $2])])
474 AC_MSG_CHECKING([for $2])
475 if test -z "$with_$3"; then
476 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
478 test "x$with_$3" = xyes && with_$3=$5
481 AC_MSG_RESULT($lyx_cv_$3)])
484 dnl Usage: LYX_LOOP_DIR(value,action)
485 dnl Executes action for values of variable `dir' in `values'. `values' can
486 dnl use ":" as a separator.
487 AC_DEFUN([LYX_LOOP_DIR],[
488 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
489 for dir in `eval "echo $1"`; do
490 if test ! "$dir" = NONE; then
491 test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
499 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
501 AC_DEFUN([LYX_ADD_LIB_DIR],[
503 if test "`(uname) 2>/dev/null`" = SunOS &&
504 uname -r | grep '^5' >/dev/null; then
505 if test $ac_cv_prog_gxx = yes ; then
506 $1="${$1} -Wl[,]-R$2"
513 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
515 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
517 ### Check for a headers existence and location iff it exists
518 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
519 ## It almost works. I've tried a few variations but they give errors
520 ## of one sort or other: bad substitution or file not found etc. The
521 ## actual header _is_ found though and the cache variable is set however
522 ## the reported setting (on screen) is equal to $ac_safe for some unknown
524 ## Additionally, autoheader can't figure out what to use as the name in
525 ## the config.h.in file so we need to write our own entries there -- one for
526 ## each header in the form PATH_HEADER_NAME_H
528 AC_DEFUN([LYX_PATH_HEADER],
529 [ AC_CHECK_HEADER($1,[
530 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
531 ### the only remaining problem is getting the second parameter to this
532 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
533 ### of $ac_safe being printed.
534 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
535 [ cat > conftest.$ac_ext <<EOF
536 #line __oline__ "configure"
537 #include "confdefs.h"
541 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
542 grep $1 2>/dev/null | \
543 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
544 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
546 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
548 ### end of LYX_PATH_HEADER
550 ## Check what kind of packaging should be used at install time.
551 ## The default is autodetected.
552 AC_DEFUN([LYX_USE_PACKAGING],
553 [AC_MSG_CHECKING([what packaging should be used])
554 AC_ARG_WITH(packaging,
555 [AC_HELP_STRING([--with-packaging=THIS], [use THIS packaging for installation:
556 Possible values: posix, windows, macosx])],
557 [lyx_use_packaging="$withval"], [
559 *-apple-darwin*) lyx_use_packaging=macosx ;;
560 *-pc-mingw32*) lyx_use_packaging=windows;;
561 *) lyx_use_packaging=posix;;
563 AC_MSG_RESULT($lyx_use_packaging)
564 lyx_install_posix=false
565 lyx_install_macosx=false
566 lyx_install_cygwin=false
567 lyx_install_windows=false
568 case $lyx_use_packaging in
569 macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
570 PACKAGE=LyX${version_suffix}
571 default_prefix="/Applications/${PACKAGE}.app"
572 AC_SUBST(osx_bundle_program_name,"${program_base_name}")
573 bindir='${prefix}/Contents/MacOS'
574 libdir='${prefix}/Contents/Resources'
575 datarootdir='${prefix}/Contents/Resources'
576 pkgdatadir='${datadir}'
577 mandir='${datadir}/man'
578 lyx_install_macosx=true ;;
579 windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
580 PACKAGE=LyX${version_suffix}
581 default_prefix="C:/Program Files/${PACKAGE}"
582 bindir='${prefix}/bin'
583 libdir='${prefix}/Resources'
584 datarootdir='${prefix}/Resources'
585 pkgdatadir='${datadir}'
586 mandir='${prefix}/Resources/man'
587 lyx_install_windows=true ;;
588 posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
589 PACKAGE=lyx${version_suffix}
590 program_suffix=$version_suffix
591 pkgdatadir='${datadir}/${PACKAGE}'
592 default_prefix=$ac_default_prefix
594 *cygwin*) lyx_install_cygwin=true ;;
595 *apple-darwin*) lyx_install_macosx=true ;;
597 lyx_install_posix=true ;;
598 *) AC_MSG_ERROR([unknown packaging type $lyx_use_packaging.]) ;;
600 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
601 AM_CONDITIONAL(INSTALL_WINDOWS, $lyx_install_windows)
602 AM_CONDITIONAL(INSTALL_CYGWIN, $lyx_install_cygwin)
603 AM_CONDITIONAL(INSTALL_POSIX, $lyx_install_posix)
605 AC_SUBST(program_suffix)
609 ## ------------------------------------------------------------------------
610 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
611 ## one or two arguments.
613 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
614 ## ------------------------------------------------------------------------
616 AC_DEFUN([AC_FUNC_MKDIR],
617 [AC_CHECK_FUNCS([mkdir _mkdir])
618 AC_CACHE_CHECK([whether mkdir takes one argument],
619 [ac_cv_mkdir_takes_one_arg],
621 #include <sys/stat.h>
626 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
627 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
628 AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
629 [Define if mkdir takes only one argument.])
634 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
635 dnl (which may be a relative path, and need not refer to any existing
638 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
639 dnl native Win32 path name, (but with slashes, not backslashes).
641 dnl On any other system, it is simply the result which would be obtained
642 dnl if PATHNAME represented an existing directory, and the pwd command was
643 dnl executed in that directory.
644 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
646 ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
647 ac_pwd_w="pwd -W" || ac_pwd_w=pwd
648 until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
650 ac_dir=`AS_DIRNAME(["$ac_dir"])`
652 ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
653 ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
654 $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
658 dnl this is used by the macro blow to general a proper config.h.in entry
659 m4_define([LYX_AH_CHECK_DECL],
660 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
661 [Define if you have the prototype for function `$1'])])
663 dnl Check things are declared in headers to avoid errors or warnings.
664 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
665 dnl Defines HAVE_DECL_{FUNCTION}
666 AC_DEFUN([LYX_CHECK_DECL],
667 [LYX_AH_CHECK_DECL($1)
670 AC_MSG_CHECKING([if $1 is declared by header $ac_header])
671 AC_EGREP_HEADER($1, $ac_header,
673 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
678 dnl this is used by the macro below to generate a proper config.h.in entry
679 m4_define([LYX_AH_CHECK_DEF],
680 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
681 [Define to 1 if `$1' is defined in `$2'])])
683 dnl Check whether name is defined in header by using it in codesnippet.
684 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
685 dnl Defines HAVE_DEF_{NAME}
686 AC_DEFUN([LYX_CHECK_DEF],
687 [LYX_AH_CHECK_DEF($1, $2)
688 AC_MSG_CHECKING([whether $1 is defined by header $2])
689 AC_TRY_COMPILE([#include <$2>], [$3],
690 lyx_have_def_name=yes,
691 lyx_have_def_name=no)
692 AC_MSG_RESULT($lyx_have_def_name)
693 if test "x$lyx_have_def_name" = xyes; then
694 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
698 dnl Extract the single digits from PACKAGE_VERSION and make them available.
699 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
700 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
701 AC_DEFUN([LYX_SET_VERSION_INFO],
702 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
703 lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
704 lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
705 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
706 lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
707 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
708 test "x$lyx_patch" = "x" && lyx_patch=0
709 lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
710 lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
711 AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
712 AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
713 AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
714 AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
715 AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
716 AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
719 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
720 # ---------------------------------------------------------------------------
721 # Copied from autoconf 2.68, added a check that python version is < 3.0
722 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
723 # Run ACTION-IF-FALSE otherwise.
724 # This test uses sys.hexversion instead of the string equivalent (first
725 # word of sys.version), in order to cope with versions such as 2.2c1.
726 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
727 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
729 # split strings by '.' and convert to numeric. Append some zeros
730 # because we need at least 4 digits for the hex conversion.
731 # map returns an iterator in Python 3.0 and a list in 2.x
732 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
734 maxverhex = 50331648 # = 3.0.0.0
735 # xrange is not present in Python 3.0 and range returns an iterator
736 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
737 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
738 AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])