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