]> git.lyx.org Git - lyx.git/blob - configure.ac
merge BufferView::repaint() and BufferView::update()
[lyx.git] / configure.ac
1 dnl Process with autoconf to generate configure script   -*- sh -*-
2
3 AC_INIT(lyx,1.4.0cvs,lyx-devel@lists.lyx.org)
4 AC_PREREQ(2.52)
5 AC_CONFIG_SRCDIR(src/main.C)
6 AM_CONFIG_HEADER([src/config.h])
7
8 AC_CONFIG_AUX_DIR(config)
9
10 PACKAGE=lyx${program_suffix}
11 VERSION="1.4.0cvs"
12 LYX_CHECK_VERSION
13
14 AM_MAINTAINER_MODE
15 AC_CANONICAL_TARGET
16
17 LYX_VERSION_SUFFIX
18
19 AM_INIT_AUTOMAKE($lyxname, $VERSION)
20
21 # The list of languages known to LyX
22 # This is needed by GNU gettext
23 ALL_LINGUAS="bg ca cs da de es eu fi fr he hu it nl nn no pl pt ro ru sk sl sv tr wa"
24
25 # fix the value of the prefixes.
26 test "x$prefix" = xNONE && prefix=$ac_default_prefix
27 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
28
29 ### Set the execute permissions of the various scripts correctly
30 for file in config/install-sh config/mkinstalldirs lib/configure ; do
31   chmod 755 ${srcdir}/${file}
32 done
33
34 ### Check for programs
35 AC_PROG_MAKE_SET
36 AC_PROG_INSTALL
37 #AC_PROG_RANLIB
38 AC_CHECK_PROG(KPSEWHICH, kpsewhich, kpsewhich, :)
39 if test "x$KPSEWHICH" = xkpsewhich ; then
40     AC_DEFINE(HAVE_KPSEWHICH, 1,
41     [Define this if you have the kpsewhich program working on your system.])
42 fi
43 AC_CHECK_PROGS(M4, gm4 gnum4 m4, m4)
44
45 # Work around a problem in automake 1.4: when invoking install-strip,
46 # INSTALL_PROGRAM is changed to 'install -s', and since
47 # INSTALL_SCRIPT==INSTALL_PROGRAM, we get errors with fileutils-4.0
48 # which returns an error condition when stripping fails.
49 INSTALL_SCRIPT='${INSTALL}'
50
51 ### we will also need a C compiler to compile GNU gettext
52 AC_PROG_CC
53
54 ### check for special systems
55 AC_ISC_POSIX
56 AC_AIX
57
58 ### check which frontend we want to use
59 LYX_USE_FRONTEND
60
61 ### Check for a C++ compiler
62 LYX_PROG_CXX
63 ### Some checks on what the C++ compiler can(not) do
64 AC_LANG(C++)
65 dnl we do not need that currently (and probably all our supported
66 dnl compiler allow that)
67 dnl LYX_CXX_PARTIAL
68 LYX_CXX_EXPLICIT
69 LYX_CXX_STL_STRING
70 LYX_CXX_GOOD_STD_STRING
71 LYX_CXX_CHEADERS
72 LYX_CXX_GLOBAL_CSTD
73 LYX_STD_COUNT
74 dnl we disable rtti for now
75 dnl LYX_CXX_RTTI
76 AC_CHECK_HEADERS(ostream istream sstream locale limits ios)
77 LYX_CXX_STL_MODERN_STREAMS
78
79 ### and now some special lyx flags.
80 AC_ARG_ENABLE(assertions,
81   AC_HELP_STRING([--enable-assertions],[add runtime sanity checks in the program]),,
82   [if test $lyx_devel_version = yes -o $lyx_prerelease = yes ; then
83         enable_assertions=yes;
84     else
85         enable_assertions=no;
86     fi;])
87 if test "x$enable_assertions" = xyes ; then
88    lyx_flags="$lyx_flags assertions"
89    AC_DEFINE(ENABLE_ASSERTIONS,1,
90     [Define if you want assertions to be enabled in the code])
91 fi
92
93 ### Library Files
94 dnl by testing these we check if it is ok to have
95 dnl -lc and -lm as args to the compiler
96 AC_CHECK_LIB(m, sin)
97 AC_CHECK_LIB(c, fopen)
98
99 ### Add extra directories to check for libraries.
100 LYX_WITH_DIR([extra-lib],[extra library directory],extra_lib, NONE)
101 LYX_LOOP_DIR($lyx_cv_extra_lib,LYX_ADD_LIB_DIR(lyx_ldflags,$dir))
102 test ! x"$lyx_ldflags" = x && LDFLAGS="$lyx_ldflags $LDFLAGS"
103
104 ### Add extra directories to check for include files.
105 LYX_WITH_DIR([extra-inc],[extra include directory],extra_inc, NONE)
106 LYX_LOOP_DIR($lyx_cv_extra_inc,LYX_ADD_INC_DIR(lyx_cppflags,$dir))
107 test ! x"$lyx_cppflags" = x && CPPFLAGS="$lyx_cppflags $CPPFLAGS"
108
109 ### Add both includes and libraries
110 LYX_WITH_DIR([extra-prefix],[extra lib+include directory],extra_prefix, NONE, ${prefix})
111 LYX_LOOP_DIR($lyx_cv_extra_prefix,[
112 LYX_ADD_INC_DIR(CPPFLAGS,$dir/include)
113   LYX_ADD_LIB_DIR(LDFLAGS,$dir/lib)])
114
115 AC_ARG_WITH(aiksaurus,
116   [  --without-aiksaurus     do not use the Aiksaurus library],
117   [lyx_use_aiksaurus=$withval])
118 if test x$lyx_use_aiksaurus != xno; then
119 AC_CHECK_LIB(Aiksaurus, main,
120         [AC_DEFINE(HAVE_LIBAIKSAURUS,1,[Define this if you have the AikSaurus library])
121          AIKSAURUS_LIBS="-lAiksaurus -lbz2"
122         ],,"-lbz2")
123 AC_CHECK_HEADER(Aiksaurus.h,[
124   ac_cv_header_aiksaurus_h=yes
125   lyx_cv_aiksaurus_h_location="<Aiksaurus.h>"])
126 AC_CHECK_HEADER(Aiksaurus/Aiksaurus.h,[
127   ac_cv_header_aiksaurus_h=yes
128   lyx_cv_aiksaurus_h_location="<Aiksaurus/Aiksaurus.h>"])
129 AC_DEFINE_UNQUOTED(AIKSAURUS_H_LOCATION,$lyx_cv_aiksaurus_h_location,[Location of Aiksaurus.h])
130 fi
131 AC_SUBST(AIKSAURUS_LIBS)
132
133 LYX_USE_INCLUDED_BOOST
134
135 ### Setup libtool
136 AC_DISABLE_SHARED
137 AC_LIBTOOL_WIN32_DLL
138 #AM_PROG_LIBTOOL
139 LYX_PROG_LIBTOOL
140
141 ### Check if we want spell libraries, prefer new aspell
142 CHECK_WITH_ASPELL
143 if test "$USING_ASPELL" != "yes"; then
144         CHECK_WITH_PSPELL
145 fi
146
147 ### Check for some Cygwin-specific details.
148 CHECK_WITH_CYGWIN
149
150 ### Check for X libraries
151 AC_PATH_XTRA
152 case $have_x in
153   yes) LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
154        CPPFLAGS="$CPPFLAGS $X_CFLAGS";;
155   no) LYX_ERROR(dnl
156 [Cannot find X window libraries and/or headers. Check your installation.
157   If you use a Linux system, check that you have installed
158   the development tools.]);;
159   disable) ;;
160 esac
161
162 ### check which frontend we want to use
163
164 # XForms tests
165 LYX_PATH_XPM
166 LYX_PATH_XFORMS
167 LYX_CHECK_XFORMS_IMAGE_LOADER
168 # QT tests
169 QT_DO_IT_ALL
170
171 #LYX_USE_FRONTEND
172 dnl The code below is not in a macro, because this would cause big
173 dnl problems with the AC_REQUIRE contained in KDE_DO_IT_ALL.
174 case "$lyx_use_frontend" in
175   xforms)
176         FRONTEND="xforms"
177         RPM_FRONTEND="xforms"
178         RPM_FRONTEND_DEPS='libforms >= 1.0'
179         FRONTEND_GUILIB="frontends/xforms/libxforms.la"
180         FRONTEND_INFO="    libXpm version:               ${XPM_VERSION}\n\
181     libforms version:             ${XFORMS_VERSION}\n"
182         ;;
183 dnl   gnome)
184 dnl     LYX_PATH_XPM
185 dnl     LYX_PATH_XFORMS
186 dnl     LYX_CHECK_XFORMS_IMAGE_LOADER
187 dnl     PKG_CHECK_MODULES(GNOME_FRONTEND, gtkmm-2.0 libglademm-2.0)
188 dnl     AC_SUBST(GNOME_FRONTEND_CFLAGS)
189 dnl     AC_SUBST(GNOME_FRONTEND_LIBS)
190
191 dnl     FRONTEND="xforms gnome"
192 dnl     FRONTEND_GUILIB="gnome/*.lo"
193 dnl     FRONTEND_LDFLAGS="${GNOME_FRONTEND_LIBS}"
194 dnl     FRONTEND_INCLUDES="${GNOME_FRONTEND_CFLAGS}"
195 dnl     FRONTEND_LIBS="@XPM_LIB@ @XFORMS_LIB@ ${GNOME_FRONTEND_LIBS}"
196 dnl     ;;
197   qt)
198     RPM_FRONTEND="qt"
199     RPM_FRONTEND_DEPS='qt >= 2.2.1'
200     FRONTEND="qt2"
201     FRONTEND_GUILIB="frontends/qt2/libqt2.la"
202     FRONTEND_INCLUDES="\$(QT_INCLUDES)"
203     FRONTEND_INFO="    Qt version:                   ${QT_VERSION}\n"
204     ;;
205   *)
206     LYX_ERROR(Unknown frontend $lyx_use_frontend);;
207 esac
208
209 ### Setup GNU gettext
210 dnl GNU gettext is written in C
211 AC_LANG_PUSH(C)
212 # Some tests that may be useful for gettext
213 AC_C_CONST
214 AC_C_INLINE
215 # Do the real setup now
216 AM_GNU_GETTEXT
217 # a hack for those who try to change LyX, but do not have gettext installed
218 case  "${XGETTEXT}" in
219  *:) XGETTEXT='cp ${srcdir}/lyx.pot ./${PACKAGE}.po ; :'
220 esac
221
222 AC_SUBST(LINGUAS)
223
224 AC_LANG_POP(C)
225
226 # some standard header files
227 AC_HEADER_DIRENT
228 AC_HEADER_MAJOR
229 AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h strings.h locale.h)
230
231 # some standard structures
232 AC_HEADER_STAT
233 AC_HEADER_TIME
234
235 # some standard types
236 AC_TYPE_MODE_T
237 AC_TYPE_OFF_T
238 AC_TYPE_PID_T
239 AC_TYPE_SIGNAL
240 AC_TYPE_SIZE_T
241 AC_TYPE_UID_T
242
243 AC_CHECK_FUNCS(snprintf vsnprintf strerror)
244 LYX_CHECK_DECL(snprintf, stdio.h)
245 LYX_CHECK_DECL(vsnprintf, stdio.h)
246 LYX_CHECK_DECL(istreambuf_iterator, iterator)
247 LYX_CHECK_DECL(mkstemp,[unistd.h stdlib.h])
248
249 AC_ARG_ENABLE(compression-support, AC_HELP_STRING([--enable-compression-support],[Support for compressed files.]),[
250     case "${enableval}" in
251         yes) use_compression=true ;;
252         no) use_compression=false ;;
253         *) AC_MSG_ERROR(bad value ${enableval} for --enable-compression-support) ;;
254     esac
255 ],[use_compression=true])
256 if test $use_compression=true ; then
257         AC_CHECK_HEADERS(zlib.h, use_compression=true, use_compression=false)
258         AC_CHECK_LIB(z, gzopen,[use_compression=true;LIBS="$LIBS -lz"], use_compression=false)
259         if test $use_compression = true ; then
260                 AC_DEFINE(USE_COMRESSION, 1, [Define as 1 if you want to supprot compressed files.])
261                 lyx_flags="$lyx_flags compression"
262         fi
263 fi
264 AM_CONDITIONAL(USE_COMPRESSION, test x$use_compression = xtrue)
265 AC_MSG_CHECKING([whether to support compressed files])
266 AC_MSG_RESULT($use_compression)
267
268
269 dnl This is a slight hack: the tests generated by autoconf 2.52 do not
270 dnl work correctly because of some conflict with stdlib.h with g++ 2.96
271 dnl We aim to remove this eventually, since we should test as much as
272 dnl possible with the compiler which will use the functions (JMarc)
273 AC_LANG_PUSH(C)
274 AC_CHECK_FUNCS(memmove memset strchr mkfifo mkstemp mktemp)
275 AC_LANG_POP(C)
276
277 AC_FUNC_SELECT_ARGTYPES
278
279 ### Some information on what just happened
280 real_bindir=`eval "echo \`eval \"echo ${bindir}\"\`"`
281 real_datadir=`eval "echo \`eval \"echo ${datadir}/${PACKAGE}\"\`"`
282 VERSION_INFO="Configuration\n\
283   Host type:                      ${host}\n\
284   Special build flags:           ${lyx_flags}\n\
285   C   Compiler:                   ${CC}\n\
286   C   Compiler flags:             ${CFLAGS}\n\
287   C++ Compiler:                   ${CXX} ${CXX_VERSION}\n\
288   C++ Compiler flags:             ${CXXFLAGS}\n\
289   Linker flags:                   ${LDFLAGS}\n\
290   Frontend:                       ${lyx_use_frontend}\n\
291 ${FRONTEND_INFO}\
292   LyX binary dir:                 ${real_bindir}\n\
293   LyX files dir:                  ${real_datadir}\n"
294
295
296 AC_SUBST(VERSION_INFO)
297 AC_SUBST(RPM_FRONTEND)
298 AC_SUBST(RPM_FRONTEND_DEPS)
299
300 ## Some config.h stuff
301
302 AH_TOP([
303 /* -*- C++ -*- */
304 /* This is the compilation configuration file for LyX. It was generated by
305    autoconfs configure. You might want to change some of the defaults if
306    something goes wrong during the compilation
307
308    * This file is part of
309    * ======================================================
310    *
311    *           LyX, the High Level Word Processor
312    *
313    *           Copyright 1995 Matthias Ettrich
314    *           Copyright 1995-2001 The LyX Team.
315    *
316    *======================================================*/
317
318 #ifndef _CONFIG_H
319 #define _CONFIG_H
320 ])
321
322 AH_BOTTOM([
323 /************************************************************
324  ** You should not need to change anything beyond this point */
325
326 #ifndef HAVE_STRCHR
327 # define strchr(a,b)    index(a,b)
328 #endif
329
330 #ifndef HAVE_MEMMOVE
331 # define memmove(a,b,c) bcopy(b,a,c)
332 #endif
333
334 #ifndef HAVE_STRERROR
335 #if defined(__cplusplus)
336 extern "C"
337 #endif
338 char * strerror(int n);
339 #endif
340
341 #ifdef BROKEN_HEADERS
342 #include "broken_headers.h"
343 #endif
344
345 #ifdef HAVE_MKSTEMP
346 #ifndef HAVE_DECL_MKSTEMP
347 #if defined(__cplusplus)
348 extern "C"
349 #endif
350 int mkstemp(char*);
351 #endif
352 #endif
353
354 #ifdef __EMX__
355 #include "support/os2_defines.h"
356 #endif
357
358 #if defined(__CYGWIN__) || defined(__CYGWIN32__)
359 #include "support/nt_defines.h"
360 #endif
361
362 #if defined(HAVE_OSTREAM) && defined(HAVE_LOCALE) && defined(HAVE_SSTREAM)
363 #define USE_BOOST_FORMAT 1
364 #else
365 #define USE_BOOST_FORMAT 0
366 #endif
367
368 #define BOOST_DISABLE_THREADS 1
369 #define BOOST_NO_EXCEPTIONS 1
370 #define BOOST_NO_WREGEX 1
371 #define BOOST_NO_WSTRING 1
372
373 #endif
374 ])
375
376 ### Finish the work.
377 AC_CONFIG_SUBDIRS(lib lib/reLyX)
378 AC_CONFIG_FILES([Makefile \
379        boost/Makefile \
380        boost/libs/Makefile \
381        boost/libs/regex/Makefile \
382        boost/libs/regex/src/Makefile \
383        boost/libs/signals/Makefile \
384        boost/libs/signals/src/Makefile \
385        config/Makefile \
386        development/Makefile \
387        development/lyx.spec \
388        lib/Makefile \
389        intl/Makefile \
390        po/Makefile.in \
391        sourcedoc/Doxyfile \
392        sourcedoc/Makefile \
393        src/Makefile \
394        src/version.C \
395        src/tex2lyx/Makefile \
396        src/mathed/Makefile \
397        src/graphics/Makefile \
398        src/insets/Makefile \
399        src/support/Makefile \
400        src/frontends/Makefile \
401        src/frontends/controllers/Makefile \
402        src/frontends/xforms/Makefile \
403        src/frontends/xforms/lyx_forms.h \
404        src/frontends/xforms/lyx_xpm.h \
405        src/frontends/xforms/forms/Makefile \
406        src/frontends/qt2/Makefile \
407        src/frontends/qt2/moc/Makefile \
408        src/frontends/qt2/ui/Makefile \
409        src/frontends/qt2/ui/moc/Makefile \
410        src/frontends/gnome/Makefile \
411 ])
412
413 AC_OUTPUT
414 # show version information
415 echo
416 printf "$VERSION_INFO"
417 echo
418
419 # Display a final warning if there has been a LYX_ERROR
420 LYX_CHECK_ERRORS