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