]> git.lyx.org Git - lyx.git/blob - configure.ac
Emit a useful warning if the frontend is not recognised
[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_FRONTENDS
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 dnl The code below is not in a macro, because this would cause big
165 dnl problems with the AC_REQUIRE contained in QT_DO_IT_ALL.
166 for frontend in $FRONTENDS ; do
167   case "$frontend" in
168     xforms)
169           XFORMS_DO_IT_ALL
170           FRONTENDS_PROGS="$FRONTENDS_PROGS lyx-xforms\$(EXEEXT)"
171           FRONTENDS_SUBDIRS="$FRONTENDS_SUBDIRS xforms"
172           RPM_FRONTEND="xforms"
173           RPM_FRONTEND_DEPS='libforms >= 1.0'
174           FRONTEND_INFO="${FRONTEND_INFO}\
175   XForms Frontend:\n\
176       libXpm version:               ${XPM_VERSION}\n\
177       libforms version:             ${XFORMS_VERSION}\n"
178           ;;
179   dnl   gnome)
180   dnl     XFORMS_DO_IT_ALL
181   dnl     PKG_CHECK_MODULES(GNOME_FRONTEND, gtkmm-2.0 libglademm-2.0)
182   dnl     AC_SUBST(GNOME_FRONTEND_CFLAGS)
183   dnl     AC_SUBST(GNOME_FRONTEND_LIBS)
184
185   dnl     FRONTEND="xforms gnome"
186   dnl     FRONTEND_GUILIB="gnome/*.lo"
187   dnl     FRONTEND_LDFLAGS="${GNOME_FRONTEND_LIBS}"
188   dnl     FRONTEND_INCLUDES="${GNOME_FRONTEND_CFLAGS}"
189   dnl     FRONTEND_LIBS="@XPM_LIB@ @XFORMS_LIB@ ${GNOME_FRONTEND_LIBS}"
190   dnl   ;;
191     qt)
192           QT_DO_IT_ALL
193           FRONTENDS_PROGS="$FRONTENDS_PROGS lyx-qt\$(EXEEXT)"
194           FRONTENDS_SUBDIRS="$FRONTENDS_SUBDIRS qt2"
195           RPM_FRONTEND="qt"
196           RPM_FRONTEND_DEPS='qt >= 2.2.1'
197           FRONTEND_INFO="${FRONTEND_INFO}\
198   Qt Frontend:\n\
199       Qt version:                   ${QT_VERSION}\n"
200       ;;
201     *)
202           LYX_ERROR(Unknown frontend '$frontend');;
203   esac
204 done
205
206 ### Setup GNU gettext
207 dnl GNU gettext is written in C
208 AC_LANG_PUSH(C)
209 # Some tests that may be useful for gettext
210 AC_C_CONST
211 AC_C_INLINE
212 # Do the real setup now
213 AM_GNU_GETTEXT
214 # a hack for those who try to change LyX, but do not have gettext installed
215 case  "${XGETTEXT}" in
216  *:) XGETTEXT='cp ${srcdir}/lyx.pot ./${PACKAGE}.po ; :'
217 esac
218
219 AC_SUBST(LINGUAS)
220
221 AC_LANG_POP(C)
222
223 # some standard header files
224 AC_HEADER_DIRENT
225 AC_HEADER_MAJOR
226 AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h strings.h locale.h)
227
228 # some standard structures
229 AC_HEADER_STAT
230 AC_HEADER_TIME
231
232 # some standard types
233 AC_TYPE_MODE_T
234 AC_TYPE_OFF_T
235 AC_TYPE_PID_T
236 AC_TYPE_SIGNAL
237 AC_TYPE_SIZE_T
238 AC_TYPE_UID_T
239
240 AC_CHECK_FUNCS(snprintf vsnprintf strerror)
241 LYX_CHECK_DECL(snprintf, stdio.h)
242 LYX_CHECK_DECL(vsnprintf, stdio.h)
243 LYX_CHECK_DECL(istreambuf_iterator, iterator)
244 LYX_CHECK_DECL(mkstemp,[unistd.h stdlib.h])
245
246 AC_ARG_ENABLE(compression-support, AC_HELP_STRING([--enable-compression-support],[Support for compressed files.]),[
247     case "${enableval}" in
248         yes) use_compression=true ;;
249         no) use_compression=false ;;
250         *) AC_MSG_ERROR(bad value ${enableval} for --enable-compression-support) ;;
251     esac
252 ],[use_compression=true])
253 if test $use_compression=true ; then
254         AC_CHECK_HEADERS(zlib.h, use_compression=true, use_compression=false)
255         AC_CHECK_LIB(z, gzopen,[use_compression=true;LIBS="$LIBS -lz"], use_compression=false)
256         if test $use_compression = true ; then
257                 AC_DEFINE(USE_COMRESSION, 1, [Define as 1 if you want to supprot compressed files.])
258                 lyx_flags="$lyx_flags compression"
259         fi
260 fi
261 AM_CONDITIONAL(USE_COMPRESSION, test x$use_compression = xtrue)
262 AC_MSG_CHECKING([whether to support compressed files])
263 AC_MSG_RESULT($use_compression)
264
265
266 dnl This is a slight hack: the tests generated by autoconf 2.52 do not
267 dnl work correctly because of some conflict with stdlib.h with g++ 2.96
268 dnl We aim to remove this eventually, since we should test as much as
269 dnl possible with the compiler which will use the functions (JMarc)
270 AC_LANG_PUSH(C)
271 AC_CHECK_FUNCS(memmove memset strchr mkfifo mkstemp mktemp)
272 AC_LANG_POP(C)
273
274 AC_FUNC_SELECT_ARGTYPES
275
276 ### Some information on what just happened
277 real_bindir=`eval "echo \`eval \"echo ${bindir}\"\`"`
278 real_datadir=`eval "echo \`eval \"echo ${datadir}/${PACKAGE}\"\`"`
279 VERSION_INFO="Configuration\n\
280   Host type:                      ${host}\n\
281   Special build flags:           ${lyx_flags}\n\
282   C   Compiler:                   ${CC}\n\
283   C   Compiler flags:             ${CFLAGS}\n\
284   C++ Compiler:                   ${CXX} ${CXX_VERSION}\n\
285   C++ Compiler flags:             ${CXXFLAGS}\n\
286   Linker flags:                   ${LDFLAGS}\n\
287 ${FRONTEND_INFO}\
288   LyX binary dir:                 ${real_bindir}\n\
289   LyX files dir:                  ${real_datadir}\n"
290
291
292 AC_SUBST(VERSION_INFO)
293 AC_SUBST(RPM_FRONTEND)
294 AC_SUBST(RPM_FRONTEND_DEPS)
295
296 ## Some config.h stuff
297
298 AH_TOP([
299 /* -*- C++ -*- */
300 /* This is the compilation configuration file for LyX. It was generated by
301    autoconfs configure. You might want to change some of the defaults if
302    something goes wrong during the compilation
303
304    * This file is part of
305    * ======================================================
306    *
307    *           LyX, the High Level Word Processor
308    *
309    *           Copyright 1995 Matthias Ettrich
310    *           Copyright 1995-2001 The LyX Team.
311    *
312    *======================================================*/
313
314 #ifndef _CONFIG_H
315 #define _CONFIG_H
316 ])
317
318 AH_BOTTOM([
319 /************************************************************
320  ** You should not need to change anything beyond this point */
321
322 #ifndef HAVE_STRCHR
323 # define strchr(a,b)    index(a,b)
324 #endif
325
326 #ifndef HAVE_MEMMOVE
327 # define memmove(a,b,c) bcopy(b,a,c)
328 #endif
329
330 #ifndef HAVE_STRERROR
331 #if defined(__cplusplus)
332 extern "C"
333 #endif
334 char * strerror(int n);
335 #endif
336
337 #ifdef BROKEN_HEADERS
338 #include "broken_headers.h"
339 #endif
340
341 #ifdef HAVE_MKSTEMP
342 #ifndef HAVE_DECL_MKSTEMP
343 #if defined(__cplusplus)
344 extern "C"
345 #endif
346 int mkstemp(char*);
347 #endif
348 #endif
349
350 #ifdef __EMX__
351 #include "support/os2_defines.h"
352 #endif
353
354 #if defined(__CYGWIN__) || defined(__CYGWIN32__)
355 #include "support/nt_defines.h"
356 #endif
357
358 #if defined(HAVE_OSTREAM) && defined(HAVE_LOCALE) && defined(HAVE_SSTREAM)
359 #define USE_BOOST_FORMAT 1
360 #else
361 #define USE_BOOST_FORMAT 0
362 #endif
363
364 #define BOOST_DISABLE_THREADS 1
365 #define BOOST_NO_WREGEX 1
366 #define BOOST_NO_WSTRING 1
367
368 #endif
369 ])
370
371 ### Finish the work.
372 AC_CONFIG_SUBDIRS(lib lib/reLyX)
373 AC_CONFIG_FILES([Makefile \
374        boost/Makefile \
375        boost/libs/Makefile \
376        boost/libs/regex/Makefile \
377        boost/libs/regex/src/Makefile \
378        boost/libs/signals/Makefile \
379        boost/libs/signals/src/Makefile \
380        config/Makefile \
381        development/Makefile \
382        development/lyx.spec \
383        lib/Makefile \
384        intl/Makefile \
385        po/Makefile.in \
386        sourcedoc/Doxyfile \
387        sourcedoc/Makefile \
388        src/Makefile \
389        src/version.C-tmp:src/version.C.in \
390        src/tex2lyx/Makefile \
391        src/mathed/Makefile \
392        src/graphics/Makefile \
393        src/insets/Makefile \
394        src/support/Makefile \
395        src/frontends/Makefile \
396        src/frontends/controllers/Makefile \
397        src/frontends/xforms/Makefile \
398        src/frontends/xforms/lyx_forms.h-tmp:src/frontends/xforms/lyx_forms.h.in \
399        src/frontends/xforms/lyx_xpm.h-tmp:src/frontends/xforms/lyx_xpm.h.in \
400        src/frontends/xforms/forms/Makefile \
401        src/frontends/qt2/Makefile \
402        src/frontends/qt2/moc/Makefile \
403        src/frontends/qt2/ui/Makefile \
404        src/frontends/qt2/ui/moc/Makefile \
405        src/frontends/gnome/Makefile \
406 ])
407
408 AC_OUTPUT
409 # show version information
410 echo
411 printf "$VERSION_INFO"
412 echo
413
414 # Display a final warning if there has been a LYX_ERROR
415 LYX_CHECK_ERRORS