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