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