]> git.lyx.org Git - lyx.git/blob - config/lyxinclude.m4
620ebe40b05590a15ea830b45f06d042aae5a9c8
[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_MSG_CHECKING([whether to use boost included library])
427         AC_ARG_WITH(included-boost,
428             [  --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],
429             [lyx_cv_with_included_boost=$withval],
430             [lyx_cv_with_included_boost=yes])
431         AM_CONDITIONAL(USE_INCLUDED_BOOST, test x$lyx_cv_with_included_boost = xyes)
432         AC_MSG_RESULT([$lyx_cv_with_included_boost])
433 ])
434
435
436 dnl NOT USED CURRENTLY*************************************
437 dnl LYX_CXX_PARTIAL
438 AC_DEFUN([LYX_CXX_PARTIAL], [
439     AC_REQUIRE([AC_PROG_CXX])
440     AC_CACHE_CHECK([if C++ compiler supports partial specialization],
441         [lyx_cv_cxx_partial_specialization],
442         [AC_TRY_COMPILE(
443             [
444             template<class T, class K>
445             class k {
446             public:
447             };
448             template<class T> class k<void,T> { };
449             ],[
450             k<float, float> b;
451             k<void,void> a;
452             ],[
453             lyx_cv_cxx_partial_specialization=yes
454             ],[
455             lyx_cv_cxx_partial_specialization=no
456             ])
457         ])
458     if test x$lyx_cv_cxx_partial_specialization = xyes ; then
459         AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION, 1,
460         [Defined if your compiler supports partial specialization.])
461     fi
462 ])
463
464
465 dnl Usage: LYX_CXX_GLOBAL_CSTD: checks whether C library functions
466 dnl   are already in the global namespace
467 AC_DEFUN([LYX_CXX_GLOBAL_CSTD],[
468     AC_CACHE_CHECK(whether C library functions are already in the global namespace,
469     lyx_cv_cxx_global_cstd,
470     [AC_TRY_COMPILE([
471     #include <cctype>
472     using std::tolower;
473     ],[
474     return 0;
475     ],[lyx_cv_cxx_global_cstd=no],[lyx_cv_cxx_global_cstd=yes])])
476     if test x$lyx_cv_cxx_global_cstd = xyes; then
477         AC_DEFINE(CXX_GLOBAL_CSTD,1,
478         [Define if your C++ compiler puts C library functions in the global namespace])
479     fi
480 ])
481
482
483 dnl Usage: LYX_WITH_DIR(dir-name,desc,dir-var-name,default-value,
484 dnl                       [default-yes-value])
485 dnl  Adds a --with-'dir-name' option (described by 'desc') and puts the
486 dnl  resulting directory name in 'dir-var-name'.
487 AC_DEFUN([LYX_WITH_DIR],[
488   AC_ARG_WITH($1,[AC_HELP_STRING([--with-$1],[specify $2])])
489   AC_MSG_CHECKING([for $2])
490   if test -z "$with_$3"; then
491      AC_CACHE_VAL(lyx_cv_$3, lyx_cv_$3=$4)
492   else
493     test "x$with_$3" = xyes && with_$3=$5
494     lyx_cv_$3="$with_$3"
495   fi
496   AC_MSG_RESULT($lyx_cv_$3)])
497
498
499 dnl Usage: LYX_LOOP_DIR(value,action)
500 dnl Executes action for values of variable `dir' in `values'. `values' can
501 dnl use ":" as a separator.
502 AC_DEFUN([LYX_LOOP_DIR],[
503 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
504 for dir in `eval "echo $1"`; do
505   if test ! "$dir" = NONE; then
506     test ! -d "$dir" && AC_MSG_ERROR([\"$dir\" is not a directory])
507     $2
508   fi
509 done
510 IFS=$ac_save_ifs
511 ])
512
513
514 dnl Usage: LYX_ADD_LIB_DIR(var-name,dir) Adds a -L directive to variable
515 dnl var-name.
516 AC_DEFUN([LYX_ADD_LIB_DIR],[
517 $1="${$1} -L$2"
518 if test "`(uname) 2>/dev/null`" = SunOS &&
519     uname -r | grep '^5' >/dev/null; then
520   if test $ac_cv_prog_gxx = yes ; then
521     $1="${$1} -Wl[,]-R$2"
522   else
523     $1="${$1} -R$2"
524   fi
525 fi])
526
527
528 dnl Usage: LYX_ADD_INC_DIR(var-name,dir) Adds a -I directive to variable
529 dnl var-name.
530 AC_DEFUN([LYX_ADD_INC_DIR],[$1="${$1} -I$2 "])
531
532 ### Check for a headers existence and location iff it exists
533 ## This is supposed to be a generalised version of LYX_STL_STRING_FWD
534 ## It almost works.  I've tried a few variations but they give errors
535 ## of one sort or other: bad substitution or file not found etc.  The
536 ## actual header _is_ found though and the cache variable is set however
537 ## the reported setting (on screen) is equal to $ac_safe for some unknown
538 ## reason.
539 ## Additionally, autoheader can't figure out what to use as the name in
540 ## the config.h.in file so we need to write our own entries there -- one for
541 ## each header in the form PATH_HEADER_NAME_H
542 ##
543 AC_DEFUN([LYX_PATH_HEADER],
544 [ AC_CHECK_HEADER($1,[
545   ac_tr_safe=PATH_`echo $ac_safe | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
546 ### the only remaining problem is getting the second parameter to this
547 ### AC_CACHE_CACHE to print correctly. Currently it just results in value
548 ### of $ac_safe being printed.
549   AC_CACHE_CHECK([path to $1],[lyx_cv_path2_$ac_safe],
550   [ cat > conftest.$ac_ext <<EOF
551 #line __oline__ "configure"
552 #include "confdefs.h"
553
554 #include <$1>
555 EOF
556 lyx_path_header_path=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
557   grep $1  2>/dev/null | \
558   sed -e 's/.*\(".*$1"\).*/\1/' -e "1q"`
559 eval "lyx_cv_path2_${ac_safe}=\$lyx_path_header_path"
560 rm -f conftest*])
561   AC_DEFINE_UNQUOTED($ac_tr_safe, $lyx_path_header_path, [dummy])])
562 ])
563 ### end of LYX_PATH_HEADER
564
565 ### Check which frontends we want to use.
566 ###
567 AC_DEFUN([LYX_USE_FRONTENDS],
568 [AC_MSG_CHECKING([what frontend should be used for the GUI])
569 AC_ARG_WITH(frontend,
570   [  --with-frontend=THIS    Use THIS frontend as main GUI:
571                             Possible values: qt4],
572   [FRONTENDS="$withval"],[FRONTENDS="qt4"])
573 if test "x$FRONTENDS" = x ; then
574   AC_MSG_RESULT(none)
575   AC_ERROR("Please select a frontend using --with-frontend")
576 fi
577 AC_MSG_RESULT($FRONTENDS)
578 AC_SUBST(FRONTENDS)
579 AC_SUBST(FRONTENDS_SUBDIRS)
580 AC_SUBST(FRONTENDS_PROGS)
581 ])
582
583
584 ## Check what kind of packaging should be used at install time.
585 ## The default is autodetected.
586 AC_DEFUN([LYX_USE_PACKAGING],
587 [AC_MSG_CHECKING([what packaging should be used])
588 AC_ARG_WITH(packaging,
589   [  --with-packaging=THIS   Use THIS packaging for installation:
590                             Possible values: posix, windows, macosx],
591   [lyx_use_packaging="$withval"], [
592   case $host in
593     *-apple-darwin*) lyx_use_packaging=macosx ;;
594      *-pc-mingw32*) lyx_use_packaging=windows;;
595                   *) lyx_use_packaging=posix;;
596   esac])
597 AC_MSG_RESULT($lyx_use_packaging)
598 lyx_install_macosx=false
599 case $lyx_use_packaging in
600    macosx) AC_DEFINE(USE_MACOSX_PACKAGING, 1, [Define to 1 if LyX should use a MacOS X application bundle file layout])
601            PACKAGE=LyX${version_suffix}
602            default_prefix="/Applications/${PACKAGE}.app"
603            bindir='${prefix}/Contents/MacOS'
604            libdir='${prefix}/Contents/Resources'
605            datarootdir='${prefix}/Contents/Resources'
606            pkgdatadir='${datadir}'
607            mandir='${datadir}/man'
608            lyx_install_macosx=true ;;
609   windows) AC_DEFINE(USE_WINDOWS_PACKAGING, 1, [Define to 1 if LyX should use a Windows-style file layout])
610            PACKAGE=LyX${version_suffix}
611            default_prefix="C:/Program Files/${PACKAGE}"
612            bindir='${prefix}/bin'
613            libdir='${prefix}/Resources'
614            datarootdir='${prefix}/Resources'
615            pkgdatadir='${datadir}'
616            mandir='${prefix}/Resources/man' ;;
617     posix) AC_DEFINE(USE_POSIX_PACKAGING, 1, [Define to 1 if LyX should use a POSIX-style file layout])
618            PACKAGE=lyx${version_suffix}
619            program_suffix=$version_suffix
620            pkgdatadir='${datadir}/${PACKAGE}'
621            default_prefix=$ac_default_prefix ;;
622     *) LYX_ERROR([Unknown packaging type $lyx_use_packaging]) ;;
623 esac
624 AM_CONDITIONAL(INSTALL_MACOSX, $lyx_install_macosx)
625 dnl Next two lines are only for autoconf <= 2.59
626 datadir='${datarootdir}'
627 AC_SUBST(datarootdir)
628 AC_SUBST(pkgdatadir)
629 AC_SUBST(program_suffix)
630 ])
631
632
633 ## ------------------------------------------------------------------------
634 ## Find a file (or one of more files in a list of dirs)
635 ## ------------------------------------------------------------------------
636 ##
637 AC_DEFUN([AC_FIND_FILE],
638 [
639 $3=NO
640 for i in $2;
641 do
642   for j in $1;
643   do
644     if test -r "$i/$j"; then
645       $3=$i
646       break 2
647     fi
648   done
649 done
650 ])
651
652 dnl just a wrapper to clean up configure.in
653 AC_DEFUN([LYX_PROG_LIBTOOL],
654 [
655 AC_REQUIRE([AC_ENABLE_SHARED])
656 AC_REQUIRE([AC_ENABLE_STATIC])
657 dnl libtool is only for C, so I must force him
658 dnl to find the correct flags for C++
659 ac_save_cc=$CC
660 ac_save_cflags="$CFLAGS"
661 CC=$CXX
662 CFLAGS="$CXXFLAGS"
663 AC_PROG_LIBTOOL dnl for libraries
664 CC=$ac_save_cc
665 CFLAGS="$ac_save_cflags"
666 ])
667
668
669 ## ------------------------------------------------------------------------
670 ## Check whether mkdir() is mkdir or _mkdir, and whether it takes
671 ## one or two arguments.
672 ##
673 ## http://ac-archive.sourceforge.net/C_Support/ac_func_mkdir.html
674 ## ------------------------------------------------------------------------
675 ##
676 AC_DEFUN([AC_FUNC_MKDIR],
677 [AC_CHECK_FUNCS([mkdir _mkdir])
678 AC_CACHE_CHECK([whether mkdir takes one argument],
679                [ac_cv_mkdir_takes_one_arg],
680 [AC_TRY_COMPILE([
681 #include <sys/stat.h>
682 #if HAVE_UNISTD_H
683 #  include <unistd.h>
684 #endif
685 ], [mkdir (".");],
686 [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])])
687 if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then
688   AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1,
689             [Define if mkdir takes only one argument.])
690 fi
691 ])
692
693
694 dnl Set VAR to the canonically resolved absolute equivalent of PATHNAME,
695 dnl (which may be a relative path, and need not refer to any existing
696 dnl entity).
697
698 dnl On Win32-MSYS build hosts, the returned path is resolved to its true
699 dnl native Win32 path name, (but with slashes, not backslashes).
700
701 dnl On any other system, it is simply the result which would be obtained
702 dnl if PATHNAME represented an existing directory, and the pwd command was
703 dnl executed in that directory.
704 AC_DEFUN([MSYS_AC_CANONICAL_PATH],
705 [ac_dir="$2"
706  ( exec 2>/dev/null; cd / && pwd -W ) | grep ':' >/dev/null &&
707     ac_pwd_w="pwd -W" || ac_pwd_w=pwd
708  until ac_val=`exec 2>/dev/null; cd "$ac_dir" && $ac_pwd_w`
709  do
710    ac_dir=`AS_DIRNAME(["$ac_dir"])`
711  done
712  ac_dir=`echo "$ac_dir" | sed 's?^[[./]]*??'`
713  ac_val=`echo "$ac_val" | sed 's?/*$[]??'`
714  $1=`echo "$2" | sed "s?^[[./]]*$ac_dir/*?$ac_val/?"'
715    s?/*$[]??'`
716 ])
717
718 dnl this is used by the macro blow to general a proper config.h.in entry
719 m4_define([LYX_AH_CHECK_DECL],
720 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_$1),
721   [Define if you have the prototype for function `$1'])])
722
723 dnl Check things are declared in headers to avoid errors or warnings.
724 dnl Called like LYX_CHECK_DECL(function, header1 header2...)
725 dnl Defines HAVE_DECL_{FUNCTION}
726 AC_DEFUN([LYX_CHECK_DECL],
727 [LYX_AH_CHECK_DECL($1)
728 for ac_header in $2
729 do
730   AC_MSG_CHECKING([if $1 is declared by header $ac_header])
731   AC_EGREP_HEADER($1, $ac_header,
732       [AC_MSG_RESULT(yes)
733        AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_DECL_$1))
734        break],
735       [AC_MSG_RESULT(no)])
736 done])
737
738 dnl Extract the single digits from PACKAGE_VERSION and make them available.
739 dnl Defines LYX_MAJOR_VERSION, LYX_MINOR_VERSION, LYX_RELEASE_LEVEL, and
740 dnl LYX_RELEASE_PATCH, the latter being possibly equal to 0.
741 AC_DEFUN([LYX_SET_VERSION_INFO],
742 [lyx_major=`echo $PACKAGE_VERSION | sed -e 's/[[.]].*//'`
743  lyx_patch=`echo $PACKAGE_VERSION | sed -e "s/^$lyx_major//" -e 's/^.//'`
744  lyx_minor=`echo $lyx_patch | sed -e 's/[[.]].*//'`
745  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_minor//" -e 's/^.//'`
746  lyx_release=`echo $lyx_patch | sed -e 's/[[^0-9]].*//'`
747  lyx_patch=`echo $lyx_patch | sed -e "s/^$lyx_release//" -e 's/^[[.]]//' -e 's/[[^0-9]].*//'`
748  test "x$lyx_patch" = "x" && lyx_patch=0
749  AC_SUBST(LYX_MAJOR_VERSION,$lyx_major)
750  AC_SUBST(LYX_MINOR_VERSION,$lyx_minor)
751  AC_SUBST(LYX_RELEASE_LEVEL,$lyx_release)
752  AC_SUBST(LYX_RELEASE_PATCH,$lyx_patch)
753 ])