1 dnl Process with autoconf to generate configure script -*- sh -*-
3 AC_INIT(LyX,2.2.0dev,[lyx-devel@lists.lyx.org],[lyx])
5 # Use ISO format only. The frontend needs to parse this
6 AC_SUBST(LYX_DATE, ["2015-11-27"])
8 AC_CONFIG_SRCDIR(src/main.cpp)
9 AC_CONFIG_HEADERS([config.h])
11 AC_CONFIG_AUX_DIR(config)
13 # First check the version
17 # Check how the files should be packaged
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])
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
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])])
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"
53 [enable_monolithic_build=])
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")
63 ### Set the execute permissions of the various scripts correctly
64 for file in config/install-sh ; do
65 chmod 755 ${srcdir}/${file}
68 # Find a suitable python interpreter
69 LYX_PATH_PYTHON23([2.7.0], [3.3.0])
70 # do the usual python setup stuff
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
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
86 if ! test "$lyx_has_CXXFLAGS" = yes; then
91 ### Objective-C compiler
93 _AM_DEPENDENCIES([OBJC])
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"
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"
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)
112 ### These are needed in windows
113 AC_CHECK_LIB(shlwapi, main, [LIBSHLWAPI=-lshlwapi])
115 AC_CHECK_LIB(psapi, main, [LIBPSAPI=-lpsapi])
117 AC_CHECK_LIB(gdi32, main)
119 LYX_USE_INCLUDED_BOOST
120 LYX_USE_INCLUDED_MYTHES
122 ### we need to know the byte order for unicode conversions
125 # Nice to have when an assertion triggers
126 LYX_CHECK_CALLSTACK_PRINTING
128 # Needed for our char_type
129 AC_CHECK_SIZEOF(wchar_t)
131 ### We need iconv for unicode support (Qt4 frontend requires it too)
133 if test "$am_cv_func_iconv" = no; then
134 AC_MSG_ERROR([cannot find required library iconv.])
136 LIBS="$LIBS $LIBICONV"
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)])
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.])])
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}\
161 Qt version:\t ${QTLIB_VERSION}\n"
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
174 ### Setup po directory
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
183 # some standard header files
185 AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h locale.h utime.h sys/utime.h)
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.])])
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.])
202 LYX_CHECK_DEF(PATH_MAX, limits.h, [int n = PATH_MAX;])
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()
207 AC_FUNC_SELECT_ARGTYPES
209 LYX_CHECK_SPELL_ENGINES
211 lyx_client_subdir=true
213 dnl LIBS already contains some X extra libs that may interfere.
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"],
221 [lyx_client_subdir=false])
222 AC_SUBST(SOCKET_LIBS,$LIBS)
224 AM_CONDITIONAL(BUILD_CLIENT_SUBDIR, $lyx_client_subdir)
229 *mingw*|*cygwin*) lyx_win_res=true;;
231 AM_CONDITIONAL(LYX_WIN_RESOURCE, $lyx_win_res)
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\
248 Packaging: ${lyx_use_packaging}\n\
249 LyX binary dir: ${real_bindir}\n\
250 LyX files dir: ${real_pkgdatadir}\n"
252 AC_SUBST(VERSION_INFO)
253 AC_SUBST(AM_CPPFLAGS)
254 AC_SUBST(AM_CXXFLAGS)
256 AC_SUBST(real_pkgdatadir)
258 ## Some config.h stuff
264 * This file is part of LyX, the document processor.
265 * Licence details can be found in the file COPYING.
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.
278 /************************************************************
279 ** You should not need to change anything beyond this point */
281 #if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)
282 #define LYX_USE_CXX11
285 #ifndef HAVE_STRERROR
286 #if defined(__cplusplus)
289 char * strerror(int n);
292 #if defined(HAVE_OSTREAM) && defined(HAVE_LOCALE) && defined(HAVE_SSTREAM)
293 # define USE_BOOST_FORMAT 1
295 # define USE_BOOST_FORMAT 0
298 #define BOOST_USER_CONFIG <config.h>
300 #if !defined(ENABLE_ASSERTIONS)
301 # define BOOST_DISABLE_ASSERTS 1
303 #define BOOST_ENABLE_ASSERT_HANDLER 1
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
312 # define BOOST_POSIX 1
313 # define BOOST_POSIX_API 1
314 # define BOOST_POSIX_PATH 1
318 # ifndef __BIG_ENDIAN__
319 # define __BIG_ENDIAN__ 1
323 #if defined(HAVE_WCHAR_T) && SIZEOF_WCHAR_T == 4
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})
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])
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])
352 AC_CONFIG_FILES([Makefile \
355 3rdparty/boost/Makefile \
356 3rdparty/hunspell/Makefile \
357 3rdparty/libiconv/Makefile \
358 3rdparty/zlib/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
372 lib/lyx2lyx/lyx2lyx_version.py \
373 lib/lyx2lyx/Makefile \
378 src/client/Makefile \
379 src/client/lyxclient.1:src/client/lyxclient.1in \
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
391 # show version information
393 printf "$VERSION_INFO"
396 # Display a final warning if there has been a LYX_WARNING
400 Configuration of LyX was successful.
401 Type 'make' to compile the program,
402 and then 'make install' to install it.