]> git.lyx.org Git - lyx.git/blob - config/lyxinclude.m4
95cb1f09aad3db6084b73431928fb12d8a112588
[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 fi
301 test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch"
302 AM_CONDITIONAL(LYX_BUILD_PCH, test "$lyx_pch_comp" = yes)
303 ])dnl
304
305 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
306 dnl        be used.
307 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
308         AC_MSG_CHECKING([whether to use included boost library])
309         AC_ARG_WITH(included-boost,
310             [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])],
311             [lyx_cv_with_included_boost=$withval],
312             [lyx_cv_with_included_boost=yes])
313         AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
314         AC_MSG_RESULT([$lyx_cv_with_included_boost])
315         if test x$lyx_cv_with_included_boost = xyes ; then
316             BOOST_INCLUDES='-I$(top_srcdir)/boost'
317             BOOST_LIBS='$(top_builddir)/boost/liblyxboost.a'
318         else
319             AC_LANG_PUSH(C++)
320             save_LIBS=$LIBS
321
322             AC_MSG_CHECKING([for multithreaded boost libraries])
323             LIBS="$save_LIBS -lboost_signals-mt -lm $LIBTHREAD"
324             AC_LINK_IFELSE(
325                 [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
326                         [boost::signal<void ()> s;])],
327                 [AC_MSG_RESULT([yes])
328                  BOOST_MT="-mt"],
329                 [AC_MSG_RESULT([no])
330                  AC_MSG_CHECKING([for plain boost libraries])
331                  LIBS="$save_LIBS -lboost_signals -lm"
332                  AC_LINK_IFELSE(
333                      [AC_LANG_PROGRAM([#include <boost/signal.hpp>],
334                              [boost::signal<void ()> s;])],
335                      [AC_MSG_RESULT([yes])
336                       BOOST_MT=""],
337                      [AC_MSG_RESULT([no])
338                       AC_MSG_ERROR([cannot find suitable boost library (do not use --without-included-boost)])
339                  ])
340             ])
341             LIBS=$save_LIBS
342             AC_LANG_POP(C++)
343             BOOST_INCLUDES=
344             BOOST_LIBS="-lboost_regex${BOOST_MT} -lboost_signals${BOOST_MT}"
345         fi
346         AC_SUBST(BOOST_INCLUDES)
347         AC_SUBST(BOOST_LIBS)
348 ])
349
350
351 dnl Usage: LYX_CHECK_CALLSTACK_PRINTING: define LYX_CALLSTACK_PRINTING if the
352 dnl        necessary APIs are available to print callstacks.
353 AC_DEFUN([LYX_CHECK_CALLSTACK_PRINTING],
354 [AC_CACHE_CHECK([whether printing callstack is possible],
355                [lyx_cv_callstack_printing],
356 [AC_TRY_COMPILE([
357 #include <execinfo.h>
358 #include <cxxabi.h>
359 ], [
360         void* array[200];
361         size_t size = backtrace(array, 200);
362         backtrace_symbols(array, size);
363         int status = 0;
364         abi::__cxa_demangle("abcd", 0, 0, &status);
365 ],
366 [lyx_cv_callstack_printing=yes], [lyx_cv_callstack_printing=no])])
367 if test x"$lyx_cv_callstack_printing" = xyes; then
368   AC_DEFINE([LYX_CALLSTACK_PRINTING], 1,
369             [Define if callstack can be printed])
370 fi
371 ])
372
373
374 dnl Usage: LYX_USE_INCLUDED_MYTHES : select if the included MyThes should
375 dnl        be used.
376 AC_DEFUN([LYX_USE_INCLUDED_MYTHES],[
377         AC_MSG_CHECKING([whether to use included MyThes library])
378         AC_ARG_WITH(included-mythes,
379             [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])],
380             [lyx_cv_with_included_mythes=$withval],
381             [lyx_cv_with_included_mythes=yes])
382         AM_CONDITIONAL(USE_INCLUDED_MYTHES, test x$lyx_cv_with_included_mythes = xyes)
383         AC_MSG_RESULT([$lyx_cv_with_included_mythes])
384         if test x$lyx_cv_with_included_mythes != xyes ; then
385                 AC_LANG_PUSH(C++)
386                 AC_CHECK_HEADER(mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes.hxx>"])
387                 if test x$ac_cv_header_mythes_h != xyes; then
388                         AC_CHECK_HEADER(mythes/mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes/mythes.hxx>"])
389                 fi
390                 AC_CHECK_LIB(mythes, main, [MYTHES_LIBS="-lmythes" lyx_mythes=yes], [lyx_mythes=no], [-lm])
391                 if test x$lyx_mythes != xyes; then
392                         AC_CHECK_LIB(mythes-1.2, main, [MYTHES_LIBS="-lmythes-1.2" lyx_mythes=yes], [lyx_mythes=no], [-lm])
393                 fi
394                 AC_LANG_POP(C++)
395                 if test x$lyx_mythes != xyes -o x$ac_cv_header_mythes_h != xyes; then
396                         AC_MSG_ERROR([cannot find suitable MyThes library (do not use --without-included-mythes)])
397                 fi
398                 AC_DEFINE(USE_EXTERNAL_MYTHES, 1, [Define as 1 to use an external MyThes library])
399                 AC_DEFINE_UNQUOTED(MYTHES_H_LOCATION,$lyx_cv_mythes_h_location,[Location of mythes.hxx])
400                 AC_SUBST(MYTHES_LIBS)
401         fi
402 ])
403
404
405 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
406 dnl                       [default-yes-value])
407 dnl  Adds a --with-'dir-name' option (described by 'desc') and puts the
408 dnl  resulting directory name in 'dir-var-name'.
409 AC_DEFUN([LYX_WITH_DIR],[
410   AC_ARG_WITH($1,[AC_HELP_STRING([--with-$1],[specify $2])])
411   AC_MSG_CHECKING([for $2])
412   if test -z "$with_$3"; then
413      AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
414   else
415     test "x$with_$3" = xyes && with_$3=$5
416     lyx_cv_$3="$with_$3"
417   fi
418   AC_MSG_RESULT($lyx_cv_$3)])
419
420
421 dnl Usage: LYX_LOOP_DIR(value,action)
422 dnl Executes action for values of variable `dir' in `values'. `values' can
423 dnl use ":" as a separator.
424 AC_DEFUN([LYX_LOOP_DIR],[
425 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
426 for dir in `eval "echo $1"`; do
427   if test ! "$dir" = NONE; then
428     test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
429     $2
430   fi
431 done
432 IFS=$ac_save_ifs
433 ])
434
435
436 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
437 dnl var-name.
438 AC_DEFUN([LYX_ADD_LIB_DIR],[
439 $1="${$1} -L$2"
440 if test "`(uname) 2>/dev/null`" = SunOS &&
441     uname -r | grep '^5' >/dev/null; then
442   if test $ac_cv_prog_gxx = yes ; then
443     $1="${$1} -Wl[,]-R$2"
444   else
445     $1="${$1} -R$2"
446   fi
447 fi])
448
449
450 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
451 dnl var-name.
452 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
453
454 ### Check for a headers existence and location iff it exists
455 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
456 ## It almost works.  I've tried a few variations but they give errors
457 ## of one sort or other: bad substitution or file not found etc.  The
458 ## actual header _is_ found though and the cache variable is set however
459 ## the reported setting (on screen) is equal to $ac_safe for some unknown
460 ## reason.
461 ## Additionally, autoheader can't figure out what to use as the name in
462 ## the config.h.in file so we need to write our own entries there -- one for
463 ## each header in the form PATH_HEADER_NAME_H
464 ##
465 AC_DEFUN([LYX_PATH_HEADER],
466 [ AC_CHECK_HEADER($1,[
467   ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
468 ### the only remaining problem is getting the second parameter to this
469 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
470 ### of $ac_safe being printed.
471   AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
472   [ cat > conftest.$ac_ext <<EOF
473 #line __oline__ "configure"
474 #include "confdefs.h"
475
476 #include <$1>
477 EOF
478 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
479   grep $1  2>/dev/null | \
480   sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
481 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
482 rm -f conftest*])
483   AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
484 ])
485 ### end of LYX_PATH_HEADER
486
487 ## Check what kind of packaging should be used at install time.
488 ## The default is autodetected.
489 AC_DEFUN([LYX_USE_PACKAGING],
490 [AC_MSG_CHECKING([what packaging should be used])
491 AC_ARG_WITH(packaging,
492   [AC_HELP_STRING([--with-packaging=THIS], [use THIS packaging for installation:
493                             Possible values: posix, windows, macosx])],
494   [lyx_use_packaging="$withval"], [
495   case $host in
496     *-apple-darwin*) lyx_use_packaging=macosx ;;
497      *-pc-mingw32*) lyx_use_packaging=windows;;
498                   *) lyx_use_packaging=posix;;
499   esac])
500 AC_MSG_RESULT($lyx_use_packaging)
501 lyx_install_posix=false
502 lyx_install_macosx=false
503 lyx_install_cygwin=false
504 lyx_install_windows=false
505 case $lyx_use_packaging in
506    macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
507            PACKAGE=LyX${version_suffix}
508            default_prefix="/Applications/${PACKAGE}.app"
509            AC_SUBST(osx_bundle_program_name,"${program_base_name}")
510            bindir='${prefix}/Contents/MacOS'
511            libdir='${prefix}/Contents/Resources'
512            datarootdir='${prefix}/Contents/Resources'
513            pkgdatadir='${datadir}'
514            mandir='${datadir}/man'
515            lyx_install_macosx=true ;;
516   windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
517            PACKAGE=LyX${version_suffix}
518            default_prefix="C:/Program Files/${PACKAGE}"
519            bindir='${prefix}/bin'
520            libdir='${prefix}/Resources'
521            datarootdir='${prefix}/Resources'
522            pkgdatadir='${datadir}'
523            mandir='${prefix}/Resources/man'
524            lyx_install_windows=true ;;
525     posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
526            PACKAGE=lyx${version_suffix}
527            program_suffix=$version_suffix
528            pkgdatadir='${datadir}/${PACKAGE}'
529            default_prefix=$ac_default_prefix
530            case ${host} in
531            *cygwin*) lyx_install_cygwin=true ;;
532                 *apple-darwin*) lyx_install_macosx=true ;;
533            esac
534            lyx_install_posix=true ;;
535     *) AC_MSG_ERROR([unknown packaging type $lyx_use_packaging.]) ;;
536 esac
537 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
538 AM_CONDITIONAL(INSTALL_WINDOWS, $lyx_install_windows)
539 AM_CONDITIONAL(INSTALL_CYGWIN, $lyx_install_cygwin)
540 AM_CONDITIONAL(INSTALL_POSIX, $lyx_install_posix)
541 AC_SUBST(pkgdatadir)
542 AC_SUBST(program_suffix)
543 ])
544
545
546 ## ------------------------------------------------------------------------
547 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
548 ## one or two arguments.
549 ##
550 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
551 ## ------------------------------------------------------------------------
552 ##
553 AC_DEFUN([AC_FUNC_MKDIR],
554 [AC_CHECK_FUNCS([mkdir _mkdir])
555 AC_CACHE_CHECK([whether mkdir takes one argument],
556                [ac_cv_mkdir_takes_one_arg],
557 [AC_TRY_COMPILE([
558 #include <sys/stat.h>
559 #if HAVE_UNISTD_H
560 #  include <unistd.h>
561 #endif
562 ], [mkdir (".");],
563 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
564 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
565   AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
566             [Define if mkdir takes only one argument.])
567 fi
568 ])
569
570
571 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
572 dnl (which may be a relative path, and need not refer to any existing
573 dnl entity).
574
575 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
576 dnl native Win32 path name, (but with slashes, not backslashes).
577
578 dnl On any other system, it is simply the result which would be obtained
579 dnl if PATHNAME represented an existing directory, and the pwd command was
580 dnl executed in that directory.
581 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
582 [ac_dir="$2"
583  ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
584     ac_pwd_w="pwd -W" || ac_pwd_w=pwd
585  until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
586  do
587    ac_dir=`AS_DIRNAME(["$ac_dir"])`
588  done
589  ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
590  ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
591  $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
592    s?/*$[]??'`
593 ])
594
595 dnl this is used by the macro blow to general a proper config.h.in entry
596 m4_define([LYX_AH_CHECK_DECL],
597 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
598   [Define if you have the prototype for function `$1'])])
599
600 dnl Check things are declared in headers to avoid errors or warnings.
601 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
602 dnl Defines HAVE_DECL_{FUNCTION}
603 AC_DEFUN([LYX_CHECK_DECL],
604 [LYX_AH_CHECK_DECL($1)
605 for ac_header in $2
606 do
607   AC_MSG_CHECKING([if $1 is declared by header $ac_header])
608   AC_EGREP_HEADER($1, $ac_header,
609       [AC_MSG_RESULT(yes)
610        AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
611        break],
612       [AC_MSG_RESULT(no)])
613 done])
614
615 dnl this is used by the macro below to generate a proper config.h.in entry
616 m4_define([LYX_AH_CHECK_DEF],
617 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
618   [Define to 1 if `$1' is defined in `$2'])])
619
620 dnl Check whether name is defined in header by using it in codesnippet.
621 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
622 dnl Defines HAVE_DEF_{NAME}
623 AC_DEFUN([LYX_CHECK_DEF],
624 [LYX_AH_CHECK_DEF($1, $2)
625  AC_MSG_CHECKING([whether $1 is defined by header $2])
626  AC_TRY_COMPILE([#include <$2>], [$3],
627      lyx_have_def_name=yes,
628      lyx_have_def_name=no)
629  AC_MSG_RESULT($lyx_have_def_name)
630  if test "x$lyx_have_def_name" = xyes; then
631    AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
632  fi
633 ])
634
635 dnl Extract the single digits from PACKAGE_VERSION and make them available.
636 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
637 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
638 AC_DEFUN([LYX_SET_VERSION_INFO],
639 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
640  lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
641  lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
642  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
643  lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
644  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
645  test "x$lyx_patch" = "x" && lyx_patch=0
646  lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
647  lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
648  AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
649  AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
650  AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
651  AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
652  AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
653  AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
654 ])
655
656 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
657 # ---------------------------------------------------------------------------
658 # Copied from autoconf 2.68, added a check that python version is < 3.0
659 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
660 # Run ACTION-IF-FALSE otherwise.
661 # This test uses sys.hexversion instead of the string equivalent (first
662 # word of sys.version), in order to cope with versions such as 2.2c1.
663 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
664 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
665  [prog="import sys
666 # split strings by '.' and convert to numeric.  Append some zeros
667 # because we need at least 4 digits for the hex conversion.
668 # map returns an iterator in Python 3.0 and a list in 2.x
669 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
670 minverhex = 0
671 maxverhex = 50331648 # = 3.0.0.0
672 # xrange is not present in Python 3.0 and range returns an iterator
673 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
674 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
675   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])