]> git.lyx.org Git - lyx.git/blob - config/configure.ac
small tweaks
[lyx.git] / config / 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 AM_MAINTAINER_MODE
10
11 PACKAGE=lyx${program_suffix}
12 VERSION="1.4.0cvs"
13 LYX_CHECK_VERSION
14
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 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)
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 fi
124 AC_SUBST(AIKSAURUS_LIBS)
125
126 ### Setup libtool
127 AC_DISABLE_SHARED
128 AC_LIBTOOL_WIN32_DLL
129 #AM_PROG_LIBTOOL
130 LYX_PROG_LIBTOOL
131
132 ### Check if we want spell libraries, prefer new aspell
133 CHECK_WITH_ASPELL
134 if test "$USING_ASPELL" != "yes"; then
135         CHECK_WITH_PSPELL
136 fi
137
138 ### Check for some Cygwin-specific details.
139 CHECK_WITH_CYGWIN
140
141 ### Check for X libraries
142 # The real thing.
143 AC_PATH_XTRA
144 LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS"
145 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
146
147 ### check which frontend we want to use
148
149 #LYX_USE_FRONTEND
150 dnl The code below is not in a macro, because this would cause big
151 dnl problems with the AC_REQUIRE contained in KDE_DO_IT_ALL.
152 case "$lyx_use_frontend" in
153   xforms)
154         LYX_PATH_XPM
155         LYX_PATH_XFORMS
156         LYX_CHECK_XFORMS_IMAGE_LOADER
157         FRONTEND="xforms"
158         RPM_FRONTEND="xforms"
159         RPM_FRONTEND_DEPS='libforms >= 1.0'
160         FRONTEND_GUILIB="xforms/*.lo xforms/forms/*.lo"
161         FRONTEND_INCLUDES="-I\$(srcdir)/xforms"
162         FRONTEND_LIBS="@XFORMS_IMAGE_LIB@ @XFORMS_LIB@ @XPM_LIB@"
163         FRONTEND_INFO="    libXpm version:               ${XPM_VERSION}\n\
164     libforms version:             ${XFORMS_VERSION}\n"
165         ;;
166 dnl   gnome)
167 dnl     LYX_PATH_XPM
168 dnl     LYX_PATH_XFORMS
169 dnl     LYX_CHECK_XFORMS_IMAGE_LOADER
170 dnl     PKG_CHECK_MODULES(GNOME_FRONTEND, gtkmm-2.0 libglademm-2.0)
171 dnl     AC_SUBST(GNOME_FRONTEND_CFLAGS)
172 dnl     AC_SUBST(GNOME_FRONTEND_LIBS)
173
174 dnl     FRONTEND="xforms gnome"
175 dnl     FRONTEND_GUILIB="gnome/*.lo"
176 dnl     FRONTEND_LDFLAGS="${GNOME_FRONTEND_LIBS}"
177 dnl     FRONTEND_INCLUDES="-I\${srcdir}/gnome -I\${srcdir}/xforms ${GNOME_FRONTEND_CFLAGS} "
178 dnl     FRONTEND_LIBS="@XPM_LIB@ @XFORMS_LIB@ ${GNOME_FRONTEND_LIBS}"
179 dnl     ;;
180   qt)
181     QT_DO_IT_ALL
182     RPM_FRONTEND="qt"
183     RPM_FRONTEND_DEPS='qt >= 2.2.1'
184     FRONTEND="qt2"
185     FRONTEND_GUILIB="qt2/*.lo qt2/ui/*.lo qt2/moc/*.lo qt2/ui/moc/*.lo"
186     FRONTEND_LDFLAGS="\$(QT_LDFLAGS)"
187     FRONTEND_INCLUDES="-I\${srcdir}/qt2 \$(QT_INCLUDES)"
188     FRONTEND_LIBS="\$(QT_LIB)"
189     FRONTEND_INFO="    Qt version:                   ${QT_VERSION}\n"
190     ;;
191   *)
192     LYX_ERROR(Unknown frontend $lyx_use_frontend);;
193 esac
194
195 ### Check for xforms and xpm (only if X has been found).
196 if test "$have_x" = no ; then
197 LYX_ERROR(dnl
198 [Cannot find X window libraries and/or headers. Check your installation.
199    If you use a Linux system, check that you have installed
200    the development tools.])
201 fi
202
203 ### Setup GNU gettext
204 dnl GNU gettext is written in C
205 AC_LANG_PUSH(C)
206 # Some tests that may be useful for gettext
207 AC_C_CONST
208 AC_C_INLINE
209 # Do the real setup now
210 AM_GNU_GETTEXT
211 # a hack for those who try to change LyX, but do not have gettext installed
212 case  "${XGETTEXT}" in
213  *:) XGETTEXT='cp ${srcdir}/lyx.pot ./${PACKAGE}.po ; :'
214 esac
215
216 AC_SUBST(LINGUAS)
217
218 AC_LANG_POP(C)
219
220 # some standard header files
221 AC_HEADER_DIRENT
222 AC_HEADER_MAJOR
223 AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h strings.h locale.h)
224
225 # some standard structures
226 AC_HEADER_STAT
227 AC_HEADER_TIME
228
229 # some standard types
230 AC_TYPE_MODE_T
231 AC_TYPE_OFF_T
232 AC_TYPE_PID_T
233 AC_TYPE_SIGNAL
234 AC_TYPE_SIZE_T
235 AC_TYPE_UID_T
236
237 AC_CHECK_FUNCS(snprintf vsnprintf strerror)
238 LYX_CHECK_DECL(snprintf, stdio.h)
239 LYX_CHECK_DECL(vsnprintf, stdio.h)
240 LYX_CHECK_DECL(istreambuf_iterator, iterator)
241 LYX_CHECK_DECL(mkstemp,[unistd.h stdlib.h])
242
243 dnl This is a slight hack: the tests generated by autoconf 2.52 do not
244 dnl work correctly because of some conflict with stdlib.h with g++ 2.96
245 dnl We aim to remove this eventually, since we should test as much as
246 dnl possible with the compiler which will use the functions (JMarc)
247 AC_LANG_PUSH(C)
248 AC_CHECK_FUNCS(memmove memset strchr mkfifo mkstemp mktemp)
249 AC_LANG_POP(C)
250
251 AC_FUNC_SELECT_ARGTYPES
252
253 ### Some information on what just happened
254 real_bindir=`eval "echo \`eval \"echo ${bindir}\"\`"`
255 real_datadir=`eval "echo \`eval \"echo ${datadir}/${PACKAGE}\"\`"`
256 VERSION_INFO="Configuration\n\
257   Host type:                      ${host}\n\
258   Special build flags:           ${lyx_flags}\n\
259   C   Compiler:                   ${CC}\n\
260   C   Compiler flags:             ${CFLAGS}\n\
261   C++ Compiler:                   ${CXX} ${CXX_VERSION}\n\
262   C++ Compiler flags:             ${CXXFLAGS}\n\
263   Linker flags:                   ${LDFLAGS}\n\
264   Frontend:                       ${lyx_use_frontend}\n\
265 ${FRONTEND_INFO}\
266   LyX binary dir:                 ${real_bindir}\n\
267   LyX files dir:                  ${real_datadir}\n"
268
269
270 AC_SUBST(VERSION_INFO)
271 AC_SUBST(RPM_FRONTEND)
272 AC_SUBST(RPM_FRONTEND_DEPS)
273
274 ## Some config.h stuff
275
276 AH_TOP([
277 /* -*- C++ -*- */
278 /* This is the compilation configuration file for LyX. It was generated by
279    autoconfs configure. You might want to change some of the defaults if
280    something goes wrong during the compilation
281
282    * This file is part of
283    * ======================================================
284    *
285    *           LyX, the High Level Word Processor
286    *
287    *           Copyright 1995 Matthias Ettrich
288    *           Copyright 1995-2001 The LyX Team.
289    *
290    *======================================================*/
291
292 #ifndef _CONFIG_H
293 #define _CONFIG_H
294 ])
295
296 AH_BOTTOM([
297 /************************************************************
298  ** You should not need to change anything beyond this point */
299
300 #ifndef HAVE_STRCHR
301 # define strchr(a,b)    index(a,b)
302 #endif
303
304 #ifndef HAVE_MEMMOVE
305 # define memmove(a,b,c) bcopy(b,a,c)
306 #endif
307
308 #ifndef HAVE_STRERROR
309 #if defined(__cplusplus)
310 extern "C"
311 #endif
312 char * strerror(int n);
313 #endif
314
315 #ifdef BROKEN_HEADERS
316 #include "broken_headers.h"
317 #endif
318
319 #ifdef HAVE_MKSTEMP
320 #ifndef HAVE_DECL_MKSTEMP
321 #if defined(__cplusplus)
322 extern "C"
323 #endif
324 int mkstemp(char*);
325 #endif
326 #endif
327
328 #ifdef __EMX__
329 #include "support/os2_defines.h"
330 #endif
331
332 #if defined(__CYGWIN__) || defined(__CYGWIN32__)
333 #include "support/nt_defines.h"
334 #endif
335
336 #if defined(HAVE_OSTREAM) && defined(HAVE_LOCALE) && defined(HAVE_SSTREAM)
337 #define USE_BOOST_FORMAT 1
338 #else
339 #define USE_BOOST_FORMAT 0
340 #endif
341
342 #endif
343 ])
344
345 ### Finish the work.
346 AC_CONFIG_SUBDIRS(lib lib/reLyX)
347 AC_CONFIG_FILES([Makefile \
348        boost/Makefile \
349        boost/libs/Makefile \
350        boost/libs/regex/Makefile \
351        boost/libs/regex/src/Makefile \
352        boost/libs/signals/Makefile \
353        boost/libs/signals/src/Makefile \
354        config/Makefile \
355        development/Makefile \
356        development/lyx.spec \
357        lib/Makefile \
358        intl/Makefile \
359        po/Makefile.in \
360        sourcedoc/Doxyfile \
361        sourcedoc/Makefile \
362        src/Makefile \
363        src/version.C \
364        src/tex2lyx/Makefile \
365        src/mathed/Makefile \
366        src/graphics/Makefile \
367        src/insets/Makefile \
368        src/support/Makefile \
369        src/frontends/Makefile \
370        src/frontends/controllers/Makefile \
371        src/frontends/xforms/Makefile \
372        src/frontends/xforms/forms/Makefile \
373        src/frontends/qt2/Makefile \
374        src/frontends/qt2/moc/Makefile \
375        src/frontends/qt2/ui/Makefile \
376        src/frontends/qt2/ui/moc/Makefile \
377        src/frontends/gnome/Makefile \
378 ])
379
380 AC_OUTPUT
381 # show version information
382 echo
383 printf "$VERSION_INFO"
384 echo
385
386 # Display a final warning if there has been a LYX_ERROR
387 LYX_CHECK_ERRORS