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