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 occurred 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 dnl Usage: LYX_PROG_CLANG: set CLANG to yes if the compiler is clang.
137 AC_DEFUN([LYX_PROG_CLANG],
138 [AC_CACHE_CHECK([whether the compiler is clang],
140 [AC_TRY_COMPILE([], [
145 [lyx_cv_prog_clang=yes ; CLANG=yes], [lyx_cv_prog_clang=no ; CLANG=no])])
149 dnl Usage: LYX_CXX_CXX11: set lyx_use_cxx11 to yes if the compiler implements
150 dnl the C++11 standard.
151 AC_DEFUN([LYX_CXX_CXX11],
152 [AC_CACHE_CHECK([whether the compiler implements C++11],
154 [save_CXXFLAGS=$CXXFLAGS
155 CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS"
158 #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
159 this is a c++11 compiler
162 [lyx_cv_cxx_cxx11=no], [lyx_cv_cxx_cxx11=yes ; lyx_flags="$lyx_flags c++11"])
164 CXXFLAGS=$save_CXXFLAGS])
165 lyx_use_cxx11=$lyx_cv_cxx_cxx11
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 dnl Usage: LYX_LIB_STDCXX_CXX11_ABI: set lyx_cv_lib_stdcxx_cxx11_abi to yes
183 dnl if the STL library is GNU libstdc++ and the C++11 ABI is used.
184 AC_DEFUN([LYX_LIB_STDCXX_CXX11_ABI],
185 [AC_CACHE_CHECK([whether STL is libstdc++ using the C++11 ABI],
186 [lyx_cv_lib_stdcxx_cxx11_abi],
187 [AC_TRY_COMPILE([#include<vector>], [
188 #if ! defined(_GLIBCXX_USE_CXX11_ABI) || ! _GLIBCXX_USE_CXX11_ABI
189 this is not libstdc++ using the C++11 ABI
192 [lyx_cv_lib_stdcxx_cxx11_abi=yes], [lyx_cv_lib_stdcxx_cxx11_abi=no])])
196 AC_DEFUN([LYX_PROG_CXX],
197 [AC_REQUIRE([AC_PROG_CXX])
198 AC_REQUIRE([AC_PROG_CXXCPP])
203 LYX_LIB_STDCXX_CXX11_ABI
206 if test $lyx_cv_lib_stdcxx = "yes" ; then
207 if test $lyx_cv_lib_stdcxx_cxx11_abi = "yes" ; then
208 AC_DEFINE(USE_GLIBCXX_CXX11_ABI, 1, [use GNU libstdc++ with C++11 ABI])
210 AC_DEFINE(STD_STRING_USES_COW, 1, [std::string uses copy-on-write])
213 if test $lyx_cv_prog_clang = "yes" ; then
214 AC_DEFINE(USE_LLVM_LIBCPP, 1, [use libc++ provided by llvm instead of GNU libstdc++])
218 ### We might want to get or shut warnings.
219 AC_ARG_ENABLE(warnings,
220 AC_HELP_STRING([--enable-warnings],[tell the compiler to display more warnings]),,
221 [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
226 if test x$enable_warnings = xyes ; then
227 lyx_flags="$lyx_flags warnings"
230 ### We might want to disable debug
232 AC_HELP_STRING([--enable-debug],[enable debug information]),,
233 [AS_CASE([$build_type], [rel*], [enable_debug=no], [enable_debug=yes])]
236 AC_ARG_ENABLE(stdlib-debug,
237 AC_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
238 [AS_CASE([$build_type], [dev*], [enable_stdlib_debug=yes],
239 [enable_stdlib_debug=no])]
242 ### set up optimization
243 AC_ARG_ENABLE(optimization,
244 AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
245 enable_optimization=yes;)
246 case $enable_optimization in
248 if test $lyx_devel_version = yes ; then
254 *) lyx_optim=${enable_optimization};;
258 AC_HELP_STRING([--disable-cxx11],[disable C++11 mode (default: enabled for known good compilers)]),,
261 AC_ARG_ENABLE(assertions,
262 AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
263 [AS_CASE([$build_type], [dev*|pre*], [enable_assertions=yes],
264 [enable_assertions=no])]
266 if test "x$enable_assertions" = xyes ; then
267 lyx_flags="$lyx_flags assertions"
268 AC_DEFINE(ENABLE_ASSERTIONS,1,
269 [Define if you want assertions to be enabled in the code])
272 # set the compiler options correctly.
274 if test x$GXX = xyes; then
275 dnl clang++ pretends to be g++ 4.2.1; this is not useful
276 if test x$CLANG = xno; then
277 dnl Useful for global version info
278 gxx_version=`${CXX} -dumpversion`
279 CXX_VERSION="($gxx_version)"
284 AM_CXXFLAGS="$lyx_optim"
285 if test x$enable_debug = xyes ; then
286 AM_CXXFLAGS="-g $AM_CXXFLAGS"
288 if test $build_type = gprof ; then
289 AM_CXXFLAGS="$AM_CXXFLAGS -pg"
290 AM_LDFLAGS="$AM_LDFLAGS -pg"
292 if test $build_type = profiling ; then
293 AM_CXXFLAGS="$AM_CXXFLAGS -fno-omit-frame-pointer"
296 if test x$USE_QT5 = xyes ; then
297 AS_CASE([$host], [*mingw*|*cygwin*], [], [AM_CXXFLAGS="-fPIC $AM_CXXFLAGS"])
299 dnl Warnings are for preprocessor too
300 if test x$enable_warnings = xyes ; then
301 AM_CPPFLAGS="$AM_CPPFLAGS -Wall -Wextra"
304 2.*|3.*) AC_ERROR([gcc 4.x is required]);;
306 if test x$enable_stdlib_debug = xyes ; then
307 dnl FIXME: for clang/libc++, one should define _LIBCPP_DEBUG2=0
308 dnl See http://clang-developers.42468.n3.nabble.com/libc-debug-mode-td3336742.html
311 lyx_flags="$lyx_flags stdlib-debug"
312 AC_DEFINE(_GLIBCXX_DEBUG, 1, [libstdc++ debug mode])
313 AC_DEFINE(_GLIBCXX_DEBUG_PEDANTIC, 1, [libstdc++ pedantic debug mode])
317 dnl enable_cxx11 can be yes/no/auto.
318 dnl By default, it is auto and we enable C++11 when possible
319 if test x$enable_cxx11 != xno ; then
322 if x$enable_cxx11 = xyes; then
323 AC_ERROR([There is no C++11 support in gcc 4.2 or older])
326 dnl Note that this will define __GXX_EXPERIMENTAL_CXX0X__.
327 dnl The source code relies on that.
328 AM_CXXFLAGS="$AM_CXXFLAGS -std=c++0x";;
330 dnl presumably all clang version support c++11.
331 dnl the deprecated-register warning is very annoying with Qt4.x right now.
332 AM_CXXFLAGS="$AM_CXXFLAGS -std=c++11 -Wno-deprecated-register";;
334 AS_CASE([$host], [*cygwin*],
335 [AM_CXXFLAGS="$AM_CXXFLAGS -std=gnu++11"],
336 [AM_CXXFLAGS="$AM_CXXFLAGS -std=c++11"]);;
341 if test $lyx_use_cxx11 = yes ; then
342 AC_CHECK_HEADER([regex], [lyx_std_regex=yes], [lyx_std_regex=no])
343 if test x$CLANG = xno || test $lyx_cv_lib_stdcxx = yes; then
344 dnl <regex> in gcc is unusable in versions less than 4.9.0
345 dnl see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
347 4.0*|4.1*|4.2*|4.3*|4.4*|4.5*|4.6*|4.7*|4.8*) ;;
348 *) lyx_std_regex=yes ;;
355 dnl This is not gcc, not sure what setup we can do
356 AC_CHECK_HEADER([regex], [lyx_std_regex=yes], [lyx_std_regex=no])
359 if test $lyx_std_regex = yes ; then
360 lyx_flags="$lyx_flags stdregex"
361 AC_DEFINE([LYX_USE_STD_REGEX], 1, [define to 1 if std::regex should be preferred to boost::regex])
363 AM_CONDITIONAL([LYX_USE_STD_REGEX], test $lyx_std_regex = yes)
366 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
368 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
369 AC_MSG_CHECKING([whether to use included boost library])
370 AC_ARG_WITH(included-boost,
371 [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])],
372 [lyx_cv_with_included_boost=$withval],
373 [lyx_cv_with_included_boost=yes])
374 AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
375 AC_MSG_RESULT([$lyx_cv_with_included_boost])
376 if test x$lyx_cv_with_included_boost = xyes ; then
377 BOOST_INCLUDES='-I$(top_srcdir)/boost'
378 BOOST_LIBS='$(top_builddir)/boost/liblyxboost.a'
383 AC_MSG_CHECKING([for multithreaded boost libraries])
384 LIBS="$save_LIBS -lboost_signals-mt $LIBTHREAD"
386 [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
387 [boost::signal<void ()> s;])],
388 [AC_MSG_RESULT([yes])
391 AC_MSG_CHECKING([for plain boost libraries])
392 LIBS="$save_LIBS -lboost_signals"
394 [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
395 [boost::signal<void ()> s;])],
396 [AC_MSG_RESULT([yes])
399 AC_MSG_ERROR([cannot find suitable boost library (do not use --without-included-boost)])
405 if test $lyx_std_regex = yes ; then
406 BOOST_LIBS="-lboost_signals${BOOST_MT}"
408 BOOST_LIBS="-lboost_regex${BOOST_MT} -lboost_signals${BOOST_MT}"
411 dnl In general, system boost libraries are incompatible with
412 dnl the use of stdlib-debug in libstdc++. See ticket #9736 for
414 if test $enable_stdlib_debug = "yes" ; then
415 LYX_WARNING([Compiling LyX with stdlib-debug and system boost libraries may lead to
416 crashes. Consider using --disable-stdlib-debug or removing
417 --without-included-boost.])
420 AC_SUBST(BOOST_INCLUDES)
425 dnl Usage: LYX_CHECK_CALLSTACK_PRINTING: define LYX_CALLSTACK_PRINTING if the
426 dnl necessary APIs are available to print callstacks.
427 AC_DEFUN([LYX_CHECK_CALLSTACK_PRINTING],
428 [AC_CACHE_CHECK([whether printing callstack is possible],
429 [lyx_cv_callstack_printing],
431 #include <execinfo.h>
435 size_t size = backtrace(array, 200);
436 backtrace_symbols(array, size);
438 abi::__cxa_demangle("abcd", 0, 0, &status);
440 [lyx_cv_callstack_printing=yes], [lyx_cv_callstack_printing=no])])
441 if test x"$lyx_cv_callstack_printing" = xyes; then
442 AC_DEFINE([LYX_CALLSTACK_PRINTING], 1,
443 [Define if callstack can be printed])
448 dnl Usage: LYX_USE_INCLUDED_MYTHES : select if the included MyThes should
450 AC_DEFUN([LYX_USE_INCLUDED_MYTHES],[
451 AC_MSG_CHECKING([whether to use included MyThes library])
452 AC_ARG_WITH(included-mythes,
453 [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])],
454 [lyx_cv_with_included_mythes=$withval],
455 [lyx_cv_with_included_mythes=yes])
456 AM_CONDITIONAL(USE_INCLUDED_MYTHES, test x$lyx_cv_with_included_mythes = xyes)
457 AC_MSG_RESULT([$lyx_cv_with_included_mythes])
458 if test x$lyx_cv_with_included_mythes != xyes ; then
460 AC_CHECK_HEADER(mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes.hxx>"])
461 if test x$ac_cv_header_mythes_h != xyes; then
462 AC_CHECK_HEADER(mythes/mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes/mythes.hxx>"])
464 AC_CHECK_LIB(mythes, main, [MYTHES_LIBS="-lmythes" lyx_mythes=yes], [lyx_mythes=no])
465 if test x$lyx_mythes != xyes; then
466 AC_CHECK_LIB(mythes-1.2, main, [MYTHES_LIBS="-lmythes-1.2" lyx_mythes=yes], [lyx_mythes=no])
469 if test x$lyx_mythes != xyes -o x$ac_cv_header_mythes_h != xyes; then
470 AC_MSG_ERROR([cannot find suitable MyThes library (do not use --without-included-mythes)])
472 AC_DEFINE(USE_EXTERNAL_MYTHES, 1, [Define as 1 to use an external MyThes library])
473 AC_DEFINE_UNQUOTED(MYTHES_H_LOCATION,$lyx_cv_mythes_h_location,[Location of mythes.hxx])
474 AC_SUBST(MYTHES_LIBS)
479 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
480 dnl [default-yes-value])
481 dnl Adds a --with-'dir-name' option (described by 'desc') and puts the
482 dnl resulting directory name in 'dir-var-name'.
483 AC_DEFUN([LYX_WITH_DIR],[
484 AC_ARG_WITH($1,[AC_HELP_STRING([--with-$1],[specify $2])])
485 AC_MSG_CHECKING([for $2])
486 if test -z "$with_$3"; then
487 AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
489 test "x$with_$3" = xyes && with_$3=$5
492 AC_MSG_RESULT($lyx_cv_$3)])
495 dnl Usage: LYX_LOOP_DIR(value,action)
496 dnl Executes action for values of variable `dir' in `values'. `values' can
497 dnl use ":" as a separator.
498 AC_DEFUN([LYX_LOOP_DIR],[
499 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
500 for dir in `eval "echo $1"`; do
501 if test ! "$dir" = NONE; then
502 test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
510 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
512 AC_DEFUN([LYX_ADD_LIB_DIR],[
514 if test "`(uname) 2>/dev/null`" = SunOS &&
515 uname -r | grep '^5' >/dev/null; then
516 if test $ac_cv_prog_gxx = yes ; then
517 $1="${$1} -Wl[,]-R$2"
524 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
526 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
528 ### Check for a headers existence and location iff it exists
529 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
530 ## It almost works. I've tried a few variations but they give errors
531 ## of one sort or other: bad substitution or file not found etc. The
532 ## actual header _is_ found though and the cache variable is set however
533 ## the reported setting (on screen) is equal to $ac_safe for some unknown
535 ## Additionally, autoheader can't figure out what to use as the name in
536 ## the config.h.in file so we need to write our own entries there -- one for
537 ## each header in the form PATH_HEADER_NAME_H
539 AC_DEFUN([LYX_PATH_HEADER],
540 [ AC_CHECK_HEADER($1,[
541 ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
542 ### the only remaining problem is getting the second parameter to this
543 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
544 ### of $ac_safe being printed.
545 AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
546 [ cat > conftest.$ac_ext <<EOF
547 #line __oline__ "configure"
548 #include "confdefs.h"
552 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
553 grep $1 2>/dev/null | \
554 sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
555 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
557 AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
559 ### end of LYX_PATH_HEADER
561 ## Check what kind of packaging should be used at install time.
562 ## The default is autodetected.
563 AC_DEFUN([LYX_USE_PACKAGING],
564 [AC_MSG_CHECKING([what packaging should be used])
565 AC_ARG_WITH(packaging,
566 [AC_HELP_STRING([--with-packaging=THIS], [use THIS packaging for installation:
567 Possible values: posix, windows, macosx, haiku])],
568 [lyx_use_packaging="$withval"], [
570 *-apple-darwin*) lyx_use_packaging=macosx ;;
571 *-pc-mingw32*) lyx_use_packaging=windows ;;
572 *haiku*) lyx_use_packaging=haiku ;;
573 *) lyx_use_packaging=posix ;;
575 AC_MSG_RESULT($lyx_use_packaging)
576 lyx_install_posix=false
577 lyx_install_macosx=false
578 lyx_install_cygwin=false
579 lyx_install_windows=false
580 case $lyx_use_packaging in
581 macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
582 PACKAGE=LyX${version_suffix}
583 default_prefix="/Applications/${PACKAGE}.app"
584 AC_SUBST(osx_bundle_program_name,"${program_base_name}")
585 bindir='${prefix}/Contents/MacOS'
586 libdir='${prefix}/Contents/Resources'
587 datarootdir='${prefix}/Contents/Resources'
588 pkgdatadir='${datadir}'
589 mandir='${datadir}/man'
590 lyx_install_macosx=true ;;
591 windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
592 PACKAGE=LyX${version_suffix}
593 default_prefix="C:/Program Files/${PACKAGE}"
594 bindir='${prefix}/bin'
595 libdir='${prefix}/Resources'
596 datarootdir='${prefix}/Resources'
597 pkgdatadir='${datadir}'
598 mandir='${prefix}/Resources/man'
599 lyx_install_windows=true ;;
600 posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
601 PACKAGE=lyx${version_suffix}
602 program_suffix=$version_suffix
603 pkgdatadir='${datadir}/${PACKAGE}'
604 default_prefix=$ac_default_prefix
606 *cygwin*) lyx_install_cygwin=true ;;
607 *apple-darwin*) lyx_install_macosx=true ;;
609 lyx_install_posix=true ;;
610 haiku) AC_DEFINE(USE_HAIKU_PACKAGING, 1, [Define to 1 if LyX should use a Haiku-style file layout])
611 PACKAGE=lyx${version_suffix}
612 program_suffix=$version_suffix
613 pkgdatadir='${datadir}/${PACKAGE}'
614 default_prefix=$ac_default_prefix
615 lyx_install_posix=true ;;
616 *) AC_MSG_ERROR([unknown packaging type $lyx_use_packaging.]) ;;
618 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
619 AM_CONDITIONAL(INSTALL_WINDOWS, $lyx_install_windows)
620 AM_CONDITIONAL(INSTALL_CYGWIN, $lyx_install_cygwin)
621 AM_CONDITIONAL(INSTALL_POSIX, $lyx_install_posix)
623 AC_SUBST(program_suffix)
627 ## ------------------------------------------------------------------------
628 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
629 ## one or two arguments.
631 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
632 ## ------------------------------------------------------------------------
634 AC_DEFUN([AC_FUNC_MKDIR],
635 [AC_CHECK_FUNCS([mkdir _mkdir])
636 AC_CACHE_CHECK([whether mkdir takes one argument],
637 [ac_cv_mkdir_takes_one_arg],
639 #include <sys/stat.h>
644 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
645 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
646 AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
647 [Define if mkdir takes only one argument.])
652 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
653 dnl (which may be a relative path, and need not refer to any existing
656 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
657 dnl native Win32 path name, (but with slashes, not backslashes).
659 dnl On any other system, it is simply the result which would be obtained
660 dnl if PATHNAME represented an existing directory, and the pwd command was
661 dnl executed in that directory.
662 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
664 ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
665 ac_pwd_w="pwd -W" || ac_pwd_w=pwd
666 until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
668 ac_dir=`AS_DIRNAME(["$ac_dir"])`
670 ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
671 ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
672 $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
676 dnl this is used by the macro blow to general a proper config.h.in entry
677 m4_define([LYX_AH_CHECK_DECL],
678 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
679 [Define if you have the prototype for function `$1'])])
681 dnl Check things are declared in headers to avoid errors or warnings.
682 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
683 dnl Defines HAVE_DECL_{FUNCTION}
684 AC_DEFUN([LYX_CHECK_DECL],
685 [LYX_AH_CHECK_DECL($1)
688 AC_MSG_CHECKING([if $1 is declared by header $ac_header])
689 AC_EGREP_HEADER($1, $ac_header,
691 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
696 dnl this is used by the macro below to generate a proper config.h.in entry
697 m4_define([LYX_AH_CHECK_DEF],
698 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
699 [Define to 1 if `$1' is defined in `$2'])])
701 dnl Check whether name is defined in header by using it in codesnippet.
702 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
703 dnl Defines HAVE_DEF_{NAME}
704 AC_DEFUN([LYX_CHECK_DEF],
705 [LYX_AH_CHECK_DEF($1, $2)
706 AC_MSG_CHECKING([whether $1 is defined by header $2])
707 AC_TRY_COMPILE([#include <$2>], [$3],
708 lyx_have_def_name=yes,
709 lyx_have_def_name=no)
710 AC_MSG_RESULT($lyx_have_def_name)
711 if test "x$lyx_have_def_name" = xyes; then
712 AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
716 dnl Extract the single digits from PACKAGE_VERSION and make them available.
717 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
718 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
719 AC_DEFUN([LYX_SET_VERSION_INFO],
720 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
721 lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
722 lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
723 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
724 lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
725 lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
726 test "x$lyx_patch" = "x" && lyx_patch=0
727 lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
728 lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
729 AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
730 AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
731 AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
732 AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
733 AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
734 AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
737 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
738 # ---------------------------------------------------------------------------
739 # Copied from autoconf 2.68, added a check that python version is < 3.0
740 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
741 # Run ACTION-IF-FALSE otherwise.
742 # This test uses sys.hexversion instead of the string equivalent (first
743 # word of sys.version), in order to cope with versions such as 2.2c1.
744 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
745 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
747 # split strings by '.' and convert to numeric. Append some zeros
748 # because we need at least 4 digits for the hex conversion.
749 # map returns an iterator in Python 3.0 and a list in 2.x
750 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
752 maxverhex = 50331648 # = 3.0.0.0
753 # xrange is not present in Python 3.0 and range returns an iterator
754 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
755 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
756 AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])