]> git.lyx.org Git - lyx.git/blob - config/lyxinclude.m4
Natbib authoryear uses (Ref1; Ref2) by default.
[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 ### set up optimization
186 AC_ARG_ENABLE(optimization,
187     AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
188     enable_optimization=yes;)
189 case $enable_optimization in
190     yes)
191         if test $lyx_devel_version = yes ; then
192             lyx_opt=-O
193         else
194             lyx_opt=-O2
195         fi;;
196     no) lyx_opt=;;
197     *) lyx_opt=${enable_optimization};;
198 esac
199
200 AC_ARG_ENABLE(pch,
201   AC_HELP_STRING([--enable-pch],[enable precompiled headers]),,
202         enable_pch=no;)
203 lyx_pch_comp=no
204
205 AC_ARG_ENABLE(cxx11,
206   AC_HELP_STRING([--enable-cxx11],[enable C++11 mode]),,
207   enable_cxx11=no;)
208
209 AC_ARG_ENABLE(assertions,
210   AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
211   [AS_CASE([$build_type], [dev*|pre*], [enable_assertions=yes],
212           [enable_assertions=no])]
213 )
214 if test "x$enable_assertions" = xyes ; then
215    lyx_flags="$lyx_flags assertions"
216    AC_DEFINE(ENABLE_ASSERTIONS,1,
217     [Define if you want assertions to be enabled in the code])
218 fi
219
220 # set the compiler options correctly.
221 if test x$GXX = xyes; then
222   dnl Useful for global version info
223   gxx_version=`${CXX} -dumpversion`
224   CXX_VERSION="($gxx_version)"
225
226   if test "$ac_test_CXXFLAGS" = set; then
227     CXXFLAGS="$ac_save_CXXFLAGS"
228   else
229     CFLAGS="$lyx_opt"
230     CXXFLAGS="$lyx_opt"
231     if test x$enable_debug = xyes ; then
232       CFLAGS="-g $CFLAGS"
233       CXXFLAGS="-g $CXXFLAGS"
234     fi
235     if test $build_type = gprof ; then
236       CFLAGS="-pg $CFLAGS"
237       CXXFLAGS="-pg $CXXFLAGS"
238       LDFLAGS="-pg $LDFLAGS"
239     fi
240     if test $build_type = profiling ; then
241       CFLAGS="$CFLAGS -fno-omit-frame-pointer"
242       CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
243     fi
244   fi
245   if test "$ac_env_CPPFLAGS_set" != set; then
246     if test x$enable_warnings = xyes ; then
247         case $gxx_version in
248             3.1*|3.2*|3.3*)
249                 CPPFLAGS="-W -Wall $CPPFLAGS"
250                 ;;
251             *)
252                 CPPFLAGS="-Wextra -Wall $CPPFLAGS "
253                 ;;
254         esac
255     fi
256   fi
257   case $gxx_version in
258       3.1*)    AM_CXXFLAGS="-finline-limit=500 ";;
259       3.2*|3.3*)    AM_CXXFLAGS="";;
260       3.4*|4.*)
261           AM_CXXFLAGS=""
262           test $enable_pch = yes && lyx_pch_comp=yes
263           ;;
264       *)       AM_CXXFLAGS="";;
265   esac
266   if test x$enable_stdlib_debug = xyes ; then
267     case $gxx_version in
268       3.4*|4.*)
269         lyx_flags="$lyx_flags stdlib-debug"
270         AC_DEFINE(_GLIBCXX_DEBUG, 1, [libstdc++ debug mode])
271         AC_DEFINE(_GLIBCXX_DEBUG_PEDANTIC, 1, [libstdc++ pedantic debug mode])
272         ;;
273     esac
274   fi
275   if test x$enable_concept_checks = xyes ; then
276     case $gxx_version in
277       3.3*)
278         lyx_flags="$lyx_flags concept-checks"
279         AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
280         ;;
281       3.4*|4.*)
282         lyx_flags="$lyx_flags concept-checks"
283         AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
284         ;;
285     esac
286   fi
287   if test x$enable_cxx11 = xyes ; then
288       case $gxx_version in
289           4.3*|4.4*|4.5*|4.6*)
290               lyx_flags="$lyx_flags c++11-mode"
291               CXXFLAGS="-std=gnu++0x $CXXFLAGS"
292               ;;
293           4.7*|4.8*)
294               lyx_flags="$lyx_flags c++11-mode"
295               CXXFLAGS="-std=gnu++11 $CXXFLAGS"
296               ;;
297       esac
298   fi
299 fi
300 test "$lyx_pch_comp" = yes && lyx_flags="$lyx_flags pch"
301 AM_CONDITIONAL(LYX_BUILD_PCH, test "$lyx_pch_comp" = yes)
302 ])dnl
303
304 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
305 dnl        be used.
306 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
307         AC_MSG_CHECKING([whether to use included boost library])
308         AC_ARG_WITH(included-boost,
309             [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])],
310             [lyx_cv_with_included_boost=$withval],
311             [lyx_cv_with_included_boost=yes])
312         AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
313         AC_MSG_RESULT([$lyx_cv_with_included_boost])
314         if test x$lyx_cv_with_included_boost != xyes ; then
315                 AC_LANG_PUSH(C++)
316                 save_LIBS=$LIBS
317
318                 LIBS="$save_LIBS -lboost_signals -lm"
319                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/signal.hpp>], [boost::signal<void ()> s;])], [lyx_boost_plain=yes], [])
320                 LIBS="$save_LIBS -lboost_signals-mt -lm $LIBTHREAD"
321                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/signal.hpp>], [boost::signal<void ()> s;])], [lyx_boost_mt=yes], [])
322
323                 LIBS=$save_LIBS
324                 AC_LANG_POP(C++)
325
326                 if test x$lyx_boost_mt = xyes ; then
327                         BOOST_MT="-mt"
328                 else
329                         BOOST_MT=""
330                         if test x$lyx_boost_plain != xyes ; then
331                                 AC_MSG_ERROR([cannot find suitable boost library (do not use --without-included-boost)])
332                         fi
333                 fi
334                 AC_SUBST(BOOST_MT)
335         fi
336 ])
337
338
339 dnl Usage: LYX_USE_INCLUDED_MYTHES : select if the included MyThes should
340 dnl        be used.
341 AC_DEFUN([LYX_USE_INCLUDED_MYTHES],[
342         AC_MSG_CHECKING([whether to use included MyThes library])
343         AC_ARG_WITH(included-mythes,
344             [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])],
345             [lyx_cv_with_included_mythes=$withval],
346             [lyx_cv_with_included_mythes=yes])
347         AM_CONDITIONAL(USE_INCLUDED_MYTHES, test x$lyx_cv_with_included_mythes = xyes)
348         AC_MSG_RESULT([$lyx_cv_with_included_mythes])
349         if test x$lyx_cv_with_included_mythes != xyes ; then
350                 AC_LANG_PUSH(C++)
351                 AC_CHECK_HEADER(mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes.hxx>"])
352                 if test x$ac_cv_header_mythes_h != xyes; then
353                         AC_CHECK_HEADER(mythes/mythes.hxx,[ac_cv_header_mythes_h=yes lyx_cv_mythes_h_location="<mythes/mythes.hxx>"])
354                 fi
355                 AC_CHECK_LIB(mythes, main, [MYTHES_LIBS="-lmythes" lyx_mythes=yes], [lyx_mythes=no], [-lm])
356                 if test x$lyx_mythes != xyes; then
357                         AC_CHECK_LIB(mythes-1.2, main, [MYTHES_LIBS="-lmythes-1.2" lyx_mythes=yes], [lyx_mythes=no], [-lm])
358                 fi
359                 AC_LANG_POP(C++)
360                 if test x$lyx_mythes != xyes -o x$ac_cv_header_mythes_h != xyes; then
361                         AC_MSG_ERROR([cannot find suitable MyThes library (do not use --without-included-mythes)])
362                 fi
363                 AC_DEFINE(USE_EXTERNAL_MYTHES, 1, [Define as 1 to use an external MyThes library])
364                 AC_DEFINE_UNQUOTED(MYTHES_H_LOCATION,$lyx_cv_mythes_h_location,[Location of mythes.hxx])
365                 AC_SUBST(MYTHES_LIBS)
366         fi
367 ])
368
369
370 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
371 dnl                       [default-yes-value])
372 dnl  Adds a --with-'dir-name' option (described by 'desc') and puts the
373 dnl  resulting directory name in 'dir-var-name'.
374 AC_DEFUN([LYX_WITH_DIR],[
375   AC_ARG_WITH($1,[AC_HELP_STRING([--with-$1],[specify $2])])
376   AC_MSG_CHECKING([for $2])
377   if test -z "$with_$3"; then
378      AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
379   else
380     test "x$with_$3" = xyes && with_$3=$5
381     lyx_cv_$3="$with_$3"
382   fi
383   AC_MSG_RESULT($lyx_cv_$3)])
384
385
386 dnl Usage: LYX_LOOP_DIR(value,action)
387 dnl Executes action for values of variable `dir' in `values'. `values' can
388 dnl use ":" as a separator.
389 AC_DEFUN([LYX_LOOP_DIR],[
390 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
391 for dir in `eval "echo $1"`; do
392   if test ! "$dir" = NONE; then
393     test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
394     $2
395   fi
396 done
397 IFS=$ac_save_ifs
398 ])
399
400
401 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
402 dnl var-name.
403 AC_DEFUN([LYX_ADD_LIB_DIR],[
404 $1="${$1} -L$2"
405 if test "`(uname) 2>/dev/null`" = SunOS &&
406     uname -r | grep '^5' >/dev/null; then
407   if test $ac_cv_prog_gxx = yes ; then
408     $1="${$1} -Wl[,]-R$2"
409   else
410     $1="${$1} -R$2"
411   fi
412 fi])
413
414
415 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
416 dnl var-name.
417 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
418
419 ### Check for a headers existence and location iff it exists
420 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
421 ## It almost works.  I've tried a few variations but they give errors
422 ## of one sort or other: bad substitution or file not found etc.  The
423 ## actual header _is_ found though and the cache variable is set however
424 ## the reported setting (on screen) is equal to $ac_safe for some unknown
425 ## reason.
426 ## Additionally, autoheader can't figure out what to use as the name in
427 ## the config.h.in file so we need to write our own entries there -- one for
428 ## each header in the form PATH_HEADER_NAME_H
429 ##
430 AC_DEFUN([LYX_PATH_HEADER],
431 [ AC_CHECK_HEADER($1,[
432   ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
433 ### the only remaining problem is getting the second parameter to this
434 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
435 ### of $ac_safe being printed.
436   AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
437   [ cat > conftest.$ac_ext <<EOF
438 #line __oline__ "configure"
439 #include "confdefs.h"
440
441 #include <$1>
442 EOF
443 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
444   grep $1  2>/dev/null | \
445   sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
446 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
447 rm -f conftest*])
448   AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
449 ])
450 ### end of LYX_PATH_HEADER
451
452 ## Check what kind of packaging should be used at install time.
453 ## The default is autodetected.
454 AC_DEFUN([LYX_USE_PACKAGING],
455 [AC_MSG_CHECKING([what packaging should be used])
456 AC_ARG_WITH(packaging,
457   [AC_HELP_STRING([--with-packaging=THIS], [use THIS packaging for installation:
458                             Possible values: posix, windows, macosx])],
459   [lyx_use_packaging="$withval"], [
460   case $host in
461     *-apple-darwin*) lyx_use_packaging=macosx ;;
462      *-pc-mingw32*) lyx_use_packaging=windows;;
463                   *) lyx_use_packaging=posix;;
464   esac])
465 AC_MSG_RESULT($lyx_use_packaging)
466 lyx_install_macosx=false
467 lyx_install_cygwin=false
468 lyx_install_windows=false
469 case $lyx_use_packaging in
470    macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
471            PACKAGE=LyX${version_suffix}
472            default_prefix="/Applications/${PACKAGE}.app"
473            AC_SUBST(osx_bundle_program_name,"${program_base_name}")
474            bindir='${prefix}/Contents/MacOS'
475            libdir='${prefix}/Contents/Resources'
476            datarootdir='${prefix}/Contents/Resources'
477            pkgdatadir='${datadir}'
478            mandir='${datadir}/man'
479            lyx_install_macosx=true ;;
480   windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
481            PACKAGE=LyX${version_suffix}
482            default_prefix="C:/Program Files/${PACKAGE}"
483            bindir='${prefix}/bin'
484            libdir='${prefix}/Resources'
485            datarootdir='${prefix}/Resources'
486            pkgdatadir='${datadir}'
487            mandir='${prefix}/Resources/man'
488            lyx_install_windows=true ;;
489     posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
490            PACKAGE=lyx${version_suffix}
491            program_suffix=$version_suffix
492            pkgdatadir='${datadir}/${PACKAGE}'
493            default_prefix=$ac_default_prefix
494            case ${host} in
495            *cygwin*) lyx_install_cygwin=true ;;
496                 *apple-darwin*) lyx_install_macosx=true ;;
497            esac
498            lyx_install_posix=true ;;
499     *) AC_MSG_ERROR([unknown packaging type $lyx_use_packaging.]) ;;
500 esac
501 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
502 AM_CONDITIONAL(INSTALL_WINDOWS, $lyx_install_windows)
503 AM_CONDITIONAL(INSTALL_CYGWIN, $lyx_install_cygwin)
504 AM_CONDITIONAL(INSTALL_POSIX, $lyx_install_posix)
505 AC_SUBST(pkgdatadir)
506 AC_SUBST(program_suffix)
507 ])
508
509
510 ## ------------------------------------------------------------------------
511 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
512 ## one or two arguments.
513 ##
514 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
515 ## ------------------------------------------------------------------------
516 ##
517 AC_DEFUN([AC_FUNC_MKDIR],
518 [AC_CHECK_FUNCS([mkdir _mkdir])
519 AC_CACHE_CHECK([whether mkdir takes one argument],
520                [ac_cv_mkdir_takes_one_arg],
521 [AC_TRY_COMPILE([
522 #include <sys/stat.h>
523 #if HAVE_UNISTD_H
524 #  include <unistd.h>
525 #endif
526 ], [mkdir (".");],
527 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
528 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
529   AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
530             [Define if mkdir takes only one argument.])
531 fi
532 ])
533
534
535 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
536 dnl (which may be a relative path, and need not refer to any existing
537 dnl entity).
538
539 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
540 dnl native Win32 path name, (but with slashes, not backslashes).
541
542 dnl On any other system, it is simply the result which would be obtained
543 dnl if PATHNAME represented an existing directory, and the pwd command was
544 dnl executed in that directory.
545 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
546 [ac_dir="$2"
547  ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
548     ac_pwd_w="pwd -W" || ac_pwd_w=pwd
549  until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
550  do
551    ac_dir=`AS_DIRNAME(["$ac_dir"])`
552  done
553  ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
554  ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
555  $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
556    s?/*$[]??'`
557 ])
558
559 dnl this is used by the macro blow to general a proper config.h.in entry
560 m4_define([LYX_AH_CHECK_DECL],
561 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
562   [Define if you have the prototype for function `$1'])])
563
564 dnl Check things are declared in headers to avoid errors or warnings.
565 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
566 dnl Defines HAVE_DECL_{FUNCTION}
567 AC_DEFUN([LYX_CHECK_DECL],
568 [LYX_AH_CHECK_DECL($1)
569 for ac_header in $2
570 do
571   AC_MSG_CHECKING([if $1 is declared by header $ac_header])
572   AC_EGREP_HEADER($1, $ac_header,
573       [AC_MSG_RESULT(yes)
574        AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
575        break],
576       [AC_MSG_RESULT(no)])
577 done])
578
579 dnl this is used by the macro below to generate a proper config.h.in entry
580 m4_define([LYX_AH_CHECK_DEF],
581 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
582   [Define to 1 if `$1' is defined in `$2'])])
583
584 dnl Check whether name is defined in header by using it in codesnippet.
585 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
586 dnl Defines HAVE_DEF_{NAME}
587 AC_DEFUN([LYX_CHECK_DEF],
588 [LYX_AH_CHECK_DEF($1, $2)
589  AC_MSG_CHECKING([whether $1 is defined by header $2])
590  AC_TRY_COMPILE([#include <$2>], [$3],
591      lyx_have_def_name=yes,
592      lyx_have_def_name=no)
593  AC_MSG_RESULT($lyx_have_def_name)
594  if test "x$lyx_have_def_name" = xyes; then
595    AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
596  fi
597 ])
598
599 dnl Extract the single digits from PACKAGE_VERSION and make them available.
600 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
601 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
602 AC_DEFUN([LYX_SET_VERSION_INFO],
603 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
604  lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
605  lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
606  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
607  lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
608  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
609  test "x$lyx_patch" = "x" && lyx_patch=0
610  lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
611  lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
612  AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
613  AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
614  AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
615  AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
616  AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
617  AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
618 ])
619
620 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
621 # ---------------------------------------------------------------------------
622 # Copied from autoconf 2.68, added a check that python version is < 3.0
623 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
624 # Run ACTION-IF-FALSE otherwise.
625 # This test uses sys.hexversion instead of the string equivalent (first
626 # word of sys.version), in order to cope with versions such as 2.2c1.
627 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
628 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
629  [prog="import sys
630 # split strings by '.' and convert to numeric.  Append some zeros
631 # because we need at least 4 digits for the hex conversion.
632 # map returns an iterator in Python 3.0 and a list in 2.x
633 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
634 minverhex = 0
635 maxverhex = 50331648 # = 3.0.0.0
636 # xrange is not present in Python 3.0 and range returns an iterator
637 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
638 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
639   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])