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