]> git.lyx.org Git - lyx.git/blob - configure.ac
\end_document replaces \the_end.
[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   [  --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_CHECK_HEADERS(zlib.h)
250 AC_CHECK_LIB(z, gzopen)
251
252 dnl This is a slight hack: the tests generated by autoconf 2.52 do not
253 dnl work correctly because of some conflict with stdlib.h with g++ 2.96
254 dnl We aim to remove this eventually, since we should test as much as
255 dnl possible with the compiler which will use the functions (JMarc)
256 AC_LANG_PUSH(C)
257 AC_CHECK_FUNCS(memmove memset strchr mkfifo mkstemp mktemp)
258 AC_LANG_POP(C)
259
260 AC_FUNC_SELECT_ARGTYPES
261
262 ### Some information on what just happened
263 real_bindir=`eval "echo \`eval \"echo ${bindir}\"\`"`
264 real_datadir=`eval "echo \`eval \"echo ${datadir}/${PACKAGE}\"\`"`
265 VERSION_INFO="Configuration\n\
266   Host type:                      ${host}\n\
267   Special build flags:           ${lyx_flags}\n\
268   C   Compiler:                   ${CC}\n\
269   C   Compiler flags:             ${CFLAGS}\n\
270   C++ Compiler:                   ${CXX} ${CXX_VERSION}\n\
271   C++ Compiler flags:             ${CXXFLAGS}\n\
272   Linker flags:                   ${LDFLAGS}\n\
273   Frontend:                       ${lyx_use_frontend}\n\
274 ${FRONTEND_INFO}\
275   LyX binary dir:                 ${real_bindir}\n\
276   LyX files dir:                  ${real_datadir}\n"
277
278
279 AC_SUBST(VERSION_INFO)
280 AC_SUBST(RPM_FRONTEND)
281 AC_SUBST(RPM_FRONTEND_DEPS)
282
283 ## Some config.h stuff
284
285 AH_TOP([
286 /* -*- C++ -*- */
287 /* This is the compilation configuration file for LyX. It was generated by
288    autoconfs configure. You might want to change some of the defaults if
289    something goes wrong during the compilation
290
291    * This file is part of
292    * ======================================================
293    *
294    *           LyX, the High Level Word Processor
295    *
296    *           Copyright 1995 Matthias Ettrich
297    *           Copyright 1995-2001 The LyX Team.
298    *
299    *======================================================*/
300
301 #ifndef _CONFIG_H
302 #define _CONFIG_H
303 ])
304
305 AH_BOTTOM([
306 /************************************************************
307  ** You should not need to change anything beyond this point */
308
309 #ifndef HAVE_STRCHR
310 # define strchr(a,b)    index(a,b)
311 #endif
312
313 #ifndef HAVE_MEMMOVE
314 # define memmove(a,b,c) bcopy(b,a,c)
315 #endif
316
317 #ifndef HAVE_STRERROR
318 #if defined(__cplusplus)
319 extern "C"
320 #endif
321 char * strerror(int n);
322 #endif
323
324 #ifdef BROKEN_HEADERS
325 #include "broken_headers.h"
326 #endif
327
328 #ifdef HAVE_MKSTEMP
329 #ifndef HAVE_DECL_MKSTEMP
330 #if defined(__cplusplus)
331 extern "C"
332 #endif
333 int mkstemp(char*);
334 #endif
335 #endif
336
337 #ifdef __EMX__
338 #include "support/os2_defines.h"
339 #endif
340
341 #if defined(__CYGWIN__) || defined(__CYGWIN32__)
342 #include "support/nt_defines.h"
343 #endif
344
345 #if defined(HAVE_OSTREAM) && defined(HAVE_LOCALE) && defined(HAVE_SSTREAM)
346 #define USE_BOOST_FORMAT 1
347 #else
348 #define USE_BOOST_FORMAT 0
349 #endif
350
351 #define BOOST_DISABLE_THREADS 1
352 #define BOOST_NO_EXCEPTIONS 1
353 #define BOOST_NO_WREGEX 1
354 #define BOOST_NO_WSTRING 1
355
356 #endif
357 ])
358
359 ### Finish the work.
360 AC_CONFIG_SUBDIRS(lib lib/reLyX)
361 AC_CONFIG_FILES([Makefile \
362        boost/Makefile \
363        boost/libs/Makefile \
364        boost/libs/regex/Makefile \
365        boost/libs/regex/src/Makefile \
366        boost/libs/signals/Makefile \
367        boost/libs/signals/src/Makefile \
368        config/Makefile \
369        development/Makefile \
370        development/lyx.spec \
371        lib/Makefile \
372        intl/Makefile \
373        po/Makefile.in \
374        sourcedoc/Doxyfile \
375        sourcedoc/Makefile \
376        src/Makefile \
377        src/version.C \
378        src/tex2lyx/Makefile \
379        src/mathed/Makefile \
380        src/graphics/Makefile \
381        src/insets/Makefile \
382        src/support/Makefile \
383        src/frontends/Makefile \
384        src/frontends/controllers/Makefile \
385        src/frontends/xforms/Makefile \
386        src/frontends/xforms/lyx_forms.h \
387        src/frontends/xforms/lyx_xpm.h \
388        src/frontends/xforms/forms/Makefile \
389        src/frontends/qt2/Makefile \
390        src/frontends/qt2/moc/Makefile \
391        src/frontends/qt2/ui/Makefile \
392        src/frontends/qt2/ui/moc/Makefile \
393        src/frontends/gnome/Makefile \
394 ])
395
396 AC_OUTPUT
397 # show version information
398 echo
399 printf "$VERSION_INFO"
400 echo
401
402 # Display a final warning if there has been a LYX_ERROR
403 LYX_CHECK_ERRORS