LyX 1.5.0 is released
[lyx.git] / config / lyxinclude.m4
blobdd8220d6c7351f243da3dba5c561a8b851b8d928
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)
7 dnl Usage LYX_CHECK_VERSION   Displays version of LyX being built and
8 dnl sets variables "lyx_devel_version" and "lyx_prerelease"
9 AC_DEFUN([LYX_CHECK_VERSION],[
10 echo "configuring LyX version" AC_PACKAGE_VERSION
11 lyx_devel_version=no
12 lyx_prerelease=no
13 case AC_PACKAGE_VERSION in
14   *svn*) lyx_devel_version=yes
15          AC_DEFINE(DEVEL_VERSION, 1, [Define if you are building a development version of LyX])
16          LYX_DATE="not released yet"
17          echo "WARNING: This is a development version. Expect bugs.";;
18   *pre*|*alpha*|*beta*|*rc*) lyx_prerelease=yes
19         echo "WARNING: This is a prerelease. Be careful and backup your documents.";;
20 esac
21 AC_SUBST(lyx_devel_version)])
24 dnl Define the option to set a LyX version on installed executables and directories
25 dnl
26 dnl
27 AC_DEFUN([LYX_VERSION_SUFFIX],[
28 AC_MSG_CHECKING([for version suffix])
29 dnl We need the literal double quotes in the rpm spec file
30 RPM_VERSION_SUFFIX='""'
31 AC_ARG_WITH(version-suffix,
32   [  --with-version-suffix[=<version>]  install lyx files as lyx<version>],
33   [if test "x$withval" = "xyes";
34    then
35      withval="-"AC_PACKAGE_VERSION
36      ac_configure_args=`echo $ac_configure_args | sed "s,--with-version-suffix,--with-version-suffix=$withval,"`
37    fi
38    version_suffix=$withval
39    RPM_VERSION_SUFFIX="--with-version-suffix=$withval"])
40 AC_SUBST(RPM_VERSION_SUFFIX)
41 AC_MSG_RESULT([$withval])
45 dnl Usage: LYX_ERROR(message)  Displays the warning "message" and sets the
46 dnl flag lyx_error to yes.
47 AC_DEFUN([LYX_ERROR],[
48 lyx_error_txt="$lyx_error_txt
49 ** $1
51 lyx_error=yes])
54 dnl Usage: LYX_WARNING(message)  Displays the warning "message" and sets the
55 dnl flag lyx_warning to yes.
56 AC_DEFUN([LYX_WARNING],[
57 lyx_warning_txt="$lyx_warning_txt
58 == $1
60 lyx_warning=yes])
63 dnl Usage: LYX_LIB_ERROR(file,library)  Displays an error message indication
64 dnl  that 'file' cannot be found because 'lib' may be uncorrectly installed.
65 AC_DEFUN([LYX_LIB_ERROR],[
66 LYX_ERROR([Cannot find $1. Please check that the $2 library
67    is correctly installed on your system.])])
70 dnl Usage: LYX_CHECK_ERRORS  Displays a warning message if a LYX_ERROR
71 dnl   has occured previously.
72 AC_DEFUN([LYX_CHECK_ERRORS],[
73 if test x$lyx_warning = xyes; then
74 cat <<EOF
75 === The following minor problems have been detected by configure.
76 === Please check the messages below before running 'make'.
77 === (see the section 'Problems' in the INSTALL file)
78 $lyx_warning_txt
79 EOF
81 if test x$lyx_error = xyes; then
82 cat <<EOF
83 **** The following problems have been detected by configure.
84 **** Please check the messages below before running 'make'.
85 **** (see the section 'Problems' in the INSTALL file)
86 $lyx_error_txt
87 $lyx_warning_txt
88 EOF
89 exit 1
90 else
92 cat <<EOF
93 Configuration of LyX was successful.
94 Type 'make' to compile the program,
95 and then 'make install' to install it.
96 EOF
97 fi])
100 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
102 define(LYX_SEARCH_PROG,[dnl
103 for ac_prog in $2 ; do
104 # Extract the first word of "$ac_prog", so it can be a program name with args.
105   set dummy $ac_prog ; ac_word=$[2]
106   if test -z "[$]$1"; then
107     IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
108     for ac_dir in $PATH; do
109       test -z "$ac_dir" && ac_dir=.
110       if test -f [$ac_dir/$ac_word]; then
111         $1="$ac_prog"
112         break
113       fi
114     done
115     IFS="$ac_save_ifs"
116   fi
118   if test -n "[$]$1"; then
119     ac_result=yes
120   else
121     ac_result=no
122   fi
123   ifelse($3,,,[$3])
124   test -n "[$]$1" && break
125 done
126 ])dnl
129 AC_DEFUN([LYX_PROG_CXX_WORKS],
130 [rm -f conftest.C
131 cat >conftest.C <<EOF
132 class foo {
133    // we require the mutable keyword
134    mutable int bar;
135  };
136  // we require namespace support
137  namespace baz {
138    int bar;
140  int main() {
141    return(0);
144 $CXX -c $CXXFLAGS $CPPFLAGS conftest.C >&5 || CXX=
145 rm -f conftest.C conftest.o conftest.obj || true
149 AC_DEFUN([LYX_PROG_CXX],
150 [AC_MSG_CHECKING([for a good enough C++ compiler])
151 LYX_SEARCH_PROG(CXX, $CXX $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS])
153 if test -z "$CXX" ; then
154   AC_MSG_ERROR([Unable to find a good enough C++ compiler])
156 AC_MSG_RESULT($CXX)
158 AC_PROG_CXX
160 ### We might want to get or shut warnings.
161 AC_ARG_ENABLE(warnings,
162   AC_HELP_STRING([--enable-warnings],[tell the compiler to display more warnings]),,
163   [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
164         enable_warnings=yes;
165     else
166         enable_warnings=no;
167     fi;])
168 if test x$enable_warnings = xyes ; then
169   lyx_flags="warnings $lyx_flags"
170   AC_DEFINE(WITH_WARNINGS, 1,
171   [Define this if you want to see the warning directives put here and
172    there by the developpers to get attention])
175 ### We might want to disable debug
176 AC_ARG_ENABLE(debug,
177   AC_HELP_STRING([--enable-debug],[enable debug information]),,
178   [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes ; then
179         enable_debug=yes;
180     else
181         enable_debug=no;
182     fi;])
184 AC_ARG_ENABLE(stdlib-debug,
185   AC_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
186   [ if test $lyx_devel_version = yes ; then
187       enable_stdlib_debug=yes;
188     else
189       enable_stdlib_debug=no;
190     fi;])
192 AC_ARG_ENABLE(concept-checks,
193   AC_HELP_STRING([--enable-concept-checks],[enable concept checks]),,
194   [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes ; then
195         enable_concept_checks=yes;
196     else
197         enable_concept_checks=no;
198     fi;])
200 AC_ARG_ENABLE(profiling,
201   AC_HELP_STRING([--enable-profiling],[enable profiling]),,
202   enable_profiling=no;)
204 ### set up optimization
205 AC_ARG_ENABLE(optimization,
206     AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
207     enable_optimization=yes;)
208 case $enable_optimization in
209     yes)
210         if test $lyx_devel_version = yes ; then
211             lyx_opt=-O
212         else
213             lyx_opt=-O2
214         fi;;
215     no) lyx_opt=;;
216     *) lyx_opt=${enable_optimization};;
217 esac
219 AC_ARG_ENABLE(pch,
220   AC_HELP_STRING([--enable-pch],[enable precompiled headers]),,
221         enable_pch=yes;)
222 lyx_pch_comp=no
224 # set the compiler options correctly.
225 if test x$GXX = xyes; then
226   dnl Useful for global version info
227   gxx_version=`${CXX} -dumpversion`
228   CXX_VERSION="($gxx_version)"
230   if test "$ac_test_CXXFLAGS" = set; then
231     CXXFLAGS="$ac_save_CXXFLAGS"
232   else
233       CFLAGS="$lyx_opt"
234       CXXFLAGS="$lyx_opt"
235     if test x$enable_debug = xyes ; then
236         CFLAGS="-g $CFLAGS"
237         CXXFLAGS="-g $CXXFLAGS"
238     fi
239     if test x$enable_profiling = xyes ; then
240         CFLAGS="-pg $CFLAGS"
241         CXXFLAGS="-pg $CXXFLAGS"
242         LDFLAGS="-pg $LDFLAGS"
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="stdlib-debug $lyx_flags"
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="concept-checks $lyx_flags"
279         AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
280         ;;
281       3.4*|4.*)
282         lyx_flags="concept-checks $lyx_flags"
283         AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
284         ;;
285     esac
286   fi
288 test "$lyx_pch_comp" = yes && lyx_flags="pch $lyx_flags"
289 AM_CONDITIONAL(LYX_BUILD_PCH, test "$lyx_pch_comp" = yes)
290 ])dnl
293 dnl NOT USED CURRENTLY*************************************
294 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
295 dnl   supports RTTI
296 AC_DEFUN([LYX_CXX_RTTI],[
297 ### Check whether the compiler supports runtime type information
298 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
299  [AC_TRY_RUN([
300 class rtti {
301 public:
302    virtual int tag() { return 0; }
304 class derived1 : public rtti {
305 public:
306     int tag() { return 1; }
308 class derived2 : public rtti {
309 public:
310     int tag() { return 2; }
312 int main() {
313     derived1 * foo1 = new derived1();
314     derived2 * foo2 = new derived2();
315     rtti * bar = foo1;
316     derived1 * bar1 = dynamic_cast<derived1 *>(bar);
317     if (bar1 == 0)
318         exit(1);
319     bar = foo2;
320     bar1 = dynamic_cast<derived1 *>(bar);
321     if (bar1 != 0)
322         exit(1);
323     return 0;
325 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
327 if test x$lyx_cv_rtti = xyes ; then
328   AC_DEFINE(HAVE_RTTI, 1,
329    [Define to 1 if your compiler supports runtime type information])
330 fi])
333 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
334 dnl   understands the "explicit" directive.
335 AC_DEFUN([LYX_CXX_EXPLICIT],[
336 ### Check whether the compiler understands the keyword `explicit'
337 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
338  [AC_TRY_COMPILE([
339 class Expl {
340 public:
341         explicit Expl() {}
342 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
344 if test $lyx_cv_explicit = no ; then
345   AC_DEFINE(explicit,[ ],
346    [Define to nothing if your compiler does not understand the
347    'explicit' directive])
348 fi])
351 dnl NOT USED CURRENTLY*************************************
352 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
353 dnl   has a working stl stack template
354 AC_DEFUN([LYX_CXX_STL_STACK],[
355 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
356  [AC_TRY_COMPILE([
357 #include <stack>
358 using std::stack;
360     stack<int> stakk;
361     stakk.push(0);
362 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
364 if test $lyx_cv_broken_stack = yes ; then
365   AC_DEFINE(BROKEN_STL_STACK, 1,
366    [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
367    correctly])
368 fi])
371 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
372 dnl    count template, if not the old HP version is assumed.
373 AC_DEFUN([LYX_STD_COUNT],[
374 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
375  [AC_TRY_COMPILE([
376 #include <algorithm>
377 using std::count;
378 int countChar(char * b, char * e, char const c)
380         return count(b, e, c);
383     char a[] = "hello";
384     int i = countChar(a, a + 5, 'l');
385 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
387 if test $lyx_cv_std_count = yes ; then
388     AC_DEFINE(HAVE_STD_COUNT, 1,
389     [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
390 fi])
393 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
394 dnl   supports modern STL streams
395 AC_DEFUN([LYX_CXX_STL_MODERN_STREAMS],[
396 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
397  [AC_TRY_COMPILE([
398 #include <iostream>
400  std::streambuf * test = std::cerr.rdbuf();
401  test->pubsync();
402 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
404 if test $lyx_cv_modern_streams = yes ; then
405   AC_DEFINE(MODERN_STL_STREAMS, 1,
406    [Define if you have modern standard-compliant STL streams])
407 fi])
410 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
411 dnl        be used.
412 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
413         AC_ARG_WITH(included-boost,
414             [  --with-included-boost  use the boost lib supplied with LyX],
415             [lyx_cv_with_included_boost=$withval
416                 AC_MSG_RESULT([$with_included_boost])],
417             [lyx_cv_with_included_boost=yes])
418         AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
422 dnl NOT USED CURRENTLY*************************************
423 dnl LYX_CXX_PARTIAL
424 AC_DEFUN([LYX_CXX_PARTIAL], [
425     AC_REQUIRE([AC_PROG_CXX])
426     AC_CACHE_CHECK([if C++ compiler supports partial specialization],
427         [lyx_cv_cxx_partial_specialization],
428         [AC_TRY_COMPILE(
429             [
430             template<class T, class K>
431             class k {
432             public:
433             };
434             template<class T> class k<void,T> { };
435             ],[
436             k<float, float> b;
437             k<void,void> a;
438             ],[
439             lyx_cv_cxx_partial_specialization=yes
440             ],[
441             lyx_cv_cxx_partial_specialization=no
442             ])
443         ])
444     if test x$lyx_cv_cxx_partial_specialization = xyes ; then
445         AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
446         [Defined if your compiler supports partial specialization.])
447     fi
451 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
452 dnl   are already in the global namespace
453 AC_DEFUN([LYX_CXX_GLOBAL_CSTD],[
454     AC_CACHE_CHECK(whether C library functions are already in the global namespace,
455     lyx_cv_cxx_global_cstd,
456     [AC_TRY_COMPILE([
457     #include <cctype>
458     using std::tolower;
459     ],[
460     return 0;
461     ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
462     if test x$lyx_cv_cxx_global_cstd = xyes; then
463         AC_DEFINE(CXX_GLOBAL_CSTD,1,
464         [Define if your C++ compiler puts C library functions in the global namespace])
465     fi
469 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
470 dnl                       [default-yes-value])
471 dnl  Adds a --with-'dir-name' option (described by 'desc') and puts the
472 dnl  resulting directory name in 'dir-var-name'.
473 AC_DEFUN([LYX_WITH_DIR],[
474   AC_ARG_WITH($1,[  --with-$1        specify $2])
475   AC_MSG_CHECKING([for $2])
476   if test -z "$with_$3"; then
477      AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
478   else
479     test "x$with_$3" = xyes && with_$3=$5
480     lyx_cv_$3="$with_$3"
481   fi
482   AC_MSG_RESULT($lyx_cv_$3)])
485 dnl Usage: LYX_LOOP_DIR(value,action)
486 dnl Executes action for values of variable `dir' in `values'. `values' can
487 dnl use ":" as a separator.
488 AC_DEFUN([LYX_LOOP_DIR],[
489 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
490 for dir in `eval "echo $1"`; do
491   if test ! "$dir" = NONE; then
492     test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
493     $2
494   fi
495 done
496 IFS=$ac_save_ifs
500 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
501 dnl var-name.
502 AC_DEFUN([LYX_ADD_LIB_DIR],[
503 $1="${$1} -L$2"
504 if test "`(uname) 2>/dev/null`" = SunOS &&
505     uname -r | grep '^5' >/dev/null; then
506   if test $ac_cv_prog_gxx = yes ; then
507     $1="${$1} -Wl[,]-R$2"
508   else
509     $1="${$1} -R$2"
510   fi
511 fi])
514 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
515 dnl var-name.
516 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
518 ### Check for a headers existence and location iff it exists
519 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
520 ## It almost works.  I've tried a few variations but they give errors
521 ## of one sort or other: bad substitution or file not found etc.  The
522 ## actual header _is_ found though and the cache variable is set however
523 ## the reported setting (on screen) is equal to $ac_safe for some unknown
524 ## reason.
525 ## Additionally, autoheader can't figure out what to use as the name in
526 ## the config.h.in file so we need to write our own entries there -- one for
527 ## each header in the form PATH_HEADER_NAME_H
529 AC_DEFUN([LYX_PATH_HEADER],
530 [ AC_CHECK_HEADER($1,[
531   ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
532 ### the only remaining problem is getting the second parameter to this
533 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
534 ### of $ac_safe being printed.
535   AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
536   [ cat > conftest.$ac_ext <<EOF
537 #line __oline__ "configure"
538 #include "confdefs.h"
540 #include <$1>
542 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
543   grep $1  2>/dev/null | \
544   sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
545 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
546 rm -f conftest*])
547   AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
549 ### end of LYX_PATH_HEADER
551 ### Check which frontends we want to use.
553 AC_DEFUN([LYX_USE_FRONTENDS],
554 [AC_MSG_CHECKING([what frontend should be used for the GUI])
555 AC_ARG_WITH(frontend,
556   [  --with-frontend=THIS    Use THIS frontend as main GUI:
557                             Possible values: qt4],
558   [FRONTENDS="$withval"],[FRONTENDS="qt4"])
559 if test "x$FRONTENDS" = x ; then
560   AC_MSG_RESULT(none)
561   AC_ERROR("Please select a frontend using --with-frontend")
563 AC_MSG_RESULT($FRONTENDS)
564 AC_SUBST(FRONTENDS)
565 AC_SUBST(FRONTENDS_SUBDIRS)
566 AC_SUBST(FRONTENDS_PROGS)
570 ## Check what kind of packaging should be used at install time.
571 ## The default is autodetected.
572 AC_DEFUN([LYX_USE_PACKAGING],
573 [AC_MSG_CHECKING([what packaging should be used])
574 AC_ARG_WITH(packaging,
575   [  --with-packaging=THIS   Use THIS packaging for installation:
576                             Possible values: posix, windows, macosx],
577   [lyx_use_packaging="$withval"], [
578   case $host in
579     *-apple-darwin*) lyx_use_packaging=macosx ;;
580      *-pc-mingw32*) lyx_use_packaging=windows;;
581                   *) lyx_use_packaging=posix;;
582   esac])
583 AC_MSG_RESULT($lyx_use_packaging)
584 lyx_install_macosx=false
585 case $lyx_use_packaging in
586    macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
587            PACKAGE=LyX${version_suffix}
588            default_prefix="/Applications/${PACKAGE}.app"
589            bindir='${prefix}/Contents/MacOS'
590            libdir='${prefix}/Contents/Resources'
591            datadir='${prefix}/Contents/Resources'
592            pkgdatadir='${datadir}'
593            mandir='${datadir}/man' 
594            lyx_install_macosx=true ;;
595   windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
596            PACKAGE=LyX${version_suffix}
597            default_prefix="C:/Program Files/${PACKAGE}"
598            bindir='${prefix}/bin'
599            libdir='${prefix}/Resources'
600            datadir='${prefix}/Resources'
601            pkgdatadir='${datadir}'
602            mandir='${prefix}/Resources/man' ;;
603     posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
604            PACKAGE=lyx${version_suffix}
605            program_suffix=$version_suffix
606            pkgdatadir='${datadir}/${PACKAGE}'
607            default_prefix=$ac_default_prefix ;;
608     *) LYX_ERROR([Unknown packaging type $lyx_use_packaging]) ;;
609 esac
610 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
611 AC_SUBST(pkgdatadir)
612 AC_SUBST(program_suffix)
616 ## ------------------------------------------------------------------------
617 ## Find a file (or one of more files in a list of dirs)
618 ## ------------------------------------------------------------------------
620 AC_DEFUN([AC_FIND_FILE],
622 $3=NO
623 for i in $2;
625   for j in $1;
626   do
627     if test -r "$i/$j"; then
628       $3=$i
629       break 2
630     fi
631   done
632 done
635 dnl just a wrapper to clean up configure.in
636 AC_DEFUN([LYX_PROG_LIBTOOL],
638 AC_REQUIRE([AC_ENABLE_SHARED])
639 AC_REQUIRE([AC_ENABLE_STATIC])
640 dnl libtool is only for C, so I must force him
641 dnl to find the correct flags for C++
642 ac_save_cc=$CC
643 ac_save_cflags="$CFLAGS"
644 CC=$CXX
645 CFLAGS="$CXXFLAGS"
646 AC_PROG_LIBTOOL dnl for libraries
647 CC=$ac_save_cc
648 CFLAGS="$ac_save_cflags"
652 ## ------------------------------------------------------------------------
653 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
654 ## one or two arguments.
656 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
657 ## ------------------------------------------------------------------------
659 AC_DEFUN([AC_FUNC_MKDIR],
660 [AC_CHECK_FUNCS([mkdir _mkdir])
661 AC_CACHE_CHECK([whether mkdir takes one argument],
662                [ac_cv_mkdir_takes_one_arg],
663 [AC_TRY_COMPILE([
664 #include <sys/stat.h>
665 #if HAVE_UNISTD_H
666 #  include <unistd.h>
667 #endif
668 ], [mkdir (".");],
669 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
670 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
671   AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
672             [Define if mkdir takes only one argument.])
677 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
678 dnl (which may be a relative path, and need not refer to any existing 
679 dnl entity).
681 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
682 dnl native Win32 path name, (but with slashes, not backslashes).
684 dnl On any other system, it is simply the result which would be obtained
685 dnl if PATHNAME represented an existing directory, and the pwd command was
686 dnl executed in that directory.
687 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
688 [ac_dir="$2"
689  ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
690     ac_pwd_w="pwd -W" || ac_pwd_w=pwd
691  until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
692  do
693    ac_dir=`AS_DIRNAME(["$ac_dir"])`
694  done
695  ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
696  ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
697  $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
698    s?/*$[]??'`
701 dnl this is used by the macro blow to general a proper config.h.in entry
702 m4_define([LYX_AH_CHECK_DECL],
703 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
704   [Define if you have the prototype for function `$1'])])
706 dnl Check things are declared in headers to avoid errors or warnings.
707 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
708 dnl Defines HAVE_DECL_{FUNCTION}
709 AC_DEFUN([LYX_CHECK_DECL],
710 [LYX_AH_CHECK_DECL($1)
711 for ac_header in $2
713   AC_MSG_CHECKING([if $1 is declared by header $ac_header])
714   AC_EGREP_HEADER($1, $ac_header,
715       [AC_MSG_RESULT(yes)
716        AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
717        break],
718       [AC_MSG_RESULT(no)])
719 done])