]> git.lyx.org Git - lyx.git/blob - config/lyxinclude.m4
4767cdb64fa646659eb6a2ccae4bc82ed8f0c6e4
[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 variables "lyx_devel_version" and "lyx_prerelease"
9 AC_DEFUN([LYX_CHECK_VERSION],[
10 echo "configuring LyX version" AC_PACKAGE_VERSION
11 if echo AC_PACKAGE_VERSION | grep 'svn' >/dev/null ; then
12   lyx_devel_version=yes
13   AC_DEFINE(DEVEL_VERSION, 1, [Define if you are building a development version of LyX])
14   echo "WARNING: This is a development version. Expect bugs."
15 else
16   lyx_devel_version=no
17 fi
18 if echo AC_PACKAGE_VERSION | grep 'pre' > /dev/null ; then
19     lyx_prerelease=yes
20     echo "WARNING: This is a prerelease. Be careful and backup your documents."
21 else
22     lyx_prerelease=no
23 fi
24 AC_SUBST(lyx_devel_version)])
25
26
27 dnl Define the option to set a LyX version on installed executables and directories
28 dnl
29 dnl
30 AC_DEFUN([LYX_VERSION_SUFFIX],[
31 AC_MSG_CHECKING([for version suffix])
32 dnl We need the literal double quotes in the rpm spec file
33 RPM_VERSION_SUFFIX='""'
34 AC_ARG_WITH(version-suffix,
35   [  --with-version-suffix[=<version>]  install lyx files as lyx<version>],
36   [if test "x$withval" = "xyes";
37    then
38      withval="-"AC_PACKAGE_VERSION
39      ac_configure_args=`echo $ac_configure_args | sed "s,--with-version-suffix,--with-version-suffix=$withval,"`
40    fi
41    version_suffix=$withval
42    RPM_VERSION_SUFFIX="--with-version-suffix=$withval"])
43 AC_SUBST(RPM_VERSION_SUFFIX)
44 AC_MSG_RESULT([$withval])
45 ])
46
47
48 dnl Usage: LYX_ERROR(message)  Displays the warning "message" and sets the
49 dnl flag lyx_error to yes.
50 AC_DEFUN([LYX_ERROR],[
51 lyx_error_txt="$lyx_error_txt
52 ** $1
53 "
54 lyx_error=yes])
55
56
57 dnl Usage: LYX_WARNING(message)  Displays the warning "message" and sets the
58 dnl flag lyx_warning to yes.
59 AC_DEFUN([LYX_WARNING],[
60 lyx_warning_txt="$lyx_warning_txt
61 == $1
62 "
63 lyx_warning=yes])
64
65
66 dnl Usage: LYX_LIB_ERROR(file,library)  Displays an error message indication
67 dnl  that 'file' cannot be found because 'lib' may be uncorrectly installed.
68 AC_DEFUN([LYX_LIB_ERROR],[
69 LYX_ERROR([Cannot find $1. Please check that the $2 library
70    is correctly installed on your system.])])
71
72
73 dnl Usage: LYX_CHECK_ERRORS  Displays a warning message if a LYX_ERROR
74 dnl   has occured previously.
75 AC_DEFUN([LYX_CHECK_ERRORS],[
76 if test x$lyx_warning = xyes; then
77 cat <<EOF
78 === The following minor problems have been detected by configure.
79 === Please check the messages below before running 'make'.
80 === (see the section 'Problems' in the INSTALL file)
81 $lyx_warning_txt
82 EOF
83 fi
84 if test x$lyx_error = xyes; then
85 cat <<EOF
86 **** The following problems have been detected by configure.
87 **** Please check the messages below before running 'make'.
88 **** (see the section 'Problems' in the INSTALL file)
89 $lyx_error_txt
90 $lyx_warning_txt
91 EOF
92 exit 1
93 else
94
95 cat <<EOF
96 Configuration of LyX was successful.
97 Type 'make' to compile the program,
98 and then 'make install' to install it.
99 EOF
100 fi])
101
102
103 dnl LYX_SEARCH_PROG(VARIABLE-NAME,PROGRAMS-LIST,ACTION-IF-FOUND)
104 dnl
105 define(LYX_SEARCH_PROG,[dnl
106 for ac_prog in $2 ; do
107 # Extract the first word of "$ac_prog", so it can be a program name with args.
108   set dummy $ac_prog ; ac_word=$[2]
109   if test -z "[$]$1"; then
110     IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
111     for ac_dir in $PATH; do
112       test -z "$ac_dir" && ac_dir=.
113       if test -f [$ac_dir/$ac_word]; then
114         $1="$ac_prog"
115         break
116       fi
117     done
118     IFS="$ac_save_ifs"
119   fi
120
121   if test -n "[$]$1"; then
122     ac_result=yes
123   else
124     ac_result=no
125   fi
126   ifelse($3,,,[$3])
127   test -n "[$]$1" && break
128 done
129 ])dnl
130
131
132 AC_DEFUN([LYX_PROG_CXX_WORKS],
133 [rm -f conftest.C
134 cat >conftest.C <<EOF
135 class foo {
136    // we require the mutable keyword
137    mutable int bar;
138  };
139  // we require namespace support
140  namespace baz {
141    int bar;
142  }
143  int main() {
144    return(0);
145  }
146 EOF
147 $CXX -c $CXXFLAGS $CPPFLAGS conftest.C >&5 || CXX=
148 rm -f conftest.C conftest.o conftest.obj || true
149 ])
150
151
152 AC_DEFUN([LYX_PROG_CXX],
153 [AC_MSG_CHECKING([for a good enough C++ compiler])
154 LYX_SEARCH_PROG(CXX, $CXX $CCC g++ gcc c++ CC cxx xlC cc++, [LYX_PROG_CXX_WORKS])
155
156 if test -z "$CXX" ; then
157   AC_MSG_ERROR([Unable to find a good enough C++ compiler])
158 fi
159 AC_MSG_RESULT($CXX)
160
161 AC_PROG_CXX
162
163 ### We might want to get or shut warnings.
164 AC_ARG_ENABLE(warnings,
165   AC_HELP_STRING([--enable-warnings],[tell the compiler to display more warnings]),,
166   [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes && test $ac_cv_prog_gxx = yes ; then
167         enable_warnings=yes;
168     else
169         enable_warnings=no;
170     fi;])
171 if test x$enable_warnings = xyes ; then
172   lyx_flags="warnings $lyx_flags"
173   AC_DEFINE(WITH_WARNINGS, 1,
174   [Define this if you want to see the warning directives put here and
175    there by the developpers to get attention])
176 fi
177
178 ### We might want to disable debug
179 AC_ARG_ENABLE(debug,
180   AC_HELP_STRING([--enable-debug],[enable debug information]),,
181   [ if test $lyx_devel_version = yes -o $lyx_prerelease = yes ; then
182         enable_debug=yes;
183     else
184         enable_debug=no;
185     fi;])
186
187 AC_ARG_ENABLE(stdlib-debug,
188   AC_HELP_STRING([--enable-stdlib-debug],[enable debug mode in the standard library]),,
189   [ if test $lyx_devel_version = yes ; then
190       enable_stdlib_debug=yes;
191     else
192       enable_stdlib_debug=no;
193     fi;])
194
195 AC_ARG_ENABLE(concept-checks,
196   AC_HELP_STRING([--enable-concept-checks],[enable concept checks]),,
197   [ if test $lyx_devel_version = yes -o $lyx-prerelease = yes ; then
198         enable_concept_checks=yes;
199     else
200         enable_concept_checks=no;
201     fi;])
202
203 AC_ARG_ENABLE(profiling,
204   AC_HELP_STRING([--enable-profiling],[enable profiling]),,
205   enable_profiling=no;)
206
207 ### set up optimization
208 AC_ARG_ENABLE(optimization,
209     AC_HELP_STRING([--enable-optimization[=value]],[enable compiler optimisation]),,
210     enable_optimization=yes;)
211 case $enable_optimization in
212     yes)
213         if test $lyx_devel_version = yes ; then
214             lyx_opt=-O
215         else
216             lyx_opt=-O2
217         fi;;
218     no) lyx_opt=;;
219     *) lyx_opt=${enable_optimization};;
220 esac
221
222 AC_ARG_ENABLE(pch,
223   AC_HELP_STRING([--enable-pch],[enable precompiled headers]),,
224         enable_pch=yes;)
225 lyx_pch_comp=no
226
227 # set the compiler options correctly.
228 if test x$GXX = xyes; then
229   dnl Useful for global version info
230   gxx_version=`${CXX} -dumpversion`
231   CXX_VERSION="($gxx_version)"
232
233   if test "$ac_test_CXXFLAGS" = set; then
234     CXXFLAGS="$ac_save_CXXFLAGS"
235   else
236       CFLAGS="$lyx_opt"
237       CXXFLAGS="$lyx_opt"
238     if test x$enable_debug = xyes ; then
239         CFLAGS="-g $CFLAGS"
240         CXXFLAGS="-g $CXXFLAGS"
241     fi
242     if test x$enable_profiling = xyes ; then
243         CFLAGS="-pg $CFLAGS"
244         CXXFLAGS="-pg $CXXFLAGS"
245         LDFLAGS="-pg $LDFLAGS"
246     fi
247   fi
248   if test "$ac_env_CPPFLAGS_set" != set; then
249     if test x$enable_warnings = xyes ; then
250         case $gxx_version in
251             3.1*|3.2*|3.3*)
252                 CPPFLAGS="-W -Wall $CPPFLAGS"
253                 ;;
254             *)
255                 CPPFLAGS="-Wextra -Wall $CPPFLAGS "
256                 ;;
257         esac
258     fi
259   fi
260   case $gxx_version in
261       3.1*)    AM_CXXFLAGS="-finline-limit=500 ";;
262       3.2*|3.3*)    AM_CXXFLAGS="";;
263       3.4*|4.*)
264           AM_CXXFLAGS=""
265           test $enable_pch = yes && lyx_pch_comp=yes
266           ;;
267       *)       AM_CXXFLAGS="";;
268   esac
269   if test x$enable_stdlib_debug = xyes ; then
270     case $gxx_version in
271       3.4*|4.*)
272         lyx_flags="stdlib-debug $lyx_flags"
273         AC_DEFINE(_GLIBCXX_DEBUG, 1, [libstdc++ debug mode])
274         AC_DEFINE(_GLIBCXX_DEBUG_PEDANTIC, 1, [libstdc++ pedantic debug mode])
275         ;;
276     esac
277   fi
278   if test x$enable_concept_checks = xyes ; then
279     case $gxx_version in
280       3.3*)
281         lyx_flags="concept-checks $lyx_flags"
282         AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
283         ;;
284       3.4*|4.*)
285         lyx_flags="concept-checks $lyx_flags"
286         AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1, [libstdc++ concept checking])
287         ;;
288     esac
289   fi
290 fi
291 test "$lyx_pch_comp" = yes && lyx_flags="pch $lyx_flags"
292 AM_CONDITIONAL(LYX_BUILD_PCH, test "$lyx_pch_comp" = yes)
293 ])dnl
294
295
296 dnl NOT USED CURRENTLY*************************************
297 dnl Usage: LYX_CXX_RTTI : checks whether the C++ compiler
298 dnl   supports RTTI
299 AC_DEFUN([LYX_CXX_RTTI],[
300 ### Check whether the compiler supports runtime type information
301 AC_CACHE_CHECK(whether the C++ compiler supports RTTI,lyx_cv_rtti,
302  [AC_TRY_RUN([
303 class rtti {
304 public:
305    virtual int tag() { return 0; }
306 };
307 class derived1 : public rtti {
308 public:
309     int tag() { return 1; }
310 };
311 class derived2 : public rtti {
312 public:
313     int tag() { return 2; }
314 };
315 int main() {
316     derived1 * foo1 = new derived1();
317     derived2 * foo2 = new derived2();
318     rtti * bar = foo1;
319     derived1 * bar1 = dynamic_cast<derived1 *>(bar);
320     if (bar1 == 0)
321         exit(1);
322     bar = foo2;
323     bar1 = dynamic_cast<derived1 *>(bar);
324     if (bar1 != 0)
325         exit(1);
326     return 0;
327 }
328 ],lyx_cv_rtti=yes,lyx_cv_rtti=no,lyx_cv_rtti=no)
329 ])
330 if test x$lyx_cv_rtti = xyes ; then
331   AC_DEFINE(HAVE_RTTI, 1,
332    [Define to 1 if your compiler supports runtime type information])
333 fi])
334
335
336 dnl Usage: LYX_CXX_EXPLICIT : checks whether the C++ compiler
337 dnl   understands the "explicit" directive.
338 AC_DEFUN([LYX_CXX_EXPLICIT],[
339 ### Check whether the compiler understands the keyword `explicit'
340 AC_CACHE_CHECK(whether the C++ compiler understands explicit,lyx_cv_explicit,
341  [AC_TRY_COMPILE([
342 class Expl {
343 public:
344         explicit Expl() {}
345 };],,lyx_cv_explicit=yes,lyx_cv_explicit=no)
346 ])
347 if test $lyx_cv_explicit = no ; then
348   AC_DEFINE(explicit,[ ],
349    [Define to nothing if your compiler does not understand the
350    'explicit' directive])
351 fi])
352
353
354 dnl NOT USED CURRENTLY*************************************
355 dnl Usage: LYX_CXX_STL_STACK : checks whether the C++ compiler
356 dnl   has a working stl stack template
357 AC_DEFUN([LYX_CXX_STL_STACK],[
358 AC_CACHE_CHECK(for broken STL stack template,lyx_cv_broken_stack,
359  [AC_TRY_COMPILE([
360 #include <stack>
361 using std::stack;
362 ],[
363     stack<int> stakk;
364     stakk.push(0);
365 ],lyx_cv_broken_stack=no,lyx_cv_broken_stack=yes)
366 ])
367 if test $lyx_cv_broken_stack = yes ; then
368   AC_DEFINE(BROKEN_STL_STACK, 1,
369    [Define if you have the STL from libg++ 2.7.x, where stack<> is not defined
370    correctly])
371 fi])
372
373
374 dnl Usage: LYX_STD_COUNT : checks wherer the C++ library have a conforming
375 dnl    count template, if not the old HP version is assumed.
376 AC_DEFUN([LYX_STD_COUNT],[
377 AC_CACHE_CHECK(for conforming std::count,lyx_cv_std_count,
378  [AC_TRY_COMPILE([
379 #include <algorithm>
380 using std::count;
381 int countChar(char * b, char * e, char const c)
382 {
383         return count(b, e, c);
384 }
385 ],[
386     char a[] = "hello";
387     int i = countChar(a, a + 5, 'l');
388 ],lyx_cv_std_count=yes,lyx_cv_std_count=no)
389 ])
390 if test $lyx_cv_std_count = yes ; then
391     AC_DEFINE(HAVE_STD_COUNT, 1,
392     [Define if you have a conforming std::count template, otherwise HP version of count template is assumed.])
393 fi])
394
395
396 dnl Usage: LYX_CXX_STL_MODERN_STREAMS : checks whether the C++ compiler
397 dnl   supports modern STL streams
398 AC_DEFUN([LYX_CXX_STL_MODERN_STREAMS],[
399 AC_CACHE_CHECK(for modern STL streams,lyx_cv_modern_streams,
400  [AC_TRY_COMPILE([
401 #include <iostream>
402 ],[
403  std::streambuf * test = std::cerr.rdbuf();
404  test->pubsync();
405 ],lyx_cv_modern_streams=yes,lyx_cv_modern_streams=no)
406 ])
407 if test $lyx_cv_modern_streams = yes ; then
408   AC_DEFINE(MODERN_STL_STREAMS, 1,
409    [Define if you have modern standard-compliant STL streams])
410 fi])
411
412
413 dnl Usage: LYX_USE_INCLUDED_BOOST : select if the included boost should
414 dnl        be used.
415 AC_DEFUN([LYX_USE_INCLUDED_BOOST],[
416         AC_ARG_WITH(included-boost,
417             [  --with-included-boost  use the boost lib supplied with LyX],
418             [lyx_cv_with_included_boost=$withval
419                 AC_MSG_RESULT([$with_included_boost])],
420             [lyx_cv_with_included_boost=yes])
421         AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
422 ])
423
424
425 dnl NOT USED CURRENTLY*************************************
426 dnl LYX_CXX_PARTIAL
427 AC_DEFUN([LYX_CXX_PARTIAL], [
428     AC_REQUIRE([AC_PROG_CXX])
429     AC_CACHE_CHECK([if C++ compiler supports partial specialization],
430         [lyx_cv_cxx_partial_specialization],
431         [AC_TRY_COMPILE(
432             [
433             template<class T, class K>
434             class k {
435             public:
436             };
437             template<class T> class k<void,T> { };
438             ],[
439             k<float, float> b;
440             k<void,void> a;
441             ],[
442             lyx_cv_cxx_partial_specialization=yes
443             ],[
444             lyx_cv_cxx_partial_specialization=no
445             ])
446         ])
447     if test x$lyx_cv_cxx_partial_specialization = xyes ; then
448         AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
449         [Defined if your compiler supports partial specialization.])
450     fi
451 ])
452
453
454 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
455 dnl   are already in the global namespace
456 AC_DEFUN([LYX_CXX_GLOBAL_CSTD],[
457     AC_CACHE_CHECK(whether C library functions are already in the global namespace,
458     lyx_cv_cxx_global_cstd,
459     [AC_TRY_COMPILE([
460     #include <cctype>
461     using std::tolower;
462     ],[
463     return 0;
464     ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
465     if test x$lyx_cv_cxx_global_cstd = xyes; then
466         AC_DEFINE(CXX_GLOBAL_CSTD,1,
467         [Define if your C++ compiler puts C library functions in the global namespace])
468     fi
469 ])
470
471
472 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
473 dnl                       [default-yes-value])
474 dnl  Adds a --with-'dir-name' option (described by 'desc') and puts the
475 dnl  resulting directory name in 'dir-var-name'.
476 AC_DEFUN([LYX_WITH_DIR],[
477   AC_ARG_WITH($1,[  --with-$1        specify $2])
478   AC_MSG_CHECKING([for $2])
479   if test -z "$with_$3"; then
480      AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
481   else
482     test "x$with_$3" = xyes && with_$3=$5
483     lyx_cv_$3="$with_$3"
484   fi
485   AC_MSG_RESULT($lyx_cv_$3)])
486
487
488 dnl Usage: LYX_LOOP_DIR(value,action)
489 dnl Executes action for values of variable `dir' in `values'. `values' can
490 dnl use ":" as a separator.
491 AC_DEFUN([LYX_LOOP_DIR],[
492 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
493 for dir in `eval "echo $1"`; do
494   if test ! "$dir" = NONE; then
495     test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
496     $2
497   fi
498 done
499 IFS=$ac_save_ifs
500 ])
501
502
503 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
504 dnl var-name.
505 AC_DEFUN([LYX_ADD_LIB_DIR],[
506 $1="${$1} -L$2"
507 if test "`(uname) 2>/dev/null`" = SunOS &&
508     uname -r | grep '^5' >/dev/null; then
509   if test $ac_cv_prog_gxx = yes ; then
510     $1="${$1} -Wl[,]-R$2"
511   else
512     $1="${$1} -R$2"
513   fi
514 fi])
515
516
517 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
518 dnl var-name.
519 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
520
521 ### Check for a headers existence and location iff it exists
522 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
523 ## It almost works.  I've tried a few variations but they give errors
524 ## of one sort or other: bad substitution or file not found etc.  The
525 ## actual header _is_ found though and the cache variable is set however
526 ## the reported setting (on screen) is equal to $ac_safe for some unknown
527 ## reason.
528 ## Additionally, autoheader can't figure out what to use as the name in
529 ## the config.h.in file so we need to write our own entries there -- one for
530 ## each header in the form PATH_HEADER_NAME_H
531 ##
532 AC_DEFUN([LYX_PATH_HEADER],
533 [ AC_CHECK_HEADER($1,[
534   ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
535 ### the only remaining problem is getting the second parameter to this
536 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
537 ### of $ac_safe being printed.
538   AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
539   [ cat > conftest.$ac_ext <<EOF
540 #line __oline__ "configure"
541 #include "confdefs.h"
542
543 #include <$1>
544 EOF
545 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
546   grep $1  2>/dev/null | \
547   sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
548 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
549 rm -f conftest*])
550   AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
551 ])
552 ### end of LYX_PATH_HEADER
553
554 ### Check which frontends we want to use.
555 ###
556 AC_DEFUN([LYX_USE_FRONTENDS],
557 [AC_MSG_CHECKING([what frontend should be used for the GUI])
558 AC_ARG_WITH(frontend,
559   [  --with-frontend=THIS    Use THIS frontend as main GUI:
560                             Possible values: qt3, qt4, gtk],
561   [FRONTENDS="$withval"])
562 if test "x$FRONTENDS" = x ; then
563   AC_MSG_RESULT(none)
564   AC_ERROR("Please select a frontend using --with-frontend")
565 fi
566 AC_MSG_RESULT($FRONTENDS)
567 AC_SUBST(FRONTENDS)
568 AC_SUBST(FRONTENDS_SUBDIRS)
569 AC_SUBST(FRONTENDS_PROGS)
570 ])
571
572
573 ## Check what kind of packaging should be used at install time.
574 ## The default is autodetected.
575 AC_DEFUN([LYX_USE_PACKAGING],
576 [AC_MSG_CHECKING([what packaging should be used])
577 AC_ARG_WITH(packaging,
578   [  --with-packaging=THIS   Use THIS packaging for installation:
579                             Possible values: posix, windows, macosx],
580   [lyx_use_packaging="$withval"], [
581   case $host in
582     *-apple-darwin*) lyx_use_packaging=macosx ;;
583      *-pc-mingw32*) lyx_use_packaging=windows;;
584                   *) lyx_use_packaging=posix;;
585   esac])
586 AC_MSG_RESULT($lyx_use_packaging)
587 case $lyx_use_packaging in
588    macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
589            PACKAGE=LyX${version_suffix}
590            default_prefix="/Applications/${PACKAGE}.app"
591            bindir='${prefix}/Contents/MacOS'
592            libdir='${prefix}/Contents/Resources'
593            datadir='${prefix}/Contents/Resources'
594            pkgdatadir='${datadir}'
595            mandir='${datadir}/man' ;;
596   windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
597            PACKAGE=LyX${version_suffix}
598            default_prefix="C:/Program Files/${PACKAGE}"
599            bindir='${prefix}/bin'
600            libdir='${prefix}/Resources'
601            datadir='${prefix}/Resources'
602            pkgdatadir='${datadir}'
603            mandir='${prefix}/Resources/man' ;;
604     posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
605            PACKAGE=lyx${version_suffix}
606            program_suffix=$version_suffix
607            pkgdatadir='${datadir}/${PACKAGE}'
608            default_prefix=$ac_default_prefix ;;
609     *) LYX_ERROR([Unknown packaging type $lyx_use_packaging]) ;;
610 esac
611 AC_SUBST(pkgdatadir)
612 AC_SUBST(program_suffix)
613 ])
614
615
616 ## ------------------------------------------------------------------------
617 ## Find a file (or one of more files in a list of dirs)
618 ## ------------------------------------------------------------------------
619 ##
620 AC_DEFUN([AC_FIND_FILE],
621 [
622 $3=NO
623 for i in $2;
624 do
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
633 ])
634
635 dnl just a wrapper to clean up configure.in
636 AC_DEFUN([LYX_PROG_LIBTOOL],
637 [
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"
649 ])
650
651
652 ## ------------------------------------------------------------------------
653 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
654 ## one or two arguments.
655 ##
656 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
657 ## ------------------------------------------------------------------------
658 ##
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.])
673 fi
674 ])
675
676
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).
680
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).
683
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?/*$[]??'`
699 ])