]> git.lyx.org Git - lyx.git/blob - configure.ac
Back to development
[lyx.git] / configure.ac
1 dnl Process with autoconf to generate configure script   -*- sh -*-
2
3 AC_INIT(LyX,2.2.0dev,[lyx-devel@lists.lyx.org],[lyx])
4 AC_PRESERVE_HELP_ORDER
5 # Use ISO format only. The frontend needs to parse this
6 AC_SUBST(LYX_DATE, ["2016-02-12"])
7 AC_PREREQ(2.60)
8 AC_CONFIG_SRCDIR(src/main.cpp)
9 AC_CONFIG_HEADERS([config.h])
10
11 AC_CONFIG_AUX_DIR(config)
12
13 # First check the version
14 LYX_CHECK_VERSION
15 LYX_VERSION_SUFFIX
16 LYX_CHECK_QT5
17 # Check how the files should be packaged
18 AC_CANONICAL_TARGET
19 LYX_USE_PACKAGING
20 # We need to define these variables here and the no-define option of
21 # AM_INIT_AUTOMAKE above because we alter $PACKAGE in LYX_USE_PACKAGING.
22 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
23
24 dnl Default maintainer mode to true for development versions
25 if test "${enable_maintainer_mode+set}" != set; then
26   enable_maintainer_mode=$lyx_devel_version
27 fi
28 AM_MAINTAINER_MODE
29
30 save_PACKAGE=$PACKAGE
31 dnl The test for _AM_PROG_CC_C_O intends to test for automake 1.14 or newer,
32 dnl which are the versions where subdir-objects can beused.
33 dnl see: https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg181023.html
34 m4_define([LYX_OBJECTS_LAYOUT], m4_ifdef([_AM_PROG_CC_C_O],[subdir-objects],))
35 # Automake is pulling the historical V7 format. This tar format supports
36 # file names only up to 99 characters. tar-pax has no character limit.
37 AM_INIT_AUTOMAKE([foreign dist-bzip2 no-define 1.8 tar-pax] LYX_OBJECTS_LAYOUT)
38 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
39 PACKAGE=$save_PACKAGE
40
41 # Allow to build some parts of the code as one big chunk
42 m4_define([ALLPARTS],[boost,client,insets,mathed,core,tex2lyx,frontend_qt])
43 AC_ARG_ENABLE(monolithic-build,
44   AC_HELP_STRING([--enable-monolithic-build@<:@=LIST@:>@],
45                 [Use monolithic build for modules in LIST (default: ALLPARTS)]),
46   [test "$enable_monolithic_build" = yes && enable_monolithic_build="ALLPARTS"
47    test "$enable_monolithic_build" = no && enable_monolithic_build=
48    IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=" ,"
49    for i in $enable_monolithic_build ; do
50        eval "enable_monolithic_$i=yes"
51    done
52    IFS="$ac_save_ifs"],
53   [enable_monolithic_build=])
54
55 AM_CONDITIONAL(MONOLITHIC_BOOST, test "x$enable_monolithic_boost" = "xyes")
56 AM_CONDITIONAL(MONOLITHIC_CLIENT, test "x$enable_monolithic_client" = "xyes")
57 AM_CONDITIONAL(MONOLITHIC_INSETS, test "x$enable_monolithic_insets" = "xyes")
58 AM_CONDITIONAL(MONOLITHIC_MATHED, test "x$enable_monolithic_mathed" = "xyes")
59 AM_CONDITIONAL(MONOLITHIC_CORE, test "x$enable_monolithic_core" = "xyes")
60 AM_CONDITIONAL(MONOLITHIC_TEX2LYX, test "x$enable_monolithic_tex2lyx" = "xyes")
61 AM_CONDITIONAL(MONOLITHIC_FRONTEND_QT, test "x$enable_monolithic_frontend_qt" = "xyes")
62
63 ### Set the execute permissions of the various scripts correctly
64 for file in config/install-sh ; do
65   chmod 755 ${srcdir}/${file}
66 done
67
68 # Find a suitable python interpreter
69 LYX_PATH_PYTHON23([2.7.0], [3.3.0])
70 # do the usual python setup stuff
71 AM_PATH_PYTHON
72
73 # Tools for creating libraries (note that we do not use libtool)
74 m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl AM_PROG_AR requires automake 1.12
75 AC_PROG_RANLIB
76
77 ### Check for a C++ compiler
78 dnl We have to do weird tricks so that autoconf does not touch CXXFLAGS even
79 dnl if it is not set. We do not use autoconf defaults.
80 lyx_has_CXXFLAGS=${CXXFLAGS+yes}
81 if ! test "$lyx_has_CXXFLAGS" = yes; then
82   dnl set to a dummy value so that AC_PROG_CXX does not try to set CXXFLAGS
83   CXXFLAGS=" "
84 fi
85 LYX_PROG_CXX
86 if ! test "$lyx_has_CXXFLAGS" = yes; then
87   unset CXXFLAGS
88 fi
89 AC_LANG(C++)
90
91 ### Objective-C compiler
92 AC_PROG_OBJC
93 _AM_DEPENDENCIES([OBJC])
94
95 ### Add extra directories to check for libraries.
96 LYX_WITH_DIR([extra-lib],[extra library directory],extra_lib, NONE)
97 LYX_LOOP_DIR($lyx_cv_extra_lib,LYX_ADD_LIB_DIR(lyx_ldflags,$dir))
98 test ! x"$lyx_ldflags" = x && LDFLAGS="$lyx_ldflags $LDFLAGS"
99
100 ### Add extra directories to check for include files.
101 LYX_WITH_DIR([extra-inc],[extra include directory],extra_inc, NONE)
102 LYX_LOOP_DIR($lyx_cv_extra_inc,LYX_ADD_INC_DIR(lyx_cppflags,$dir))
103 test ! x"$lyx_cppflags" = x && CPPFLAGS="$lyx_cppflags $CPPFLAGS"
104
105 ### Add both includes and libraries
106 LYX_WITH_DIR([extra-prefix],[extra lib+include directory],extra_prefix, NONE, ${prefix})
107 LYX_LOOP_DIR($lyx_cv_extra_prefix,[
108   LYX_ADD_INC_DIR(CPPFLAGS,$dir/include)
109   LYX_ADD_LIB_DIR(LDFLAGS,$dir/lib)
110 ])
111
112 ### These are needed in windows
113 AC_CHECK_LIB(shlwapi, main, [LIBSHLWAPI=-lshlwapi])
114 AC_SUBST(LIBSHLWAPI)
115 AC_CHECK_LIB(psapi, main, [LIBPSAPI=-lpsapi])
116 AC_SUBST(LIBPSAPI)
117 AC_CHECK_LIB(gdi32, main)
118
119 LYX_USE_INCLUDED_BOOST
120 LYX_USE_INCLUDED_MYTHES
121
122 ### we need to know the byte order for unicode conversions
123 AC_C_BIGENDIAN
124
125 # Nice to have when an assertion triggers
126 LYX_CHECK_CALLSTACK_PRINTING
127
128 # Needed for our char_type
129 AC_CHECK_SIZEOF(wchar_t)
130
131 ### We need iconv for unicode support (Qt4 frontend requires it too)
132 AM_ICONV
133 if test "$am_cv_func_iconv" = no; then
134   AC_MSG_ERROR([cannot find required library iconv.])
135 else
136   LIBS="$LIBS $LIBICONV"
137 fi
138
139 ### check for compression support
140 AC_CHECK_HEADERS(zlib.h,
141  [AC_CHECK_LIB(z, gzopen, [LIBS="$LIBS -lz"], LYX_LIB_ERROR(libz,zlib))],
142  [LYX_LIB_ERROR(zlib.h,zlib)])
143
144 ### check for file magic support (currently optional)
145 AC_CHECK_HEADERS(magic.h,
146  [AC_CHECK_LIB(magic, magic_open, [LIBS="$LIBS -lmagic"],
147   LYX_WARNING([cannot find libmagic. Please check that the libmagic library
148    is correctly installed on your system.
149    Falling back to builtin file format detection.]))],
150  [LYX_WARNING([cannot find magic.h. Please check that the libmagic library
151    is correctly installed on your system.
152    Falling back to builtin file format detection.])])
153
154 ### setup the qt frontend.
155 dnl The code below is not in a macro, because this would cause big
156 dnl problems with the AC_REQUIRE contained in QT_DO_IT_ALL.
157 QT_DO_IT_ALL([4.5.0])
158 AC_SUBST([FRONTENDS_SUBDIRS], [qt4])
159 FRONTEND_INFO="${FRONTEND_INFO}\
160   Qt Frontend:\n\
161       Qt version:\t   ${QTLIB_VERSION}\n"
162
163 # fix the value of the prefixes.
164 test "x$prefix" = xNONE && prefix=$default_prefix
165 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
166 if echo $prefix |grep ' ' >/dev/null 2>/dev/null ; then
167   LYX_WARNING([the installation prefix \"${prefix}\" contains a space, which
168    causes problems with the Makefiles. The installation will be done in
169    directory \"`pwd`/installprefix\" instead. Please move its contents to
170    the right place after installation.])
171   prefix=`pwd`/installprefix
172 fi
173
174 ### Setup po directory
175 AM_NLS
176 if test $USE_NLS = "yes" ; then
177   AC_DEFINE(ENABLE_NLS, 1,
178     [Define to 1 if translation of program messages to the user's native language
179    is requested.])dnl'
180 fi
181 AM_PO_SUBDIRS
182
183 # some standard header files
184 AC_HEADER_MAJOR
185 AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h locale.h utime.h sys/utime.h)
186
187 # some standard types
188 AC_CHECK_TYPE(mode_t,[AC_DEFINE(HAVE_MODE_T, 1, [Define this to 1 if your compiler supports the mode_t type.])])
189 AC_TYPE_OFF_T
190 AC_TYPE_PID_T
191 AC_TYPE_SIZE_T
192 AC_TYPE_UID_T
193 # Taken from gettext
194 AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
195    [AC_TRY_COMPILE([#include <stddef.h>
196       wchar_t foo = (wchar_t)'\0';], ,
197       [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
198 if test $gt_cv_c_wchar_t = yes; then
199   AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
200 fi
201
202 LYX_CHECK_DEF(PATH_MAX, limits.h, [int n = PATH_MAX;])
203
204 AC_CHECK_FUNCS(chmod close _close fork getpid _getpid lockf lstat mkfifo open _open pclose _pclose popen _popen readlink putenv setenv strerror unsetenv)
205 # Check the form of mkdir()
206 AC_FUNC_MKDIR
207 AC_FUNC_SELECT_ARGTYPES
208
209 LYX_CHECK_SPELL_ENGINES
210
211 lyx_client_subdir=true
212 dnl AC_LANG_PUSH(C)
213 dnl LIBS already contains some X extra libs that may interfere.
214 save_LIBS="$LIBS"
215 LIBS=
216 AC_CHECK_FUNCS(fcntl,
217   [AC_SEARCH_LIBS([gethostbyname], [nsl])
218    AC_SEARCH_LIBS([socket], [socket network], [],
219      [AC_CHECK_LIB([socket], [socket], [LIBS="-lsocket -lnsl $LIBS"],
220                 [], [-lnsl])])],
221   [lyx_client_subdir=false])
222 AC_SUBST(SOCKET_LIBS,$LIBS)
223 LIBS="$save_LIBS"
224 AM_CONDITIONAL(BUILD_CLIENT_SUBDIR, $lyx_client_subdir)
225 dnl AC_LANG_POP(C)
226
227 lyx_win_res=false;
228 case ${host} in
229     *mingw*|*cygwin*) lyx_win_res=true;;
230 esac
231 AM_CONDITIONAL(LYX_WIN_RESOURCE, $lyx_win_res)
232 LYX_SET_VERSION_INFO
233
234
235 ### Some information on what just happened
236 real_bindir=`eval "echo \`eval \"echo ${bindir}\"\`"`
237 real_pkgdatadir=`eval "echo \`eval \"echo \\\`eval \\\"echo ${pkgdatadir}\\\"\\\`\"\`"`
238 real_localedir=`eval "echo \`eval \"echo ${datadir}/locale\"\`"`
239 VERSION_INFO="Configuration\n\
240   Host type:               ${host}\n\
241   Special build flags:     ${lyx_flags}\n\
242   C++ Compiler:            ${CXX} ${CXX_VERSION}\n\
243   C++ Compiler flags:      ${AM_CPPFLAGS} ${AM_CXXFLAGS}\n\
244   C++ Compiler user flags: ${CPPFLAGS} ${CXXFLAGS}\n\
245   Linker flags:            ${AM_LDFLAGS}\n\
246   Linker user flags:       ${LDFLAGS}\n\
247 ${FRONTEND_INFO}\
248   Packaging:               ${lyx_use_packaging}\n\
249   LyX binary dir:          ${real_bindir}\n\
250   LyX files dir:           ${real_pkgdatadir}\n"
251
252 AC_SUBST(VERSION_INFO)
253 AC_SUBST(AM_CPPFLAGS)
254 AC_SUBST(AM_CXXFLAGS)
255 AC_SUBST(AM_LDFLAGS)
256 AC_SUBST(real_pkgdatadir)
257
258 ## Some config.h stuff
259
260 AH_TOP([
261 /* -*- C++ -*- */
262 /*
263  * \file config.h
264  * This file is part of LyX, the document processor.
265  * Licence details can be found in the file COPYING.
266  *
267  * This is the compilation configuration file for LyX.
268  * It was generated by autoconfs configure.
269  * You might want to change some of the defaults if something goes wrong
270  * during the compilation.
271  */
272
273 #ifndef _CONFIG_H
274 #define _CONFIG_H
275 ])
276
277 AH_BOTTOM([
278 /************************************************************
279  ** You should not need to change anything beyond this point */
280
281 #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
282 #define LYX_USE_CXX11
283 #endif
284
285 #ifndef HAVE_STRERROR
286 #if defined(__cplusplus)
287 extern "C"
288 #endif
289 char * strerror(int n);
290 #endif
291
292 #if defined(HAVE_OSTREAM) && defined(HAVE_LOCALE) && defined(HAVE_SSTREAM)
293 #  define USE_BOOST_FORMAT 1
294 #else
295 #  define USE_BOOST_FORMAT 0
296 #endif
297
298 #define BOOST_USER_CONFIG <config.h>
299
300 #if !defined(ENABLE_ASSERTIONS)
301 #  define BOOST_DISABLE_ASSERTS 1
302 #endif
303 #define BOOST_ENABLE_ASSERT_HANDLER 1
304
305 #define BOOST_DISABLE_THREADS 1
306 #define BOOST_NO_WREGEX 1
307 #define BOOST_NO_WSTRING 1
308 #define BOOST_SIGNALS_NO_DEPRECATION_WARNING 1
309
310 #ifdef __CYGWIN__
311 #  define NOMINMAX
312 #  define BOOST_POSIX 1
313 #  define BOOST_POSIX_API 1
314 #  define BOOST_POSIX_PATH 1
315 #endif
316
317 #ifdef __sparc__
318 #  ifndef __BIG_ENDIAN__
319 #    define __BIG_ENDIAN__ 1
320 #  endif
321 #endif
322
323 #if defined(HAVE_WCHAR_T) && SIZEOF_WCHAR_T == 4
324 #  define USE_WCHAR_T
325 #endif
326
327 #endif
328 ])
329
330 MSYS_AC_CANONICAL_PATH(lyx_abs_top_srcdir, ${srcdir})
331 MSYS_AC_CANONICAL_PATH(lyx_abs_installed_localedir, ${real_localedir})
332 MSYS_AC_CANONICAL_PATH(lyx_abs_installed_datadir, ${real_pkgdatadir})
333
334 AC_DEFINE_UNQUOTED([LYX_ABS_TOP_SRCDIR],
335         "${lyx_abs_top_srcdir}", [Top source directory])
336 AC_DEFINE_UNQUOTED([LYX_ABS_INSTALLED_LOCALEDIR],
337         "${lyx_abs_installed_localedir}",[Hard coded locale directory])
338 AC_DEFINE_UNQUOTED([LYX_ABS_INSTALLED_DATADIR],
339         "${lyx_abs_installed_datadir}",[Hard system support directory])
340 AC_DEFINE_UNQUOTED([PROGRAM_SUFFIX],
341         "${version_suffix}",[Program version suffix])
342
343 AC_DEFINE_UNQUOTED([LYX_DATE],"$LYX_DATE",[Date of release])
344 AC_DEFINE_UNQUOTED([VERSION_INFO],"$VERSION_INFO",[Full version info])
345 AC_DEFINE_UNQUOTED([LYX_DIR_VER],"$lyx_dir_ver",[Versioned env var for system dir])
346 AC_DEFINE_UNQUOTED([LYX_USERDIR_VER],"$lyx_userdir_ver",[Versioned env var for user dir])
347 AC_DEFINE_UNQUOTED([LYX_MAJOR_VERSION],$lyx_major,[Major version number])
348 AC_DEFINE_UNQUOTED([LYX_MINOR_VERSION],$lyx_minor,[Minor version number])
349 AC_DEFINE_UNQUOTED([LYX_RELEASE_LEVEL],$lyx_release,[Release version number])
350 AC_DEFINE_UNQUOTED([LYX_RELEASE_PATCH],$lyx_patch,[Patch version number])
351
352 AC_CONFIG_FILES([Makefile \
353       lyx.1:lyx.1in \
354       3rdparty/Makefile \
355       3rdparty/boost/Makefile \
356       3rdparty/hunspell/Makefile \
357       3rdparty/libiconv/Makefile \
358       3rdparty/zlib/Makefile \
359       autotests/Makefile \
360       config/Makefile \
361       development/Makefile \
362       development/MacOSX/Makefile \
363       development/MacOSX/Info.plist \
364       development/MacOSX/lyxrc.dist \
365       development/MacOSX/spotlight/Makefile \
366       development/cygwin/Makefile \
367       development/cygwin/lyxrc.dist \
368       development/lyx.spec \
369       lib/lyx.desktop-temp:lib/lyx.desktop.in
370       lib/Makefile \
371       lib/doc/Makefile \
372       lib/lyx2lyx/lyx2lyx_version.py \
373       lib/lyx2lyx/Makefile \
374       m4/Makefile \
375       po/Makefile.in \
376       sourcedoc/Doxyfile \
377       sourcedoc/Makefile \
378       src/client/Makefile \
379       src/client/lyxclient.1:src/client/lyxclient.1in \
380       src/Makefile \
381       src/tex2lyx/Makefile \
382       src/tex2lyx/tex2lyx.1:src/tex2lyx/tex2lyx.1in \
383       src/support/Makefile \
384       src/frontends/Makefile \
385       src/frontends/qt4/Makefile
386 ])
387
388
389 AC_OUTPUT
390
391 # show version information
392 echo
393 printf "$VERSION_INFO"
394 echo
395
396 # Display a final warning if there has been a LYX_WARNING
397 LYX_CHECK_WARNINGS
398
399 cat <<EOF
400 Configuration of LyX was successful.
401 Type 'make' to compile the program,
402 and then 'make install' to install it.
403 EOF