]> git.lyx.org Git - lyx.git/blob - config/lyxinclude.m4
Bibtopic requires styles files to be passed via argument
[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     *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_posix=false
467 lyx_install_macosx=false
468 lyx_install_cygwin=false
469 lyx_install_windows=false
470 case $lyx_use_packaging in
471    macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
472            PACKAGE=LyX${version_suffix}
473            default_prefix="/Applications/${PACKAGE}.app"
474            AC_SUBST(osx_bundle_program_name,"${program_base_name}")
475            bindir='${prefix}/Contents/MacOS'
476            libdir='${prefix}/Contents/Resources'
477            datarootdir='${prefix}/Contents/Resources'
478            pkgdatadir='${datadir}'
479            mandir='${datadir}/man'
480            lyx_install_macosx=true ;;
481   windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
482            PACKAGE=LyX${version_suffix}
483            default_prefix="C:/Program Files/${PACKAGE}"
484            bindir='${prefix}/bin'
485            libdir='${prefix}/Resources'
486            datarootdir='${prefix}/Resources'
487            pkgdatadir='${datadir}'
488            mandir='${prefix}/Resources/man'
489            lyx_install_windows=true ;;
490     posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
491            PACKAGE=lyx${version_suffix}
492            program_suffix=$version_suffix
493            pkgdatadir='${datadir}/${PACKAGE}'
494            default_prefix=$ac_default_prefix
495            case ${host} in
496            *cygwin*) lyx_install_cygwin=true ;;
497                 *apple-darwin*) lyx_install_macosx=true ;;
498            esac
499            lyx_install_posix=true ;;
500     *) AC_MSG_ERROR([unknown packaging type $lyx_use_packaging.]) ;;
501 esac
502 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
503 AM_CONDITIONAL(INSTALL_WINDOWS, $lyx_install_windows)
504 AM_CONDITIONAL(INSTALL_CYGWIN, $lyx_install_cygwin)
505 AM_CONDITIONAL(INSTALL_POSIX, $lyx_install_posix)
506 AC_SUBST(pkgdatadir)
507 AC_SUBST(program_suffix)
508 ])
509
510
511 ## ------------------------------------------------------------------------
512 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
513 ## one or two arguments.
514 ##
515 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
516 ## ------------------------------------------------------------------------
517 ##
518 AC_DEFUN([AC_FUNC_MKDIR],
519 [AC_CHECK_FUNCS([mkdir _mkdir])
520 AC_CACHE_CHECK([whether mkdir takes one argument],
521                [ac_cv_mkdir_takes_one_arg],
522 [AC_TRY_COMPILE([
523 #include <sys/stat.h>
524 #if HAVE_UNISTD_H
525 #  include <unistd.h>
526 #endif
527 ], [mkdir (".");],
528 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
529 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
530   AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
531             [Define if mkdir takes only one argument.])
532 fi
533 ])
534
535
536 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
537 dnl (which may be a relative path, and need not refer to any existing
538 dnl entity).
539
540 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
541 dnl native Win32 path name, (but with slashes, not backslashes).
542
543 dnl On any other system, it is simply the result which would be obtained
544 dnl if PATHNAME represented an existing directory, and the pwd command was
545 dnl executed in that directory.
546 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
547 [ac_dir="$2"
548  ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
549     ac_pwd_w="pwd -W" || ac_pwd_w=pwd
550  until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
551  do
552    ac_dir=`AS_DIRNAME(["$ac_dir"])`
553  done
554  ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
555  ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
556  $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
557    s?/*$[]??'`
558 ])
559
560 dnl this is used by the macro blow to general a proper config.h.in entry
561 m4_define([LYX_AH_CHECK_DECL],
562 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
563   [Define if you have the prototype for function `$1'])])
564
565 dnl Check things are declared in headers to avoid errors or warnings.
566 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
567 dnl Defines HAVE_DECL_{FUNCTION}
568 AC_DEFUN([LYX_CHECK_DECL],
569 [LYX_AH_CHECK_DECL($1)
570 for ac_header in $2
571 do
572   AC_MSG_CHECKING([if $1 is declared by header $ac_header])
573   AC_EGREP_HEADER($1, $ac_header,
574       [AC_MSG_RESULT(yes)
575        AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
576        break],
577       [AC_MSG_RESULT(no)])
578 done])
579
580 dnl this is used by the macro below to generate a proper config.h.in entry
581 m4_define([LYX_AH_CHECK_DEF],
582 [AH_TEMPLATE(AS_TR_CPP(HAVE_DEF_$1),
583   [Define to 1 if `$1' is defined in `$2'])])
584
585 dnl Check whether name is defined in header by using it in codesnippet.
586 dnl Called like LYX_CHECK_DEF(name, header, codesnippet)
587 dnl Defines HAVE_DEF_{NAME}
588 AC_DEFUN([LYX_CHECK_DEF],
589 [LYX_AH_CHECK_DEF($1, $2)
590  AC_MSG_CHECKING([whether $1 is defined by header $2])
591  AC_TRY_COMPILE([#include <$2>], [$3],
592      lyx_have_def_name=yes,
593      lyx_have_def_name=no)
594  AC_MSG_RESULT($lyx_have_def_name)
595  if test "x$lyx_have_def_name" = xyes; then
596    AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DEF_$1))
597  fi
598 ])
599
600 dnl Extract the single digits from PACKAGE_VERSION and make them available.
601 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL,
602 dnl LYX_RELEASE_PATCH (possibly equal to 0), LYX_DIR_VER, and LYX_USERDIR_VER.
603 AC_DEFUN([LYX_SET_VERSION_INFO],
604 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
605  lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
606  lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
607  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
608  lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
609  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
610  test "x$lyx_patch" = "x" && lyx_patch=0
611  lyx_dir_ver=LYX_DIR_${lyx_major}${lyx_minor}x
612  lyx_userdir_ver=LYX_USERDIR_${lyx_major}${lyx_minor}x
613  AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
614  AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
615  AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
616  AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
617  AC_SUBST(LYX_DIR_VER,"$lyx_dir_ver")
618  AC_SUBST(LYX_USERDIR_VER,"$lyx_userdir_ver")
619 ])
620
621 # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
622 # ---------------------------------------------------------------------------
623 # Copied from autoconf 2.68, added a check that python version is < 3.0
624 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
625 # Run ACTION-IF-FALSE otherwise.
626 # This test uses sys.hexversion instead of the string equivalent (first
627 # word of sys.version), in order to cope with versions such as 2.2c1.
628 # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
629 AC_DEFUN([AM_PYTHON_CHECK_VERSION],
630  [prog="import sys
631 # split strings by '.' and convert to numeric.  Append some zeros
632 # because we need at least 4 digits for the hex conversion.
633 # map returns an iterator in Python 3.0 and a list in 2.x
634 minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
635 minverhex = 0
636 maxverhex = 50331648 # = 3.0.0.0
637 # xrange is not present in Python 3.0 and range returns an iterator
638 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
639 sys.exit(sys.hexversion < minverhex or sys.hexversion >= maxverhex)"
640   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])