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