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