]> git.lyx.org Git - lyx.git/blob - config/lyxinclude.m4
Add known citation packages to LaTeXFeatures:
[lyx.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 dnl Next two lines are only for autoconf <= 2.59
551 datadir='${datarootdir}'
552 AC_SUBST(datarootdir)
553 AC_SUBST(pkgdatadir)
554 AC_SUBST(program_suffix)
555 ])
556
557
558 ## ------------------------------------------------------------------------
559 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
560 ## one or two arguments.
561 ##
562 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
563 ## ------------------------------------------------------------------------
564 ##
565 AC_DEFUN([AC_FUNC_MKDIR],
566 [AC_CHECK_FUNCS([mkdir _mkdir])
567 AC_CACHE_CHECK([whether mkdir takes one argument],
568                [ac_cv_mkdir_takes_one_arg],
569 [AC_TRY_COMPILE([
570 #include <sys/stat.h>
571 #if HAVE_UNISTD_H
572 #  include <unistd.h>
573 #endif
574 ], [mkdir (".");],
575 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
576 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
577   AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
578             [Define if mkdir takes only one argument.])
579 fi
580 ])
581
582
583 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
584 dnl (which may be a relative path, and need not refer to any existing
585 dnl entity).
586
587 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
588 dnl native Win32 path name, (but with slashes, not backslashes).
589
590 dnl On any other system, it is simply the result which would be obtained
591 dnl if PATHNAME represented an existing directory, and the pwd command was
592 dnl executed in that directory.
593 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
594 [ac_dir="$2"
595  ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
596     ac_pwd_w="pwd -W" || ac_pwd_w=pwd
597  until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
598  do
599    ac_dir=`AS_DIRNAME(["$ac_dir"])`
600  done
601  ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
602  ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
603  $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
604    s?/*$[]??'`
605 ])
606
607 dnl this is used by the macro blow to general a proper config.h.in entry
608 m4_define([LYX_AH_CHECK_DECL],
609 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
610   [Define if you have the prototype for function `$1'])])
611
612 dnl Check things are declared in headers to avoid errors or warnings.
613 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
614 dnl Defines HAVE_DECL_{FUNCTION}
615 AC_DEFUN([LYX_CHECK_DECL],
616 [LYX_AH_CHECK_DECL($1)
617 for ac_header in $2
618 do
619   AC_MSG_CHECKING([if $1 is declared by header $ac_header])
620   AC_EGREP_HEADER($1, $ac_header,
621       [AC_MSG_RESULT(yes)
622        AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
623        break],
624       [AC_MSG_RESULT(no)])
625 done])
626
627 dnl this is used by the macro below to generate a proper config.h.in entry
628 m4_define([LYX_AH_CHECK_DEF],
629 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
630   [Define to 1 if `$1' is defined in `$2'])])
631
632 dnl Check whether name is defined in header by using it in codesnippet.
633 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
634 dnl Defines HAVE_DEF_{NAME}
635 AC_DEFUN([LYX_CHECK_DEF],
636 [LYX_AH_CHECK_DEF($1, $2)
637  AC_MSG_CHECKING([whether $1 is defined by header $2])
638  AC_TRY_COMPILE([#include <$2>], [$3],
639      lyx_have_def_name=yes,
640      lyx_have_def_name=no)
641  AC_MSG_RESULT($lyx_have_def_name)
642  if test "x$lyx_have_def_name" = xyes; then
643    AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
644  fi
645 ])
646
647 dnl Extract the single digits from PACKAGE_VERSION and make them available.
648 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
649 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
650 AC_DEFUN([LYX_SET_VERSION_INFO],
651 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
652  lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
653  lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
654  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
655  lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
656  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
657  test "x$lyx_patch" = "x" && lyx_patch=0
658  lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
659  lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
660  AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
661  AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
662  AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
663  AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
664  AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
665  AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
666 ])
667
668 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
669 # ---------------------------------------------------------------------------
670 # Copied from autoconf 2.68, added a check that python version is < 3.0
671 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
672 # Run ACTION-IF-FALSE otherwise.
673 # This test uses sys.hexversion instead of the string equivalent (first
674 # word of sys.version), in order to cope with versions such as 2.2c1.
675 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
676 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
677  [prog="import sys
678 # split strings by '.' and convert to numeric.  Append some zeros
679 # because we need at least 4 digits for the hex conversion.
680 # map returns an iterator in Python 3.0 and a list in 2.x
681 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
682 minverhex = 0
683 maxverhex = 50331648 # = 3.0.0.0
684 # xrange is not present in Python 3.0 and range returns an iterator
685 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
686 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
687   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])