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