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