]> git.lyx.org Git - features.git/blob - config/lyxinclude.m4
Add a test to configure for minimal Qt version
[features.git] / config / lyxinclude.m4
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)
5
6
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
11 lyx_devel_version=no
12 lyx_prerelease=no
13 AC_MSG_CHECKING([for build type])
14 AC_ARG_ENABLE(build-type,
15   AC_HELP_STRING([--enable-build-type=TYPE],[set build setting according to TYPE=rel(ease), pre(release), dev(elopment), prof(iling), gprof]),
16   [case $enableval in
17     dev*) build_type=development;;
18     pre*) build_type=prerelease;;
19     prof*)  build_type=profiling;;
20     gprof*) build_type=gprof;;
21     rel*) build_type=release;;
22     *) AC_ERROR([Bad build type specification \"$enableval\". Please use one of rel(ease), pre(release), dev(elopment), prof(iling), or gprof]);;
23    esac],
24   [case AC_PACKAGE_VERSION in
25     *svn*|*dev*) build_type=development;;
26     *pre*|*alpha*|*beta*|*rc*) build_type=prerelease;;
27     *) build_type=release ;;
28    esac])
29 AC_MSG_RESULT([$build_type])
30 lyx_flags="$lyx_flags build=$build_type"
31 case $build_type in
32     development) lyx_devel_version=yes
33                  AC_DEFINE(DEVEL_VERSION, 1, [Define if you are building a development version of LyX])
34                  LYX_DATE="not released yet" ;;
35     prerelease) lyx_prerelease=yes ;;
36 esac
37     
38 AC_SUBST(lyx_devel_version)
39 ])
40
41
42 dnl Define the option to set a LyX version on installed executables and directories
43 dnl
44 dnl
45 AC_DEFUN([LYX_VERSION_SUFFIX],[
46 AC_MSG_CHECKING([for version suffix])
47 dnl We need the literal double quotes in the rpm spec file
48 RPM_VERSION_SUFFIX='""'
49 AC_ARG_WITH(version-suffix,
50   [AC_HELP_STRING([--with-version-suffix@<:@=VERSION@:>@], install lyx files as lyxVERSION (VERSION=-AC_PACKAGE_VERSION))],
51   [if test "x$withval" = "xyes";
52    then
53      withval="-"AC_PACKAGE_VERSION
54      ac_configure_args=`echo "$ac_configure_args" | sed "s,--with-version-suffix,--with-version-suffix=$withval,"`
55    fi
56    AC_SUBST(version_suffix,$withval)
57    RPM_VERSION_SUFFIX="--with-version-suffix=$withval"])
58 AC_SUBST(RPM_VERSION_SUFFIX)
59 AC_SUBST(program_base_name,"lyx")
60 AC_MSG_RESULT([$withval])
61 ])
62
63
64 dnl Usage: LYX_ERROR(message)  Displays the warning "message" and sets the
65 dnl flag lyx_error to yes.
66 AC_DEFUN([LYX_ERROR],[
67 lyx_error_txt="$lyx_error_txt
68 ** $1
69 "
70 lyx_error=yes])
71
72
73 dnl Usage: LYX_WARNING(message)  Displays the warning "message" and sets the
74 dnl flag lyx_warning to yes.
75 AC_DEFUN([LYX_WARNING],[
76 lyx_warning_txt="$lyx_warning_txt
77 == $1
78 "
79 lyx_warning=yes])
80
81
82 dnl Usage: LYX_LIB_ERROR(file,library)  Displays an error message indication
83 dnl  that 'file' cannot be found because 'lib' may be uncorrectly installed.
84 AC_DEFUN([LYX_LIB_ERROR],[
85 LYX_ERROR([Cannot find $1. Please check that the $2 library
86    is correctly installed on your system.])])
87
88
89 dnl Usage: LYX_CHECK_ERRORS  Displays a warning message if a LYX_ERROR
90 dnl   has occured previously.
91 AC_DEFUN([LYX_CHECK_ERRORS],[
92 if test x$lyx_warning = xyes; then
93 cat <<EOF
94 === The following minor problems have been detected by configure.
95 === Please check the messages below before running 'make'.
96 === (see the section 'Problems' in the INSTALL file)
97 $lyx_warning_txt
98 EOF
99 fi
100 if test x$lyx_error = xyes; then
101 cat <<EOF
102 **** The following problems have been detected by configure.
103 **** Please check the messages below before running 'make'.
104 **** (see the section 'Problems' in the INSTALL file)
105 $lyx_error_txt
106 $lyx_warning_txt
107 EOF
108 exit 1
109 else
110
111 cat <<EOF
112 Configuration of LyX was successful.
113 Type 'make' to compile the program,
114 and then 'make install' to install it.
115 EOF
116 fi])
117
118
119 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
120 dnl
121 define(LYX_SEARCH_PROG,[dnl
122 for ac_prog in $2 ; do
123 # Extract the first word of "$ac_prog", so it can be a program name with args.
124   set dummy $ac_prog ; ac_word=$[2]
125   if test -z "[$]$1"; then
126     IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
127     for ac_dir in $PATH; do
128       test -z "$ac_dir" && ac_dir=.
129       if test -f [$ac_dir/$ac_word]; then
130         $1="$ac_prog"
131         break
132       fi
133     done
134     IFS="$ac_save_ifs"
135   fi
136
137   if test -n "[$]$1"; then
138     ac_result=yes
139   else
140     ac_result=no
141   fi
142   ifelse($3,,,[$3])
143   test -n "[$]$1" && break
144 done
145 ])dnl
146
147
148 AC_DEFUN([LYX_PROG_CXX_WORKS],
149 [rm -f conftest.C
150 cat >conftest.C <<EOF
151 class foo {
152    // we require the mutable keyword
153    mutable int bar;
154  };
155  // we require namespace support
156  namespace baz {
157    int bar;
158  }
159  int main() {
160    return(0);
161  }
162 EOF
163 $CXX -c $CXXFLAGS $CPPFLAGS conftest.C >&5 || CXX=
164 rm -f conftest.C conftest.o conftest.obj || true
165 ])
166
167
168 AC_DEFUN([LYX_PROG_CXX],
169 [AC_MSG_CHECKING([for a good enough C++ compiler])
170 LYX_SEARCH_PROG(CXX, $CXX $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS])
171
172 if test -z "$CXX" ; then
173   AC_MSG_ERROR([Unable to find a good enough C++ compiler])
174 fi
175 AC_MSG_RESULT($CXX)
176
177 AC_PROG_CXX
178 AC_PROG_CXXCPP
179
180 ### We might want to get or shut warnings.
181 AC_ARG_ENABLE(warnings,
182   AC_HELP_STRING([--enable-warnings],[tell the compiler to display more warnings]),,
183   [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
184         enable_warnings=yes;
185     else
186         enable_warnings=no;
187     fi;])
188 if test x$enable_warnings = xyes ; then
189   lyx_flags="$lyx_flags warnings"
190 fi
191
192 ### We might want to disable debug
193 AC_ARG_ENABLE(debug,
194   AC_HELP_STRING([--enable-debug],[enable debug information]),,
195   [AS_CASE([$build_type], [rel*], [enable_debug=no], [enable_debug=yes])]
196 )
197
198 AC_ARG_ENABLE(stdlib-debug,
199   AC_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
200   [AS_CASE([$build_type], [dev*], [enable_stdlib_debug=yes], 
201           [enable_stdlib_debug=no])]
202 )
203
204 AC_ARG_ENABLE(concept-checks,
205   AC_HELP_STRING([--enable-concept-checks],[enable concept checks]),,
206   [AS_CASE([$build_type], [dev*|pre*], [enable_concept_checks=yes], 
207           [enable_concept_checks=no])]
208 )
209
210 AC_ARG_ENABLE(gprof,
211   AC_HELP_STRING([--enable-gprof],[enable profiling using gprof]),,
212   [AS_CASE([$build_type], [gprof], [enable_gprof=yes], [enable_gprof=no])]
213 )
214
215 ### set up optimization
216 AC_ARG_ENABLE(optimization,
217     AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
218     enable_optimization=yes;)
219 case $enable_optimization in
220     yes)
221         if test $lyx_devel_version = yes ; then
222             lyx_opt=-O
223         else
224             lyx_opt=-O2
225         fi;;
226     no) lyx_opt=;;
227     *) lyx_opt=${enable_optimization};;
228 esac
229
230 AC_ARG_ENABLE(pch,
231   AC_HELP_STRING([--enable-pch],[enable precompiled headers]),,
232         enable_pch=no;)
233 lyx_pch_comp=no
234
235 AC_ARG_ENABLE(cxx11,
236   AC_HELP_STRING([--enable-cxx11],[enable C++11 mode]),,
237   enable_cxx11=no;)
238
239 AC_ARG_ENABLE(assertions,
240   AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
241   [AS_CASE([$build_type], [dev*|pre*], [enable_assertions=yes],
242           [enable_assertions=no])]
243 )
244 if test "x$enable_assertions" = xyes ; then
245    lyx_flags="$lyx_flags assertions"
246    AC_DEFINE(ENABLE_ASSERTIONS,1,
247     [Define if you want assertions to be enabled in the code])
248 fi
249
250 # set the compiler options correctly.
251 if test x$GXX = xyes; then
252   dnl Useful for global version info
253   gxx_version=`${CXX} -dumpversion`
254   CXX_VERSION="($gxx_version)"
255
256   if test "$ac_test_CXXFLAGS" = set; then
257     CXXFLAGS="$ac_save_CXXFLAGS"
258   else
259       CFLAGS="$lyx_opt"
260       CXXFLAGS="$lyx_opt"
261     if test x$enable_debug = xyes ; then
262         CFLAGS="-g $CFLAGS"
263         CXXFLAGS="-g $CXXFLAGS"
264     fi
265     if test x$enable_gprof = xyes ; then
266         CFLAGS="-pg $CFLAGS"
267         CXXFLAGS="-pg $CXXFLAGS"
268         LDFLAGS="-pg $LDFLAGS"
269     fi
270   fi
271   if test "$ac_env_CPPFLAGS_set" != set; then
272     if test x$enable_warnings = xyes ; then
273         case $gxx_version in
274             3.1*|3.2*|3.3*)
275                 CPPFLAGS="-W -Wall $CPPFLAGS"
276                 ;;
277             *)
278                 CPPFLAGS="-Wextra -Wall $CPPFLAGS "
279                 ;;
280         esac
281     fi
282   fi
283   case $gxx_version in
284       3.1*)    AM_CXXFLAGS="-finline-limit=500 ";;
285       3.2*|3.3*)    AM_CXXFLAGS="";;
286       3.4*|4.*)
287           AM_CXXFLAGS=""
288           test $enable_pch = yes && lyx_pch_comp=yes
289           ;;
290       *)       AM_CXXFLAGS="";;
291   esac
292   if test x$enable_stdlib_debug = xyes ; then
293     case $gxx_version in
294       3.4*|4.*)
295         lyx_flags="$lyx_flags stdlib-debug"
296         AC_DEFINE(_GLIBCXX_DEBUG, 1, [libstdc++ debug mode])
297         AC_DEFINE(_GLIBCXX_DEBUG_PEDANTIC, 1, [libstdc++ pedantic debug mode])
298         ;;
299     esac
300   fi
301   if test x$enable_concept_checks = xyes ; then
302     case $gxx_version in
303       3.3*)
304         lyx_flags="$lyx_flags concept-checks"
305         AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
306         ;;
307       3.4*|4.*)
308         lyx_flags="$lyx_flags concept-checks"
309         AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
310         ;;
311     esac
312   fi
313   if test x$enable_cxx11 = xyes ; then
314       case $gxx_version in
315           4.3*|4.4*|4.5*|4.6*)
316               lyx_flags="$lyx_flags c++11-mode"
317               CXXFLAGS="-std=gnu++0x $CXXFLAGS"
318               ;;
319           4.7*|4.8*)
320               lyx_flags="$lyx_flags c++11-mode"
321               CXXFLAGS="-std=gnu++11 $CXXFLAGS"
322               ;;
323       esac
324   fi
325 fi
326 test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch"
327 AM_CONDITIONAL(LYX_BUILD_PCH, test "$lyx_pch_comp" = yes)
328 ])dnl
329
330 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
331 dnl        be used.
332 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
333         AC_MSG_CHECKING([whether to use included boost library])
334         AC_ARG_WITH(included-boost,
335             [AC_HELP_STRING([--without-included-boost], [do not use the boost lib supplied with LyX, try to find one in the system directories - compilation will abort if nothing suitable is found])],
336             [lyx_cv_with_included_boost=$withval],
337             [lyx_cv_with_included_boost=yes])
338         AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
339         AC_MSG_RESULT([$lyx_cv_with_included_boost])
340         if test x$lyx_cv_with_included_boost != xyes ; then
341                 AC_LANG_PUSH(C++)
342                 save_LIBS=$LIBS
343
344                 LIBS="$save_LIBS -lboost_signals -lm"
345                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/signal.hpp>], [boost::signal<void ()> s;])], [lyx_boost_plain=yes], [])
346                 LIBS="$save_LIBS -lboost_signals-mt -lm $LIBTHREAD"
347                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/signal.hpp>], [boost::signal<void ()> s;])], [lyx_boost_mt=yes], [])
348
349                 LIBS=$save_LIBS
350                 AC_LANG_POP(C++)
351
352                 if test x$lyx_boost_mt = xyes ; then
353                         BOOST_MT="-mt"
354                 else
355                         BOOST_MT=""
356                         if test x$lyx_boost_plain != xyes ; then
357                                 LYX_ERROR([No suitable boost library found (do not use --without-included-boost)])
358                         fi
359                 fi
360                 AC_SUBST(BOOST_MT)
361         fi
362 ])
363
364
365 dnl Usage: LYX_USE_INCLUDED_MYTHES : select if the included MyThes should
366 dnl        be used.
367 AC_DEFUN([LYX_USE_INCLUDED_MYTHES],[
368         AC_MSG_CHECKING([whether to use included MyThes library])
369         AC_ARG_WITH(included-mythes,
370             [AC_HELP_STRING([--without-included-mythes], [do not use the MyThes lib supplied with LyX, try to find one in the system directories - compilation will abort if nothing suitable is found])],
371             [lyx_cv_with_included_mythes=$withval],
372             [lyx_cv_with_included_mythes=yes])
373         AM_CONDITIONAL(USE_INCLUDED_MYTHES, test x$lyx_cv_with_included_mythes = xyes)
374         AC_MSG_RESULT([$lyx_cv_with_included_mythes])
375         if test x$lyx_cv_with_included_mythes != xyes ; then
376                 AC_LANG_PUSH(C++)
377                 AC_CHECK_HEADER(mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes.hxx>"])
378                 if test x$ac_cv_header_mythes_h != xyes; then
379                         AC_CHECK_HEADER(mythes/mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes/mythes.hxx>"])
380                 fi
381                 AC_CHECK_LIB(mythes, main, [MYTHES_LIBS="-lmythes" lyx_mythes=yes], [lyx_mythes=no], [-lm])
382                 if test x$lyx_mythes != xyes; then
383                         AC_CHECK_LIB(mythes-1.2, main, [MYTHES_LIBS="-lmythes-1.2" lyx_mythes=yes], [lyx_mythes=no], [-lm])
384                 fi
385                 AC_LANG_POP(C++)
386                 if test x$lyx_mythes != xyes -o x$ac_cv_header_mythes_h != xyes; then
387                         LYX_ERROR([No suitable MyThes library found (do not use --without-included-mythes)])
388                 fi
389                 AC_DEFINE(USE_EXTERNAL_MYTHES, 1, [Define as 1 to use an external MyThes library])
390                 AC_DEFINE_UNQUOTED(MYTHES_H_LOCATION,$lyx_cv_mythes_h_location,[Location of mythes.hxx])
391                 AC_SUBST(MYTHES_LIBS)
392         fi
393 ])
394
395
396 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
397 dnl                       [default-yes-value])
398 dnl  Adds a --with-'dir-name' option (described by 'desc') and puts the
399 dnl  resulting directory name in 'dir-var-name'.
400 AC_DEFUN([LYX_WITH_DIR],[
401   AC_ARG_WITH($1,[AC_HELP_STRING([--with-$1],[specify $2])])
402   AC_MSG_CHECKING([for $2])
403   if test -z "$with_$3"; then
404      AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
405   else
406     test "x$with_$3" = xyes && with_$3=$5
407     lyx_cv_$3="$with_$3"
408   fi
409   AC_MSG_RESULT($lyx_cv_$3)])
410
411
412 dnl Usage: LYX_LOOP_DIR(value,action)
413 dnl Executes action for values of variable `dir' in `values'. `values' can
414 dnl use ":" as a separator.
415 AC_DEFUN([LYX_LOOP_DIR],[
416 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
417 for dir in `eval "echo $1"`; do
418   if test ! "$dir" = NONE; then
419     test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
420     $2
421   fi
422 done
423 IFS=$ac_save_ifs
424 ])
425
426
427 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
428 dnl var-name.
429 AC_DEFUN([LYX_ADD_LIB_DIR],[
430 $1="${$1} -L$2"
431 if test "`(uname) 2>/dev/null`" = SunOS &&
432     uname -r | grep '^5' >/dev/null; then
433   if test $ac_cv_prog_gxx = yes ; then
434     $1="${$1} -Wl[,]-R$2"
435   else
436     $1="${$1} -R$2"
437   fi
438 fi])
439
440
441 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
442 dnl var-name.
443 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
444
445 ### Check for a headers existence and location iff it exists
446 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
447 ## It almost works.  I've tried a few variations but they give errors
448 ## of one sort or other: bad substitution or file not found etc.  The
449 ## actual header _is_ found though and the cache variable is set however
450 ## the reported setting (on screen) is equal to $ac_safe for some unknown
451 ## reason.
452 ## Additionally, autoheader can't figure out what to use as the name in
453 ## the config.h.in file so we need to write our own entries there -- one for
454 ## each header in the form PATH_HEADER_NAME_H
455 ##
456 AC_DEFUN([LYX_PATH_HEADER],
457 [ AC_CHECK_HEADER($1,[
458   ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
459 ### the only remaining problem is getting the second parameter to this
460 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
461 ### of $ac_safe being printed.
462   AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
463   [ cat > conftest.$ac_ext <<EOF
464 #line __oline__ "configure"
465 #include "confdefs.h"
466
467 #include <$1>
468 EOF
469 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
470   grep $1  2>/dev/null | \
471   sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
472 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
473 rm -f conftest*])
474   AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
475 ])
476 ### end of LYX_PATH_HEADER
477
478 ### Check which frontends we want to use.
479 ###
480 AC_DEFUN([LYX_USE_FRONTENDS],
481 [AC_MSG_CHECKING([what frontend should be used for the GUI])
482 AC_ARG_WITH(frontend,
483   [AC_HELP_STRING([--with-frontend=THIS], [use THIS frontend as main GUI:
484                             Possible values: qt4])],
485   [FRONTENDS="$withval"],[FRONTENDS="qt4"])
486 if test "x$FRONTENDS" = x ; then
487   AC_MSG_RESULT(none)
488   AC_ERROR("Please select a frontend using --with-frontend")
489 fi
490 AC_MSG_RESULT($FRONTENDS)
491 AC_SUBST(FRONTENDS)
492 AC_SUBST(FRONTENDS_SUBDIRS)
493 AC_SUBST(FRONTENDS_PROGS)
494 ])
495
496
497 ## Check what kind of packaging should be used at install time.
498 ## The default is autodetected.
499 AC_DEFUN([LYX_USE_PACKAGING],
500 [AC_MSG_CHECKING([what packaging should be used])
501 AC_ARG_WITH(packaging,
502   [AC_HELP_STRING([--with-packaging=THIS], [use THIS packaging for installation:
503                             Possible values: posix, windows, macosx])],
504   [lyx_use_packaging="$withval"], [
505   case $host in
506     *-apple-darwin*) lyx_use_packaging=macosx ;;
507      *-pc-mingw32*) lyx_use_packaging=windows;;
508                   *) lyx_use_packaging=posix;;
509   esac])
510 AC_MSG_RESULT($lyx_use_packaging)
511 lyx_install_macosx=false
512 lyx_install_cygwin=false
513 lyx_install_windows=false
514 case $lyx_use_packaging in
515    macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
516            PACKAGE=LyX${version_suffix}
517            default_prefix="/Applications/${PACKAGE}.app"
518            AC_SUBST(osx_bundle_program_name,"${program_base_name}")
519            bindir='${prefix}/Contents/MacOS'
520            libdir='${prefix}/Contents/Resources'
521            datarootdir='${prefix}/Contents/Resources'
522            pkgdatadir='${datadir}'
523            mandir='${datadir}/man'
524            lyx_install_macosx=true ;;
525   windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
526            PACKAGE=LyX${version_suffix}
527            default_prefix="C:/Program Files/${PACKAGE}"
528            bindir='${prefix}/bin'
529            libdir='${prefix}/Resources'
530            datarootdir='${prefix}/Resources'
531            pkgdatadir='${datadir}'
532            mandir='${prefix}/Resources/man'
533            lyx_install_windows=true ;;
534     posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
535            PACKAGE=lyx${version_suffix}
536            program_suffix=$version_suffix
537            pkgdatadir='${datadir}/${PACKAGE}'
538            default_prefix=$ac_default_prefix
539            case ${host} in
540            *cygwin*) lyx_install_cygwin=true ;;
541                 *apple-darwin*) lyx_install_macosx=true ;;
542            esac
543            lyx_install_posix=true ;;
544     *) LYX_ERROR([Unknown packaging type $lyx_use_packaging]) ;;
545 esac
546 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
547 AM_CONDITIONAL(INSTALL_WINDOWS, $lyx_install_windows)
548 AM_CONDITIONAL(INSTALL_CYGWIN, $lyx_install_cygwin)
549 AM_CONDITIONAL(INSTALL_POSIX, $lyx_install_posix)
550 AC_SUBST(pkgdatadir)
551 AC_SUBST(program_suffix)
552 ])
553
554
555 ## ------------------------------------------------------------------------
556 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
557 ## one or two arguments.
558 ##
559 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
560 ## ------------------------------------------------------------------------
561 ##
562 AC_DEFUN([AC_FUNC_MKDIR],
563 [AC_CHECK_FUNCS([mkdir _mkdir])
564 AC_CACHE_CHECK([whether mkdir takes one argument],
565                [ac_cv_mkdir_takes_one_arg],
566 [AC_TRY_COMPILE([
567 #include <sys/stat.h>
568 #if HAVE_UNISTD_H
569 #  include <unistd.h>
570 #endif
571 ], [mkdir (".");],
572 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
573 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
574   AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
575             [Define if mkdir takes only one argument.])
576 fi
577 ])
578
579
580 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
581 dnl (which may be a relative path, and need not refer to any existing
582 dnl entity).
583
584 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
585 dnl native Win32 path name, (but with slashes, not backslashes).
586
587 dnl On any other system, it is simply the result which would be obtained
588 dnl if PATHNAME represented an existing directory, and the pwd command was
589 dnl executed in that directory.
590 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
591 [ac_dir="$2"
592  ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
593     ac_pwd_w="pwd -W" || ac_pwd_w=pwd
594  until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
595  do
596    ac_dir=`AS_DIRNAME(["$ac_dir"])`
597  done
598  ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
599  ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
600  $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
601    s?/*$[]??'`
602 ])
603
604 dnl this is used by the macro blow to general a proper config.h.in entry
605 m4_define([LYX_AH_CHECK_DECL],
606 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
607   [Define if you have the prototype for function `$1'])])
608
609 dnl Check things are declared in headers to avoid errors or warnings.
610 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
611 dnl Defines HAVE_DECL_{FUNCTION}
612 AC_DEFUN([LYX_CHECK_DECL],
613 [LYX_AH_CHECK_DECL($1)
614 for ac_header in $2
615 do
616   AC_MSG_CHECKING([if $1 is declared by header $ac_header])
617   AC_EGREP_HEADER($1, $ac_header,
618       [AC_MSG_RESULT(yes)
619        AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
620        break],
621       [AC_MSG_RESULT(no)])
622 done])
623
624 dnl this is used by the macro below to generate a proper config.h.in entry
625 m4_define([LYX_AH_CHECK_DEF],
626 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
627   [Define to 1 if `$1' is defined in `$2'])])
628
629 dnl Check whether name is defined in header by using it in codesnippet.
630 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
631 dnl Defines HAVE_DEF_{NAME}
632 AC_DEFUN([LYX_CHECK_DEF],
633 [LYX_AH_CHECK_DEF($1, $2)
634  AC_MSG_CHECKING([whether $1 is defined by header $2])
635  AC_TRY_COMPILE([#include <$2>], [$3],
636      lyx_have_def_name=yes,
637      lyx_have_def_name=no)
638  AC_MSG_RESULT($lyx_have_def_name)
639  if test "x$lyx_have_def_name" = xyes; then
640    AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
641  fi
642 ])
643
644 dnl Extract the single digits from PACKAGE_VERSION and make them available.
645 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
646 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
647 AC_DEFUN([LYX_SET_VERSION_INFO],
648 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
649  lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
650  lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
651  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
652  lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
653  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
654  test "x$lyx_patch" = "x" && lyx_patch=0
655  lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
656  lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
657  AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
658  AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
659  AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
660  AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
661  AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
662  AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
663 ])
664
665 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
666 # ---------------------------------------------------------------------------
667 # Copied from autoconf 2.68, added a check that python version is < 3.0
668 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
669 # Run ACTION-IF-FALSE otherwise.
670 # This test uses sys.hexversion instead of the string equivalent (first
671 # word of sys.version), in order to cope with versions such as 2.2c1.
672 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
673 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
674  [prog="import sys
675 # split strings by '.' and convert to numeric.  Append some zeros
676 # because we need at least 4 digits for the hex conversion.
677 # map returns an iterator in Python 3.0 and a list in 2.x
678 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
679 minverhex = 0
680 maxverhex = 50331648 # = 3.0.0.0
681 # xrange is not present in Python 3.0 and range returns an iterator
682 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
683 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
684   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])